payaza-storefront-layouts 1.0.0
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 +108 -0
- package/dist/components/learning/CertificateTemplates.d.ts +25 -0
- package/dist/components/learning/CertificateTemplates.d.ts.map +1 -0
- package/dist/components/learning/CertificateTemplates.js +31 -0
- package/dist/components/learning/CertificateViewer.d.ts +11 -0
- package/dist/components/learning/CertificateViewer.d.ts.map +1 -0
- package/dist/components/learning/CertificateViewer.js +114 -0
- package/dist/components/learning/MentorshipProgress.d.ts +18 -0
- package/dist/components/learning/MentorshipProgress.d.ts.map +1 -0
- package/dist/components/learning/MentorshipProgress.js +19 -0
- package/dist/components/ui/address-selector.d.ts +11 -0
- package/dist/components/ui/address-selector.d.ts.map +1 -0
- package/dist/components/ui/address-selector.js +21 -0
- package/dist/components/ui/avatar-image.d.ts +11 -0
- package/dist/components/ui/avatar-image.d.ts.map +1 -0
- package/dist/components/ui/avatar-image.js +39 -0
- package/dist/components/ui/background-patterns.d.ts +27 -0
- package/dist/components/ui/background-patterns.d.ts.map +1 -0
- package/dist/components/ui/background-patterns.js +5 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +20 -0
- package/dist/components/ui/breadcrumbs.d.ts +11 -0
- package/dist/components/ui/breadcrumbs.d.ts.map +1 -0
- package/dist/components/ui/breadcrumbs.js +8 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +33 -0
- package/dist/components/ui/card.d.ts +10 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +24 -0
- package/dist/components/ui/category-tree.d.ts +16 -0
- package/dist/components/ui/category-tree.d.ts.map +1 -0
- package/dist/components/ui/category-tree.js +74 -0
- package/dist/components/ui/checkout-button.d.ts +11 -0
- package/dist/components/ui/checkout-button.d.ts.map +1 -0
- package/dist/components/ui/checkout-button.js +174 -0
- package/dist/components/ui/guest-checkout-modal.d.ts +19 -0
- package/dist/components/ui/guest-checkout-modal.d.ts.map +1 -0
- package/dist/components/ui/guest-checkout-modal.js +92 -0
- package/dist/components/ui/image-skeleton.d.ts +7 -0
- package/dist/components/ui/image-skeleton.d.ts.map +1 -0
- package/dist/components/ui/image-skeleton.js +15 -0
- package/dist/components/ui/image-with-fallback.d.ts +9 -0
- package/dist/components/ui/image-with-fallback.d.ts.map +1 -0
- package/dist/components/ui/image-with-fallback.js +203 -0
- package/dist/components/ui/input.d.ts +6 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +8 -0
- package/dist/components/ui/loading-skeleton-wrapper.d.ts +6 -0
- package/dist/components/ui/loading-skeleton-wrapper.d.ts.map +1 -0
- package/dist/components/ui/loading-skeleton-wrapper.js +10 -0
- package/dist/components/ui/modal.d.ts +11 -0
- package/dist/components/ui/modal.d.ts.map +1 -0
- package/dist/components/ui/modal.js +26 -0
- package/dist/components/ui/otp-input.d.ts +10 -0
- package/dist/components/ui/otp-input.d.ts.map +1 -0
- package/dist/components/ui/otp-input.js +57 -0
- package/dist/components/ui/out-of-stock-overlay.d.ts +8 -0
- package/dist/components/ui/out-of-stock-overlay.d.ts.map +1 -0
- package/dist/components/ui/out-of-stock-overlay.js +12 -0
- package/dist/components/ui/page-animate-wrapper.d.ts +7 -0
- package/dist/components/ui/page-animate-wrapper.d.ts.map +1 -0
- package/dist/components/ui/page-animate-wrapper.js +16 -0
- package/dist/components/ui/page-content-loader.d.ts +13 -0
- package/dist/components/ui/page-content-loader.d.ts.map +1 -0
- package/dist/components/ui/page-content-loader.js +12 -0
- package/dist/components/ui/page-loader.d.ts +20 -0
- package/dist/components/ui/page-loader.d.ts.map +1 -0
- package/dist/components/ui/page-loader.js +31 -0
- package/dist/components/ui/product-card.d.ts +11 -0
- package/dist/components/ui/product-card.d.ts.map +1 -0
- package/dist/components/ui/product-card.js +95 -0
- package/dist/components/ui/product-rating.d.ts +17 -0
- package/dist/components/ui/product-rating.d.ts.map +1 -0
- package/dist/components/ui/product-rating.js +54 -0
- package/dist/components/ui/review-form.d.ts +9 -0
- package/dist/components/ui/review-form.d.ts.map +1 -0
- package/dist/components/ui/review-form.js +28 -0
- package/dist/components/ui/route-skeleton-loader.d.ts +7 -0
- package/dist/components/ui/route-skeleton-loader.d.ts.map +1 -0
- package/dist/components/ui/route-skeleton-loader.js +75 -0
- package/dist/components/ui/sheet.d.ts +12 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet.js +29 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +6 -0
- package/dist/components/ui/skeletons/category-grid-skeleton.d.ts +6 -0
- package/dist/components/ui/skeletons/category-grid-skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeletons/category-grid-skeleton.js +16 -0
- package/dist/components/ui/skeletons/checkout-skeleton.d.ts +2 -0
- package/dist/components/ui/skeletons/checkout-skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeletons/checkout-skeleton.js +4 -0
- package/dist/components/ui/skeletons/index.d.ts +6 -0
- package/dist/components/ui/skeletons/index.d.ts.map +1 -0
- package/dist/components/ui/skeletons/index.js +5 -0
- package/dist/components/ui/skeletons/page-skeleton.d.ts +2 -0
- package/dist/components/ui/skeletons/page-skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeletons/page-skeleton.js +4 -0
- package/dist/components/ui/skeletons/product-card-skeleton.d.ts +2 -0
- package/dist/components/ui/skeletons/product-card-skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeletons/product-card-skeleton.js +4 -0
- package/dist/components/ui/skeletons/product-detail-skeleton.d.ts +2 -0
- package/dist/components/ui/skeletons/product-detail-skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeletons/product-detail-skeleton.js +4 -0
- package/dist/components/ui/skeletons/product-grid-skeleton.d.ts +7 -0
- package/dist/components/ui/skeletons/product-grid-skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeletons/product-grid-skeleton.js +12 -0
- package/dist/components/ui/store-logos.d.ts +43 -0
- package/dist/components/ui/store-logos.d.ts.map +1 -0
- package/dist/components/ui/store-logos.js +83 -0
- package/dist/components/ui/toast.d.ts +19 -0
- package/dist/components/ui/toast.d.ts.map +1 -0
- package/dist/components/ui/toast.js +33 -0
- package/dist/components/ui/video-player.d.ts +48 -0
- package/dist/components/ui/video-player.d.ts.map +1 -0
- package/dist/components/ui/video-player.js +96 -0
- package/dist/hooks/use-analytics.d.ts +14 -0
- package/dist/hooks/use-analytics.d.ts.map +1 -0
- package/dist/hooks/use-analytics.js +66 -0
- package/dist/hooks/use-api.d.ts +17 -0
- package/dist/hooks/use-api.d.ts.map +1 -0
- package/dist/hooks/use-api.js +53 -0
- package/dist/hooks/use-cart-api.d.ts +17 -0
- package/dist/hooks/use-cart-api.d.ts.map +1 -0
- package/dist/hooks/use-cart-api.js +134 -0
- package/dist/hooks/use-content-ready.d.ts +17 -0
- package/dist/hooks/use-content-ready.d.ts.map +1 -0
- package/dist/hooks/use-content-ready.js +197 -0
- package/dist/hooks/use-navigation-loading.d.ts +4 -0
- package/dist/hooks/use-navigation-loading.d.ts.map +1 -0
- package/dist/hooks/use-navigation-loading.js +14 -0
- package/dist/hooks/use-payaza-checkout.d.ts +14 -0
- package/dist/hooks/use-payaza-checkout.d.ts.map +1 -0
- package/dist/hooks/use-payaza-checkout.js +56 -0
- package/dist/hooks/use-products-api.d.ts +19 -0
- package/dist/hooks/use-products-api.d.ts.map +1 -0
- package/dist/hooks/use-products-api.js +84 -0
- package/dist/hooks/use-store-api.d.ts +12 -0
- package/dist/hooks/use-store-api.d.ts.map +1 -0
- package/dist/hooks/use-store-api.js +73 -0
- package/dist/index.d.ts +116 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +126 -0
- package/dist/json/booking-agenda.json +18 -0
- package/dist/json/booking.json +71 -0
- package/dist/json/clothing-minimal.json +26 -0
- package/dist/json/clothing.json +169 -0
- package/dist/json/electronics-grid.json +18 -0
- package/dist/json/electronics.json +50 -0
- package/dist/json/food-modern.json +38 -0
- package/dist/json/food.json +85 -0
- package/dist/json/json-map.d.ts +7 -0
- package/dist/json/json-map.d.ts.map +1 -0
- package/dist/json/json-map.js +36 -0
- package/dist/json/motivational-speaker.json +96 -0
- package/dist/layouts/booking/components/BookingHomePage.d.ts +7 -0
- package/dist/layouts/booking/components/BookingHomePage.d.ts.map +1 -0
- package/dist/layouts/booking/components/BookingHomePage.js +49 -0
- package/dist/layouts/booking/index.d.ts +9 -0
- package/dist/layouts/booking/index.d.ts.map +1 -0
- package/dist/layouts/booking/index.js +9 -0
- package/dist/layouts/booking/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/AboutPage.js +45 -0
- package/dist/layouts/booking/pages/BookPage.d.ts +8 -0
- package/dist/layouts/booking/pages/BookPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/BookPage.js +441 -0
- package/dist/layouts/booking/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/booking/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/CategoriesPage.js +162 -0
- package/dist/layouts/booking/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/booking/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/CategoryPage.js +67 -0
- package/dist/layouts/booking/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/ContactPage.js +20 -0
- package/dist/layouts/booking/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/booking/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/booking/pages/ServicesPage.d.ts +9 -0
- package/dist/layouts/booking/pages/ServicesPage.d.ts.map +1 -0
- package/dist/layouts/booking/pages/ServicesPage.js +31 -0
- package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts +7 -0
- package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +186 -0
- package/dist/layouts/booking-agenda/index.d.ts +9 -0
- package/dist/layouts/booking-agenda/index.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/index.js +9 -0
- package/dist/layouts/booking-agenda/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/AboutPage.js +45 -0
- package/dist/layouts/booking-agenda/pages/BookPage.d.ts +8 -0
- package/dist/layouts/booking-agenda/pages/BookPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/BookPage.js +441 -0
- package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/CategoriesPage.js +162 -0
- package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/CategoryPage.js +67 -0
- package/dist/layouts/booking-agenda/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/ContactPage.js +20 -0
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts +9 -0
- package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts.map +1 -0
- package/dist/layouts/booking-agenda/pages/ServicesPage.js +31 -0
- package/dist/layouts/clothing/components/ClothingHomePage.d.ts +7 -0
- package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -0
- package/dist/layouts/clothing/components/ClothingHomePage.js +295 -0
- package/dist/layouts/clothing/index.d.ts +8 -0
- package/dist/layouts/clothing/index.d.ts.map +1 -0
- package/dist/layouts/clothing/index.js +8 -0
- package/dist/layouts/clothing/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/clothing/pages/AboutPage.js +45 -0
- package/dist/layouts/clothing/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/clothing/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/clothing/pages/CategoriesPage.js +162 -0
- package/dist/layouts/clothing/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/clothing/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/clothing/pages/CategoryPage.js +67 -0
- package/dist/layouts/clothing/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/clothing/pages/ContactPage.js +20 -0
- package/dist/layouts/clothing/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/clothing/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/clothing/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/clothing/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/clothing/pages/ProductsPage.js +297 -0
- package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts +7 -0
- package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +48 -0
- package/dist/layouts/clothing-minimal/index.d.ts +8 -0
- package/dist/layouts/clothing-minimal/index.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/index.js +8 -0
- package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/pages/AboutPage.js +45 -0
- package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +162 -0
- package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/pages/CategoryPage.js +67 -0
- package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/pages/ContactPage.js +20 -0
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/clothing-minimal/pages/ProductsPage.js +297 -0
- package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts +7 -0
- package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +34 -0
- package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts +10 -0
- package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +107 -0
- package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts +7 -0
- package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsHomePage.js +78 -0
- package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts +8 -0
- package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +10 -0
- package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts +7 -0
- package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsProductsPage.js +100 -0
- package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts +7 -0
- package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +10 -0
- package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts +7 -0
- package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts.map +1 -0
- package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +27 -0
- package/dist/layouts/electronics/index.d.ts +19 -0
- package/dist/layouts/electronics/index.d.ts.map +1 -0
- package/dist/layouts/electronics/index.js +19 -0
- package/dist/layouts/electronics/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/AboutPage.js +45 -0
- package/dist/layouts/electronics/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/CategoriesPage.js +6 -0
- package/dist/layouts/electronics/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/electronics/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/CategoryPage.js +67 -0
- package/dist/layouts/electronics/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/ContactPage.js +20 -0
- package/dist/layouts/electronics/pages/HelpCenterPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/HelpCenterPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/HelpCenterPage.js +55 -0
- package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/PrivacyPolicyPage.js +8 -0
- package/dist/layouts/electronics/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/electronics/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/electronics/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/ProductsPage.js +297 -0
- package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/ShippingReturnsPage.js +7 -0
- package/dist/layouts/electronics/pages/TermsPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/TermsPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/TermsPage.js +8 -0
- package/dist/layouts/electronics/pages/TrackOrderPage.d.ts +7 -0
- package/dist/layouts/electronics/pages/TrackOrderPage.d.ts.map +1 -0
- package/dist/layouts/electronics/pages/TrackOrderPage.js +371 -0
- package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts +10 -0
- package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +107 -0
- package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts +7 -0
- package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +89 -0
- package/dist/layouts/electronics-grid/index.d.ts +15 -0
- package/dist/layouts/electronics-grid/index.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/index.js +15 -0
- package/dist/layouts/electronics-grid/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/AboutPage.js +45 -0
- package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/CategoriesPage.js +6 -0
- package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/CategoryPage.js +67 -0
- package/dist/layouts/electronics-grid/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/ContactPage.js +20 -0
- package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.js +15 -0
- package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/HelpCenterPage.js +55 -0
- package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.js +8 -0
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/ProductsPage.js +297 -0
- package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.js +7 -0
- package/dist/layouts/electronics-grid/pages/TermsPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/TermsPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/TermsPage.js +8 -0
- package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts +7 -0
- package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts.map +1 -0
- package/dist/layouts/electronics-grid/pages/TrackOrderPage.js +371 -0
- package/dist/layouts/food/components/FoodHomePage.d.ts +7 -0
- package/dist/layouts/food/components/FoodHomePage.d.ts.map +1 -0
- package/dist/layouts/food/components/FoodHomePage.js +304 -0
- package/dist/layouts/food/index.d.ts +9 -0
- package/dist/layouts/food/index.d.ts.map +1 -0
- package/dist/layouts/food/index.js +9 -0
- package/dist/layouts/food/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/AboutPage.js +45 -0
- package/dist/layouts/food/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/food/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/CategoriesPage.js +162 -0
- package/dist/layouts/food/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/food/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/CategoryPage.js +67 -0
- package/dist/layouts/food/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/ContactPage.js +20 -0
- package/dist/layouts/food/pages/MenuPage.d.ts +8 -0
- package/dist/layouts/food/pages/MenuPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/MenuPage.js +75 -0
- package/dist/layouts/food/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/food/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/food/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/food/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/food/pages/ProductsPage.js +297 -0
- package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts +7 -0
- package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts.map +1 -0
- package/dist/layouts/food-modern/components/FoodHomePageModern.js +118 -0
- package/dist/layouts/food-modern/index.d.ts +9 -0
- package/dist/layouts/food-modern/index.d.ts.map +1 -0
- package/dist/layouts/food-modern/index.js +9 -0
- package/dist/layouts/food-modern/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/AboutPage.js +45 -0
- package/dist/layouts/food-modern/pages/CategoriesPage.d.ts +7 -0
- package/dist/layouts/food-modern/pages/CategoriesPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/CategoriesPage.js +162 -0
- package/dist/layouts/food-modern/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/food-modern/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/CategoryPage.js +67 -0
- package/dist/layouts/food-modern/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/ContactPage.js +20 -0
- package/dist/layouts/food-modern/pages/MenuPage.d.ts +8 -0
- package/dist/layouts/food-modern/pages/MenuPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/MenuPage.js +75 -0
- package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts +8 -0
- package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/ProductDetailPage.js +502 -0
- package/dist/layouts/food-modern/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/food-modern/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/food-modern/pages/ProductsPage.js +297 -0
- package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts +7 -0
- package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/components/MotivationalHomePage.js +115 -0
- package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts +8 -0
- package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.js +10 -0
- package/dist/layouts/motivational-speaker/index.d.ts +10 -0
- package/dist/layouts/motivational-speaker/index.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/index.js +10 -0
- package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts +7 -0
- package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/AboutPage.js +45 -0
- package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts +8 -0
- package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/CategoryPage.js +67 -0
- package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts +7 -0
- package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/ContactPage.js +20 -0
- package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts +7 -0
- package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/ProductsPage.js +297 -0
- package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts +8 -0
- package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.js +144 -0
- package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts +9 -0
- package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/ServicesPage.js +31 -0
- package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts +7 -0
- package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts.map +1 -0
- package/dist/layouts/motivational-speaker/pages/SubscriptionPage.js +136 -0
- package/dist/layouts/shared/components/BaseStoreLayout.d.ts +8 -0
- package/dist/layouts/shared/components/BaseStoreLayout.d.ts.map +1 -0
- package/dist/layouts/shared/components/BaseStoreLayout.js +59 -0
- package/dist/layouts/shared/components/GenericPageWrapper.d.ts +8 -0
- package/dist/layouts/shared/components/GenericPageWrapper.d.ts.map +1 -0
- package/dist/layouts/shared/components/GenericPageWrapper.js +19 -0
- package/dist/layouts/shared/components/PromoBanner.d.ts +9 -0
- package/dist/layouts/shared/components/PromoBanner.d.ts.map +1 -0
- package/dist/layouts/shared/components/PromoBanner.js +14 -0
- package/dist/layouts/shared/components/StoreFooter.d.ts +7 -0
- package/dist/layouts/shared/components/StoreFooter.d.ts.map +1 -0
- package/dist/layouts/shared/components/StoreFooter.js +147 -0
- package/dist/layouts/shared/components/StoreHeader.d.ts +8 -0
- package/dist/layouts/shared/components/StoreHeader.d.ts.map +1 -0
- package/dist/layouts/shared/components/StoreHeader.js +87 -0
- package/dist/layouts/shared/components/TestimonialCard.d.ts +8 -0
- package/dist/layouts/shared/components/TestimonialCard.d.ts.map +1 -0
- package/dist/layouts/shared/components/TestimonialCard.js +10 -0
- package/dist/layouts/shared/index.d.ts +23 -0
- package/dist/layouts/shared/index.d.ts.map +1 -0
- package/dist/layouts/shared/index.js +23 -0
- package/dist/layouts/shared/pages/AccountPage.d.ts +7 -0
- package/dist/layouts/shared/pages/AccountPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/AccountPage.js +605 -0
- package/dist/layouts/shared/pages/CartPage.d.ts +7 -0
- package/dist/layouts/shared/pages/CartPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/CartPage.js +83 -0
- package/dist/layouts/shared/pages/CheckoutPage.d.ts +7 -0
- package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/CheckoutPage.js +860 -0
- package/dist/layouts/shared/pages/CookiePolicyPage.d.ts +7 -0
- package/dist/layouts/shared/pages/CookiePolicyPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/CookiePolicyPage.js +8 -0
- package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts +9 -0
- package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/FeatureDisabledPage.js +8 -0
- package/dist/layouts/shared/pages/HelpCenterPage.d.ts +7 -0
- package/dist/layouts/shared/pages/HelpCenterPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/HelpCenterPage.js +55 -0
- package/dist/layouts/shared/pages/MaintenancePage.d.ts +7 -0
- package/dist/layouts/shared/pages/MaintenancePage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/MaintenancePage.js +44 -0
- package/dist/layouts/shared/pages/PortfolioPage.d.ts +7 -0
- package/dist/layouts/shared/pages/PortfolioPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/PortfolioPage.js +130 -0
- package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts +7 -0
- package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/PrivacyPolicyPage.js +8 -0
- package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts +7 -0
- package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/ShippingReturnsPage.js +7 -0
- package/dist/layouts/shared/pages/SizeGuidePage.d.ts +7 -0
- package/dist/layouts/shared/pages/SizeGuidePage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/SizeGuidePage.js +10 -0
- package/dist/layouts/shared/pages/StyleGuidePage.d.ts +7 -0
- package/dist/layouts/shared/pages/StyleGuidePage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/StyleGuidePage.js +126 -0
- package/dist/layouts/shared/pages/TeamPage.d.ts +7 -0
- package/dist/layouts/shared/pages/TeamPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/TeamPage.js +39 -0
- package/dist/layouts/shared/pages/TermsPage.d.ts +7 -0
- package/dist/layouts/shared/pages/TermsPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/TermsPage.js +8 -0
- package/dist/layouts/shared/pages/TrackOrderPage.d.ts +7 -0
- package/dist/layouts/shared/pages/TrackOrderPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/TrackOrderPage.js +371 -0
- package/dist/layouts/shared/pages/WishlistPage.d.ts +7 -0
- package/dist/layouts/shared/pages/WishlistPage.d.ts.map +1 -0
- package/dist/layouts/shared/pages/WishlistPage.js +162 -0
- package/dist/lib/api.d.ts +8 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +109 -0
- package/dist/lib/auth-context.d.ts +30 -0
- package/dist/lib/auth-context.d.ts.map +1 -0
- package/dist/lib/auth-context.js +207 -0
- package/dist/lib/content-selectors.d.ts +21 -0
- package/dist/lib/content-selectors.d.ts.map +1 -0
- package/dist/lib/content-selectors.js +75 -0
- package/dist/lib/countries.d.ts +11 -0
- package/dist/lib/countries.d.ts.map +1 -0
- package/dist/lib/countries.js +252 -0
- package/dist/lib/currency-symbols.d.ts +36 -0
- package/dist/lib/currency-symbols.d.ts.map +1 -0
- package/dist/lib/currency-symbols.js +153 -0
- package/dist/lib/guest-user.d.ts +27 -0
- package/dist/lib/guest-user.d.ts.map +1 -0
- package/dist/lib/guest-user.js +71 -0
- package/dist/lib/loading-context.d.ts +19 -0
- package/dist/lib/loading-context.d.ts.map +1 -0
- package/dist/lib/loading-context.js +197 -0
- package/dist/lib/mock-stores.d.ts +22 -0
- package/dist/lib/mock-stores.d.ts.map +1 -0
- package/dist/lib/mock-stores.js +2099 -0
- package/dist/lib/payaza-checkout.d.ts +167 -0
- package/dist/lib/payaza-checkout.d.ts.map +1 -0
- package/dist/lib/payaza-checkout.js +455 -0
- package/dist/lib/services/analytics.service.d.ts +58 -0
- package/dist/lib/services/analytics.service.d.ts.map +1 -0
- package/dist/lib/services/analytics.service.js +182 -0
- package/dist/lib/services/auth.service.d.ts +63 -0
- package/dist/lib/services/auth.service.d.ts.map +1 -0
- package/dist/lib/services/auth.service.js +101 -0
- package/dist/lib/services/booking.service.d.ts +53 -0
- package/dist/lib/services/booking.service.d.ts.map +1 -0
- package/dist/lib/services/booking.service.js +52 -0
- package/dist/lib/services/cart.service.d.ts +37 -0
- package/dist/lib/services/cart.service.d.ts.map +1 -0
- package/dist/lib/services/cart.service.js +55 -0
- package/dist/lib/services/category.service.d.ts +21 -0
- package/dist/lib/services/category.service.d.ts.map +1 -0
- package/dist/lib/services/category.service.js +41 -0
- package/dist/lib/services/checkout.service.d.ts +79 -0
- package/dist/lib/services/checkout.service.d.ts.map +1 -0
- package/dist/lib/services/checkout.service.js +37 -0
- package/dist/lib/services/customer.service.d.ts +52 -0
- package/dist/lib/services/customer.service.d.ts.map +1 -0
- package/dist/lib/services/customer.service.js +64 -0
- package/dist/lib/services/fees.service.d.ts +23 -0
- package/dist/lib/services/fees.service.d.ts.map +1 -0
- package/dist/lib/services/fees.service.js +13 -0
- package/dist/lib/services/index.d.ts +19 -0
- package/dist/lib/services/index.d.ts.map +1 -0
- package/dist/lib/services/index.js +18 -0
- package/dist/lib/services/order.service.d.ts +107 -0
- package/dist/lib/services/order.service.d.ts.map +1 -0
- package/dist/lib/services/order.service.js +82 -0
- package/dist/lib/services/payment.service.d.ts +51 -0
- package/dist/lib/services/payment.service.d.ts.map +1 -0
- package/dist/lib/services/payment.service.js +105 -0
- package/dist/lib/services/product.service.d.ts +90 -0
- package/dist/lib/services/product.service.d.ts.map +1 -0
- package/dist/lib/services/product.service.js +86 -0
- package/dist/lib/services/promo.service.d.ts +31 -0
- package/dist/lib/services/promo.service.d.ts.map +1 -0
- package/dist/lib/services/promo.service.js +29 -0
- package/dist/lib/services/review.service.d.ts +47 -0
- package/dist/lib/services/review.service.d.ts.map +1 -0
- package/dist/lib/services/review.service.js +54 -0
- package/dist/lib/services/service.service.d.ts +55 -0
- package/dist/lib/services/service.service.d.ts.map +1 -0
- package/dist/lib/services/service.service.js +37 -0
- package/dist/lib/services/shipping.service.d.ts +44 -0
- package/dist/lib/services/shipping.service.d.ts.map +1 -0
- package/dist/lib/services/shipping.service.js +23 -0
- package/dist/lib/services/store.service.d.ts +87 -0
- package/dist/lib/services/store.service.d.ts.map +1 -0
- package/dist/lib/services/store.service.js +41 -0
- package/dist/lib/services/wishlist.service.d.ts +30 -0
- package/dist/lib/services/wishlist.service.d.ts.map +1 -0
- package/dist/lib/services/wishlist.service.js +53 -0
- package/dist/lib/store-config-utils.d.ts +41 -0
- package/dist/lib/store-config-utils.d.ts.map +1 -0
- package/dist/lib/store-config-utils.js +1535 -0
- package/dist/lib/store-config.d.ts +3 -0
- package/dist/lib/store-config.d.ts.map +1 -0
- package/dist/lib/store-config.js +2 -0
- package/dist/lib/store-context.d.ts +39 -0
- package/dist/lib/store-context.d.ts.map +1 -0
- package/dist/lib/store-context.js +803 -0
- package/dist/lib/store-types.d.ts +663 -0
- package/dist/lib/store-types.d.ts.map +1 -0
- package/dist/lib/store-types.js +1 -0
- package/dist/lib/utils/asset-helpers.d.ts +102 -0
- package/dist/lib/utils/asset-helpers.d.ts.map +1 -0
- package/dist/lib/utils/asset-helpers.js +395 -0
- package/dist/lib/utils/category-tree.d.ts +25 -0
- package/dist/lib/utils/category-tree.d.ts.map +1 -0
- package/dist/lib/utils/category-tree.js +85 -0
- package/dist/lib/utils/demo-detection.d.ts +23 -0
- package/dist/lib/utils/demo-detection.d.ts.map +1 -0
- package/dist/lib/utils/demo-detection.js +36 -0
- package/dist/lib/utils/fee-calculations.d.ts +35 -0
- package/dist/lib/utils/fee-calculations.d.ts.map +1 -0
- package/dist/lib/utils/fee-calculations.js +64 -0
- package/dist/lib/utils/index.d.ts +37 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +160 -0
- package/dist/lib/utils/url-helpers.d.ts +30 -0
- package/dist/lib/utils/url-helpers.d.ts.map +1 -0
- package/dist/lib/utils/url-helpers.js +56 -0
- package/dist/lib/utils/video-helpers.d.ts +32 -0
- package/dist/lib/utils/video-helpers.d.ts.map +1 -0
- package/dist/lib/utils/video-helpers.js +210 -0
- package/package.json +92 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from '../../../components/ui/button';
|
|
4
|
+
import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
|
|
5
|
+
import { ArrowRight, ShoppingCart, Zap, Shield, Smartphone, Laptop, Headphones, Watch, Camera, Cpu, Battery, Wifi } from 'lucide-react';
|
|
6
|
+
import Link from 'next/link';
|
|
7
|
+
import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
|
|
8
|
+
import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
|
|
9
|
+
import { motion, useScroll, useTransform } from 'framer-motion';
|
|
10
|
+
import { useRef, useState } from 'react';
|
|
11
|
+
import { useStore } from '../../../lib/store-context';
|
|
12
|
+
import { useToast } from '../../../components/ui/toast';
|
|
13
|
+
import { formatCurrency, filterActiveProducts } from '../../../lib/utils';
|
|
14
|
+
import { getLayoutText } from '../../../lib/utils/asset-helpers';
|
|
15
|
+
import { PromoBanner } from '../../../layouts/shared/components/PromoBanner';
|
|
16
|
+
export function ElectronicsHomePage({ storeConfig }) {
|
|
17
|
+
const { addToCart } = useStore();
|
|
18
|
+
const { addToast } = useToast();
|
|
19
|
+
const scrollContainerRef = useRef(null);
|
|
20
|
+
const [email, setEmail] = useState('');
|
|
21
|
+
// Layout Visibility
|
|
22
|
+
const layout = storeConfig.layoutConfig;
|
|
23
|
+
const scrollLeft = () => {
|
|
24
|
+
if (scrollContainerRef.current) {
|
|
25
|
+
scrollContainerRef.current.scrollBy({ left: -300, behavior: 'smooth' });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const scrollRight = () => {
|
|
29
|
+
if (scrollContainerRef.current) {
|
|
30
|
+
scrollContainerRef.current.scrollBy({ left: 300, behavior: 'smooth' });
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const handleAddToCart = (e, product) => {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
e.stopPropagation();
|
|
36
|
+
addToCart(product);
|
|
37
|
+
addToast(`${product.name} added to cart`, 'success');
|
|
38
|
+
};
|
|
39
|
+
const handleSubscribe = () => {
|
|
40
|
+
if (email) {
|
|
41
|
+
addToast('Thank you for subscribing!', 'success');
|
|
42
|
+
setEmail('');
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// Use categories directly from backend - no duplication
|
|
46
|
+
const categories = storeConfig.categories || [];
|
|
47
|
+
// Use products directly from backend - no duplication, filter out inactive/deleted
|
|
48
|
+
const products = filterActiveProducts(storeConfig.products || []);
|
|
49
|
+
const targetRef = useRef(null);
|
|
50
|
+
const { scrollYProgress } = useScroll({
|
|
51
|
+
target: targetRef,
|
|
52
|
+
offset: ["start start", "end start"]
|
|
53
|
+
});
|
|
54
|
+
const opacity = useTransform(scrollYProgress, [0, 0.5], [1, 0]);
|
|
55
|
+
const scale = useTransform(scrollYProgress, [0, 0.5], [1, 0.9]);
|
|
56
|
+
// Helper for category icons
|
|
57
|
+
const getCategoryIcon = (slug) => {
|
|
58
|
+
if (slug.includes('phone'))
|
|
59
|
+
return _jsx(Smartphone, { className: "h-6 w-6" });
|
|
60
|
+
if (slug.includes('laptop') || slug.includes('computer'))
|
|
61
|
+
return _jsx(Laptop, { className: "h-6 w-6" });
|
|
62
|
+
if (slug.includes('audio') || slug.includes('headphone'))
|
|
63
|
+
return _jsx(Headphones, { className: "h-6 w-6" });
|
|
64
|
+
if (slug.includes('watch') || slug.includes('wearable'))
|
|
65
|
+
return _jsx(Watch, { className: "h-6 w-6" });
|
|
66
|
+
if (slug.includes('camera'))
|
|
67
|
+
return _jsx(Camera, { className: "h-6 w-6" });
|
|
68
|
+
return _jsx(Zap, { className: "h-6 w-6" });
|
|
69
|
+
};
|
|
70
|
+
return (_jsxs("div", { className: "min-h-screen bg-slate-50 text-slate-900 font-sans selection:bg-blue-600 selection:text-white", children: [_jsx(ElectronicsStoreHeader, { storeConfig: storeConfig }), layout?.hero?.show !== false && (_jsxs("section", { ref: targetRef, className: "relative min-h-screen flex items-center pt-20 overflow-hidden bg-slate-950", children: [_jsxs("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: [_jsx("div", { className: "absolute top-[-10%] right-[-5%] w-[600px] h-[600px] bg-blue-600/20 rounded-full blur-[120px]" }), _jsx("div", { className: "absolute bottom-[-10%] left-[-5%] w-[500px] h-[500px] bg-indigo-600/20 rounded-full blur-[100px]" }), _jsx("div", { className: "absolute top-[20%] left-[20%] w-[300px] h-[300px] bg-cyan-500/10 rounded-full blur-[80px]" })] }), _jsx("div", { className: "container mx-auto px-6 relative z-10 py-20", children: _jsxs("div", { className: "grid lg:grid-cols-2 gap-16 items-center", children: [_jsxs(motion.div, { style: { opacity, scale }, className: "space-y-8 relative z-20", children: [layout?.hero?.showBadges !== false && (_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-slate-900/50 border border-slate-800 text-blue-400 text-xs font-bold uppercase tracking-wider backdrop-blur-md", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-blue-500 animate-pulse" }), getLayoutText(storeConfig, 'electronics.newArrivals', 'Next Gen • 2025 Series')] })), _jsxs("h1", { className: "text-4xl sm:text-6xl md:text-7xl lg:text-8xl font-black tracking-tighter leading-[0.9] text-white", children: [getLayoutText(storeConfig, 'hero.title', 'Future Realized'), " ", _jsx("br", {}), _jsx("span", { className: "text-transparent bg-clip-text bg-gradient-to-r from-blue-400 via-indigo-400 to-cyan-400", children: "Realized." })] }), _jsx("div", { className: "lg:hidden w-full max-w-[300px] mx-auto py-8", children: _jsx("div", { className: "relative aspect-square bg-gradient-to-br from-slate-800/50 to-slate-900/50 rounded-3xl p-6 border border-slate-700/30", children: _jsx(ImageWithFallback, { src: products[0]?.images?.[0], alt: "Hero Product", className: "w-full h-full object-contain drop-shadow-2xl", skeletonAspectRatio: "square" }) }) }), _jsxs("p", { className: "text-lg text-slate-400 max-w-xl leading-relaxed font-medium", children: [storeConfig.description, " Experience the pinnacle of engineering with our curated collection of premium electronics."] }), _jsxs("div", { className: "flex flex-wrap items-center gap-4 pt-4", children: [layout?.hero?.showCTA !== false && (_jsx(Link, { href: `/${storeConfig.slug}/products`, children: _jsxs(Button, { className: "h-14 px-10 rounded-full bg-blue-600 hover:bg-blue-500 text-white font-bold text-lg transition-all hover:scale-105 shadow-[0_0_40px_-10px_rgba(59,130,246,0.5)] border-0 ring-0", children: [getLayoutText(storeConfig, 'common.shopNow', 'Shop Now'), " ", _jsx(ArrowRight, { className: "ml-2 h-5 w-5" })] }) })), layout?.sections?.featuredProducts?.show !== false && (_jsxs("div", { className: "flex items-center gap-4 text-slate-400 text-sm font-medium ml-4", children: [_jsx("div", { className: "flex -space-x-3", children: [1, 2, 3].map(i => (_jsx("div", { className: "w-10 h-10 rounded-full border-2 border-slate-950 bg-slate-800 flex items-center justify-center text-xs text-white", children: _jsx("span", { className: "sr-only", children: "User" }) }, i))) }), _jsxs("div", { children: [_jsx("p", { className: "text-white font-bold", children: getLayoutText(storeConfig, 'common.account', '10k+ Happy') }), _jsx("p", { children: getLayoutText(storeConfig, 'common.account', 'Customers') })] })] }))] })] }), _jsx("div", { className: "relative h-[600px] hidden lg:block perspective-1000", children: _jsxs(motion.div, { initial: { opacity: 0, x: 100, rotateY: -20 }, animate: { opacity: 1, x: 0, rotateY: 0 }, transition: { duration: 1, ease: "easeOut" }, className: "relative z-10 w-full h-full", children: [_jsxs("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[400px] h-[500px] bg-gradient-to-br from-slate-800/80 to-slate-900/80 backdrop-blur-xl rounded-[3rem] border border-slate-700/50 p-8 shadow-2xl shadow-blue-900/20 transform rotate-[-6deg] hover:rotate-0 transition-transform duration-700", children: [_jsx("div", { className: "absolute top-8 right-8", children: _jsx(Zap, { className: "text-blue-500 w-8 h-8" }) }), _jsx(ImageWithFallback, { src: products[0]?.images?.[0], alt: "Hero Product", className: "w-full h-3/4 object-contain drop-shadow-[0_20px_50px_rgba(0,0,0,0.5)]", skeletonAspectRatio: "square" }), _jsx("div", { className: "absolute bottom-8 left-8 right-8", children: _jsxs("div", { className: "flex justify-between items-end", children: [_jsxs("div", { children: [_jsx("p", { className: "text-blue-400 font-bold text-sm mb-1", children: "New Arrival" }), _jsx("h3", { className: "text-white text-2xl font-bold", children: products[0]?.name })] }), _jsx("div", { className: "text-right", children: _jsx("p", { className: "text-white text-2xl font-bold", children: formatCurrency(products[0]?.price || 0, products[0]?.currency || storeConfig?.settings?.currency || 'USD') }) })] }) })] }), _jsx(motion.div, { animate: { y: [0, -20, 0] }, transition: { repeat: Infinity, duration: 6, ease: "easeInOut" }, className: "absolute top-20 right-10 bg-white/10 backdrop-blur-md p-4 rounded-2xl border border-white/10", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "bg-green-500/20 p-2 rounded-lg", children: _jsx(Battery, { className: "text-green-400 w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-xs text-slate-400", children: "Battery Life" }), _jsx("p", { className: "text-sm font-bold text-white", children: "24 Hours" })] })] }) }), _jsx(motion.div, { animate: { y: [0, 20, 0] }, transition: { repeat: Infinity, duration: 5, ease: "easeInOut", delay: 1 }, className: "absolute bottom-40 left-0 bg-white/10 backdrop-blur-md p-4 rounded-2xl border border-white/10", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "bg-blue-500/20 p-2 rounded-lg", children: _jsx(Wifi, { className: "text-blue-400 w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-xs text-slate-400", children: "Connectivity" }), _jsx("p", { className: "text-sm font-bold text-white", children: "5G Ultra" })] })] }) })] }) })] }) })] })), layout?.sections?.brands?.show !== false && (_jsx("div", { className: "bg-slate-950 border-y border-slate-900 overflow-hidden py-10", children: _jsx("div", { className: "flex gap-16 items-center animate-scroll whitespace-nowrap opacity-50 hover:opacity-100 transition-opacity duration-300", children: [...Array(2)].map((_, i) => (_jsx("div", { className: "flex gap-16 items-center", children: ['SONY', 'SAMSUNG', 'APPLE', 'DELL', 'LG', 'ASUS', 'HP', 'BOSE', 'CANON', 'NIKON'].map((brand) => (_jsx("span", { className: "text-3xl font-black text-slate-800 tracking-tight hover:text-slate-600 transition-colors cursor-default select-none", children: brand }, brand))) }, i))) }) })), layout?.sections?.categories?.show !== false && (_jsx("section", { className: "py-16 md:py-32 bg-slate-50", children: _jsxs("div", { className: "container mx-auto px-6", children: [_jsxs("div", { className: "flex justify-between items-end mb-10 md:mb-16", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-4xl font-bold mb-4 text-slate-900 tracking-tight", children: "Ecosystems" }), _jsx("p", { className: "text-lg text-slate-500", children: "Curated collections for every aspect of your digital life." })] }), layout?.sections?.categories?.showViewAll !== false && (_jsxs(Link, { href: `/${storeConfig.slug}/categories`, className: "flex items-center gap-2 text-blue-600 font-bold hover:gap-3 transition-all", children: ["View All ", _jsx(ArrowRight, { className: "h-5 w-5" })] }))] }), categories.length === 0 ? (_jsxs("div", { className: "text-center py-20 bg-white rounded-2xl border border-slate-200", children: [_jsx("h3", { className: "text-xl font-semibold text-slate-900 mb-2", children: "No categories available" }), _jsx("p", { className: "text-slate-500", children: "Categories will appear here once they are added to the store." })] })) : (_jsx("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-6 auto-rows-[300px]", children: categories.slice(0, layout?.sections?.categories?.limit || 5).map((category, idx) => {
|
|
71
|
+
const isLarge = idx === 0 || idx === 3;
|
|
72
|
+
return (_jsxs(Link, { href: `/${storeConfig.slug}/categories/${category.slug}`, className: `group relative overflow-hidden rounded-[2.5rem] bg-white shadow-sm border border-slate-100 hover:shadow-2xl hover:shadow-blue-500/10 transition-all duration-500 ${isLarge ? 'md:col-span-2' : 'md:col-span-1'}`, children: [_jsx(ImageWithFallback, { src: category.image, alt: category.name, className: "absolute inset-0 w-full h-full object-cover transition-transform duration-700 group-hover:scale-105", skeletonAspectRatio: "auto" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-slate-950/80 via-slate-950/20 to-transparent opacity-80 group-hover:opacity-90 transition-opacity" }), _jsxs("div", { className: "absolute bottom-0 left-0 p-8 w-full", children: [_jsx("div", { className: "mb-3 text-white/80 group-hover:text-blue-400 transition-colors", children: getCategoryIcon(category.slug) }), _jsx("h3", { className: `font-bold text-white mb-2 ${isLarge ? 'text-3xl' : 'text-xl'}`, children: category.name }), _jsx("div", { className: "w-10 h-1 bg-blue-500 rounded-full transform scale-x-0 group-hover:scale-x-100 transition-transform origin-left duration-300" })] })] }, idx));
|
|
73
|
+
}) }))] }) })), layout?.sections?.featuredProducts?.show !== false && (_jsx("section", { className: "py-16 md:py-32 bg-white relative overflow-hidden", children: _jsxs("div", { className: "container mx-auto px-6 relative z-10", children: [_jsxs("div", { className: "flex flex-col md:flex-row justify-between items-end mb-8 md:mb-12 gap-6", children: [_jsxs("div", { className: "max-w-2xl", children: [_jsx("span", { className: "text-blue-600 font-bold tracking-widest text-xs uppercase mb-3 block", children: "Latest Drops" }), _jsx("h2", { className: "text-4xl md:text-5xl font-bold text-slate-900 tracking-tight", children: layout?.sections?.featuredProducts?.title || "Performance Redefined" })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "outline", size: "icon", onClick: scrollLeft, className: "rounded-full border-slate-200 hover:bg-slate-100 hover:text-slate-900", children: _jsx(ArrowRight, { className: "h-5 w-5 rotate-180" }) }), _jsx(Button, { variant: "outline", size: "icon", onClick: scrollRight, className: "rounded-full border-slate-200 hover:bg-slate-100 hover:text-slate-900", children: _jsx(ArrowRight, { className: "h-5 w-5" }) })] })] }), _jsx("div", { ref: scrollContainerRef, className: "flex overflow-x-auto snap-x snap-mandatory gap-8 pb-12 -mx-6 px-6 scrollbar-hide", children: products.map((product) => (_jsxs("div", { className: "min-w-[280px] md:min-w-[320px] snap-center group", children: [_jsxs("div", { className: "relative aspect-[4/5] bg-slate-50 rounded-[2.5rem] overflow-hidden mb-6 border border-slate-100", children: [_jsx("div", { className: "absolute top-4 left-4 z-20", children: product.compareAtPrice && (_jsx("span", { className: "bg-slate-900 text-white text-[10px] font-bold px-3 py-1.5 rounded-full", children: "SALE" })) }), layout?.sections?.featuredProducts?.showAddToCart !== false && (_jsx("div", { className: "absolute top-4 right-4 z-20 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(Button, { size: "icon", onClick: (e) => handleAddToCart(e, product), className: "rounded-full bg-white text-slate-900 hover:bg-blue-600 hover:text-white shadow-lg", children: _jsx(ShoppingCart, { className: "h-4 w-4" }) }) })), _jsx("div", { className: "absolute inset-0 flex items-center justify-center p-8 bg-gradient-to-br from-white to-slate-50", children: _jsx(ImageWithFallback, { src: product.images?.[0], alt: product.name, className: "w-full h-full object-contain group-hover:scale-110 transition-transform duration-500", skeletonAspectRatio: "square" }) })] }), _jsxs("div", { className: "space-y-1 px-2", children: [_jsx("h3", { className: "font-bold text-lg text-slate-900 truncate group-hover:text-blue-600 transition-colors", children: product.name }), _jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-slate-900 font-bold", children: formatCurrency(product.price, product.currency || 'USD') }), product.compareAtPrice && _jsx("span", { className: "text-slate-400 text-sm line-through", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') })] })] }), _jsx(Link, { href: `/${storeConfig.slug}/products/${product.slug}`, className: "absolute inset-0 z-10" })] }, product.id))) })] }) })), layout?.features?.show !== false && (_jsxs("section", { className: "py-16 md:py-32 bg-slate-950 text-white relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.03)_1px,transparent_1px)] bg-[size:64px_64px] [mask-image:radial-gradient(ellipse_60%_60%_at_50%_50%,#000_70%,transparent_100%)]" }), _jsx("div", { className: "container mx-auto px-6 relative z-10", children: _jsx("div", { className: "grid md:grid-cols-3 gap-8 md:gap-12", children: [
|
|
74
|
+
{ icon: Cpu, title: "Neural Processing", desc: "Advanced AI capabilities built into every device for smarter performance." },
|
|
75
|
+
{ icon: Shield, title: "Military Grade", desc: "Tested against rigorous standards to ensure durability in any environment." },
|
|
76
|
+
{ icon: Zap, title: "Hyper Charge", desc: "Next-generation battery technology for all-day power in minutes." }
|
|
77
|
+
].map((feature, i) => (_jsxs("div", { className: "bg-slate-900/50 backdrop-blur-sm border border-slate-800 p-8 rounded-[2rem] hover:bg-slate-800/50 transition-colors", children: [_jsx("div", { className: "w-14 h-14 rounded-2xl bg-blue-600/20 flex items-center justify-center mb-6 text-blue-400", children: layout?.features?.showIcons !== false && _jsx(feature.icon, { className: "h-7 w-7" }) }), _jsx("h3", { className: "text-xl font-bold mb-3", children: feature.title }), _jsx("p", { className: "text-slate-400 leading-relaxed", children: feature.desc })] }, i))) }) })] })), layout?.sections?.marketing?.showNewsletter !== false && (_jsx("section", { className: "py-16 md:py-32 bg-white", children: _jsx("div", { className: "container mx-auto px-6", children: _jsxs("div", { className: "bg-blue-600 rounded-[3rem] p-10 md:p-24 text-center relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-blue-500 to-indigo-600" }), _jsx("div", { className: "absolute inset-0 opacity-20 bg-[url('https://grainy-gradients.vercel.app/noise.svg')]" }), _jsxs("div", { className: "relative z-10 max-w-2xl mx-auto space-y-8", children: [_jsx("h2", { className: "text-4xl md:text-5xl font-black text-white tracking-tight", children: "Stay Ahead of the Curve" }), _jsx("p", { className: "text-blue-100 text-lg", children: "Join our exclusive community for early access to drops and special offers." }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-4 max-w-md mx-auto", children: [_jsx("input", { type: "email", placeholder: "Enter your email", value: email, onChange: (e) => setEmail(e.target.value), className: "flex-1 h-14 px-6 rounded-full bg-white/10 border border-white/20 text-white placeholder:text-blue-200 focus:outline-none focus:bg-white/20 focus:border-white transition-all backdrop-blur-md" }), _jsx(Button, { onClick: handleSubscribe, className: "h-14 px-8 rounded-full bg-white text-blue-600 hover:bg-blue-50 font-bold text-lg shadow-xl", children: "Subscribe" })] })] })] }) }) })), _jsx(PromoBanner, { config: layout?.sections?.promoBanner, layoutStyle: "electronics" }), _jsx(ElectronicsStoreFooter, { storeConfig: storeConfig })] }));
|
|
78
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface ElectronicsPageWrapperProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
storeConfig: StoreConfig;
|
|
5
|
+
}
|
|
6
|
+
export declare function ElectronicsPageWrapper({ children, storeConfig }: ElectronicsPageWrapperProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ElectronicsPageWrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElectronicsPageWrapper.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsPageWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhD,UAAU,2BAA2B;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,2BAA2B,2CAa5F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
|
|
4
|
+
import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
|
|
5
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
6
|
+
import { useLoading } from '../../../lib/loading-context';
|
|
7
|
+
export function ElectronicsPageWrapper({ children, storeConfig }) {
|
|
8
|
+
const { isBackendLoading } = useLoading();
|
|
9
|
+
return (_jsxs("div", { className: "min-h-screen flex flex-col bg-slate-50 font-sans text-slate-900 selection:bg-blue-600 selection:text-white", children: [_jsx(ElectronicsStoreHeader, { storeConfig: storeConfig }), _jsxs("main", { className: "flex-1 pt-24 relative", children: [isBackendLoading && _jsx(PageContentLoader, {}), children] }), _jsx(ElectronicsStoreFooter, { storeConfig: storeConfig })] }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface ElectronicsProductsPageProps {
|
|
3
|
+
storeConfig: StoreConfig;
|
|
4
|
+
}
|
|
5
|
+
export declare function ElectronicsProductsPage(props: ElectronicsProductsPageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=ElectronicsProductsPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElectronicsProductsPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsProductsPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAiB9D,UAAU,4BAA4B;IACpC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAiSD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,2CAM1E"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from '../../../components/ui/button';
|
|
4
|
+
import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
|
|
5
|
+
import { CategoryTree } from '../../../components/ui/category-tree';
|
|
6
|
+
import { useStore } from '../../../lib/store-context';
|
|
7
|
+
import { useToast } from '../../../components/ui/toast';
|
|
8
|
+
import { Filter, ChevronDown, Search } from 'lucide-react';
|
|
9
|
+
import { useSearchParams } from 'next/navigation';
|
|
10
|
+
import { useState, useMemo, useEffect, Suspense } from 'react';
|
|
11
|
+
import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
|
|
12
|
+
import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
|
|
13
|
+
import { ElectronicsGridProductCard } from './ElectronicsGridProductCard';
|
|
14
|
+
import { Sheet } from '../../../components/ui/sheet';
|
|
15
|
+
import { AnimatePresence } from 'framer-motion';
|
|
16
|
+
import { formatCurrency, filterActiveProducts } from '../../../lib/utils';
|
|
17
|
+
import { buildCategoryTree, getAllCategoryIds, flattenCategoryTree } from '../../../lib/utils/category-tree';
|
|
18
|
+
function ElectronicsProductsPageContent({ storeConfig }) {
|
|
19
|
+
const searchParams = useSearchParams();
|
|
20
|
+
const categoryParam = searchParams.get('category');
|
|
21
|
+
const [products, setProducts] = useState(filterActiveProducts(storeConfig.products || []));
|
|
22
|
+
const categories = useMemo(() => storeConfig.categories || [], [storeConfig.categories]);
|
|
23
|
+
const { addToCart } = useStore();
|
|
24
|
+
const { addToast } = useToast();
|
|
25
|
+
// Filter States
|
|
26
|
+
const [selectedCategoryFilter, setSelectedCategoryFilter] = useState(categoryParam);
|
|
27
|
+
const [priceRange, setPriceRange] = useState([0, 5000]);
|
|
28
|
+
const [sortBy, setSortBy] = useState('featured');
|
|
29
|
+
const [visibleProducts, setVisibleProducts] = useState(12);
|
|
30
|
+
const [isFilterOpen, setIsFilterOpen] = useState(false);
|
|
31
|
+
// Initialize products
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
const initialProducts = storeConfig.products || [];
|
|
34
|
+
setProducts(initialProducts);
|
|
35
|
+
}, [storeConfig.products]);
|
|
36
|
+
// Build category tree for filtering
|
|
37
|
+
const categoryTree = useMemo(() => buildCategoryTree(categories), [categories]);
|
|
38
|
+
// Get selected category IDs (including children if parent is selected)
|
|
39
|
+
const selectedCategoryIds = useMemo(() => {
|
|
40
|
+
if (!selectedCategoryFilter)
|
|
41
|
+
return [];
|
|
42
|
+
const flatCategories = flattenCategoryTree(categoryTree);
|
|
43
|
+
const selectedCategory = flatCategories.find(c => c.slug === selectedCategoryFilter);
|
|
44
|
+
if (!selectedCategory)
|
|
45
|
+
return [];
|
|
46
|
+
// Return all category IDs including children
|
|
47
|
+
return getAllCategoryIds(selectedCategory);
|
|
48
|
+
}, [selectedCategoryFilter, categoryTree]);
|
|
49
|
+
// Filter Logic
|
|
50
|
+
const filteredAndSortedProducts = useMemo(() => {
|
|
51
|
+
const result = products.filter(product => {
|
|
52
|
+
if (selectedCategoryFilter) {
|
|
53
|
+
// Check if product's category is in the selected category or its children
|
|
54
|
+
if (!selectedCategoryIds.includes(product.categoryId)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (product.price < priceRange[0] || product.price > priceRange[1]) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
});
|
|
63
|
+
switch (sortBy) {
|
|
64
|
+
case 'price-asc':
|
|
65
|
+
result.sort((a, b) => a.price - b.price);
|
|
66
|
+
break;
|
|
67
|
+
case 'price-desc':
|
|
68
|
+
result.sort((a, b) => b.price - a.price);
|
|
69
|
+
break;
|
|
70
|
+
case 'newest':
|
|
71
|
+
result.reverse();
|
|
72
|
+
break;
|
|
73
|
+
case 'rating':
|
|
74
|
+
result.sort((a, b) => (b.rating || 0) - (a.rating || 0));
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}, [products, selectedCategoryFilter, selectedCategoryIds, priceRange, sortBy]);
|
|
79
|
+
const displayedProducts = filteredAndSortedProducts.slice(0, visibleProducts);
|
|
80
|
+
const hasMore = visibleProducts < filteredAndSortedProducts.length;
|
|
81
|
+
const handleAddToCart = (product) => {
|
|
82
|
+
addToCart(product);
|
|
83
|
+
addToast(`${product.name} added to cart`, 'success');
|
|
84
|
+
};
|
|
85
|
+
const breadcrumbItems = [
|
|
86
|
+
{ label: storeConfig.name, href: `/${storeConfig.slug}` },
|
|
87
|
+
{ label: 'Products', href: `/${storeConfig.slug}/products` },
|
|
88
|
+
];
|
|
89
|
+
return (_jsxs("div", { className: "min-h-screen bg-slate-50 font-sans text-slate-900 selection:bg-blue-600 selection:text-white", children: [_jsx(ElectronicsStoreHeader, { storeConfig: storeConfig }), _jsxs("main", { className: "pt-24 pb-20", children: [_jsxs("div", { className: "bg-slate-950 text-white mb-10 overflow-hidden relative", children: [_jsx("div", { className: "absolute inset-0 bg-blue-600/10 pointer-events-none" }), _jsx("div", { className: "absolute -top-24 -right-24 w-96 h-96 bg-blue-500/20 rounded-full blur-[100px]" }), _jsxs("div", { className: "container mx-auto px-6 py-16 relative z-10", children: [_jsx("div", { className: "mb-6 opacity-60", children: _jsx(Breadcrumbs, { items: breadcrumbItems }) }), _jsx("h1", { className: "text-4xl md:text-5xl font-black tracking-tight mb-4", children: "All Products" }), _jsx("p", { className: "text-slate-400 max-w-xl text-lg font-light", children: "Explore our complete catalog of premium electronics." })] })] }), _jsx("div", { className: "container mx-auto px-6", children: _jsxs("div", { className: "flex flex-col lg:flex-row gap-12", children: [_jsx("aside", { className: "hidden lg:block w-64 shrink-0 space-y-10 sticky top-32 self-start h-fit", children: _jsxs("div", { children: [_jsxs("h3", { className: "font-bold text-slate-900 mb-4 flex items-center gap-2", children: [_jsx(Filter, { className: "h-4 w-4" }), " Filters"] }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("h4", { className: "text-xs font-bold text-slate-400 uppercase tracking-wider mb-3", children: "Categories" }), _jsx(CategoryTree, { categories: categories, selectedCategoryIds: selectedCategoryFilter ? [categories.find(c => c.slug === selectedCategoryFilter)?.id || ''] : [], onCategorySelect: (slug) => setSelectedCategoryFilter(selectedCategoryFilter === slug ? null : slug), mode: "button", showAllOption: true, onAllSelect: () => setSelectedCategoryFilter(null), isAllSelected: !selectedCategoryFilter })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-xs font-bold text-slate-400 uppercase tracking-wider mb-3", children: "Price Range" }), _jsxs("div", { className: "px-2", children: [_jsx("input", { type: "range", min: "0", max: "5000", step: "50", value: priceRange[1], onChange: (e) => setPriceRange([0, parseInt(e.target.value)]), className: "w-full h-1 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-blue-600" }), _jsxs("div", { className: "flex justify-between mt-2 text-xs font-bold text-slate-600", children: [_jsx("span", { children: formatCurrency(0, storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) }), _jsxs("span", { children: [formatCurrency(priceRange[1], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }), "+"] })] })] })] })] })] }) }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4 mb-8", children: [_jsxs("div", { className: "text-sm font-medium text-slate-500", children: ["Showing ", _jsx("span", { className: "text-slate-900 font-bold", children: displayedProducts.length }), " results"] }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs(Button, { variant: "outline", className: "lg:hidden rounded-full border-slate-200", onClick: () => setIsFilterOpen(true), children: [_jsx(Filter, { className: "h-4 w-4 mr-2" }), " Filters"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm font-medium text-slate-500 hidden sm:inline", children: "Sort by:" }), _jsxs("div", { className: "relative", children: [_jsxs("select", { value: sortBy, onChange: (e) => setSortBy(e.target.value), className: "appearance-none bg-white border border-slate-200 rounded-full pl-4 pr-10 py-2 text-sm font-medium text-slate-900 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent cursor-pointer hover:bg-slate-50 transition-colors", children: [_jsx("option", { value: "featured", children: "Featured" }), _jsx("option", { value: "newest", children: "Newest" }), _jsx("option", { value: "price-asc", children: "Price: Low to High" }), _jsx("option", { value: "price-desc", children: "Price: High to Low" }), _jsx("option", { value: "rating", children: "Top Rated" })] }), _jsx(ChevronDown, { className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500 pointer-events-none" })] })] })] })] }), displayedProducts.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-6", children: _jsx(AnimatePresence, { mode: 'popLayout', children: displayedProducts.map((product, index) => (_jsx(ElectronicsGridProductCard, { product: product, storeSlug: storeConfig.slug, onAddToCart: handleAddToCart, index: index }, product.id))) }) })) : (_jsxs("div", { className: "flex flex-col items-center justify-center py-32 text-center bg-white rounded-3xl border border-dashed border-slate-200", children: [_jsx("div", { className: "w-16 h-16 bg-slate-50 rounded-full flex items-center justify-center mb-6", children: _jsx(Search, { className: "h-6 w-6 text-slate-400" }) }), _jsx("h3", { className: "text-lg font-bold text-slate-900 mb-2", children: "No products found" }), _jsx("p", { className: "text-slate-500 max-w-sm mx-auto mb-8 text-sm", children: "Try adjusting your filters or search criteria." }), _jsx(Button, { onClick: () => {
|
|
90
|
+
setSelectedCategoryFilter(null);
|
|
91
|
+
setPriceRange([0, 5000]);
|
|
92
|
+
}, variant: "outline", className: "rounded-full px-8 border-slate-200", children: "Clear Filters" })] })), hasMore && (_jsx("div", { className: "mt-16 text-center", children: _jsx(Button, { onClick: () => setVisibleProducts(prev => prev + 12), variant: "outline", className: "rounded-full px-10 h-12 border-slate-200 hover:bg-slate-900 hover:text-white hover:border-slate-900 transition-all text-sm font-bold uppercase tracking-wide", children: "Load More" }) }))] })] }) })] }), _jsx(ElectronicsStoreFooter, { storeConfig: storeConfig }), _jsx(Sheet, { isOpen: isFilterOpen, onClose: () => setIsFilterOpen(false), title: "Filters", side: "right", className: "w-[300px]", children: _jsxs("div", { className: "py-6 space-y-8 h-full flex flex-col", children: [_jsxs("div", { className: "flex-1 space-y-8 overflow-y-auto", children: [_jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-wider mb-4 text-slate-900", children: "Categories" }), _jsx(CategoryTree, { categories: categories, selectedCategoryIds: selectedCategoryFilter ? [categories.find(c => c.slug === selectedCategoryFilter)?.id || ''] : [], onCategorySelect: (slug) => setSelectedCategoryFilter(selectedCategoryFilter === slug ? null : slug), mode: "button", showAllOption: true, onAllSelect: () => setSelectedCategoryFilter(null), isAllSelected: !selectedCategoryFilter })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-wider mb-4 text-slate-900", children: "Price Range" }), _jsxs("div", { className: "px-2", children: [_jsx("input", { type: "range", min: "0", max: "5000", step: "50", value: priceRange[1], onChange: (e) => setPriceRange([0, parseInt(e.target.value)]), className: "w-full h-1 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-blue-600" }), _jsxs("div", { className: "flex justify-between mt-4 text-sm font-bold text-slate-900", children: [_jsx("span", { children: formatCurrency(0, storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) }), _jsxs("span", { children: [formatCurrency(priceRange[1], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }), "+"] })] })] })] })] }), _jsxs("div", { className: "flex gap-4 pt-6 border-t border-slate-100", children: [_jsx(Button, { variant: "outline", className: "flex-1 h-12 rounded-full border-slate-200", onClick: () => {
|
|
93
|
+
setPriceRange([0, 5000]);
|
|
94
|
+
setSelectedCategoryFilter(null);
|
|
95
|
+
setIsFilterOpen(false);
|
|
96
|
+
}, children: "Reset" }), _jsx(Button, { className: "flex-1 bg-blue-600 hover:bg-blue-700 text-white h-12 rounded-full", onClick: () => setIsFilterOpen(false), children: "Show Results" })] })] }) })] }));
|
|
97
|
+
}
|
|
98
|
+
export function ElectronicsProductsPage(props) {
|
|
99
|
+
return (_jsx(Suspense, { fallback: _jsx("div", { className: "min-h-screen bg-slate-50 flex items-center justify-center", children: _jsx("div", { className: "w-8 h-8 border-4 border-slate-200 border-t-blue-600 rounded-full animate-spin" }) }), children: _jsx(ElectronicsProductsPageContent, { ...props }) }));
|
|
100
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface ElectronicsStoreFooterProps {
|
|
3
|
+
storeConfig: StoreConfig;
|
|
4
|
+
}
|
|
5
|
+
export declare function ElectronicsStoreFooter({ storeConfig }: ElectronicsStoreFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=ElectronicsStoreFooter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElectronicsStoreFooter.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsStoreFooter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,UAAU,2BAA2B;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,EAAE,2BAA2B,2CA+GlF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Link from 'next/link';
|
|
4
|
+
import { Zap, Facebook, Twitter, Instagram, Mail, MapPin, Phone } from 'lucide-react';
|
|
5
|
+
import { getLayoutText, getThemeColor } from '../../../lib/utils/asset-helpers';
|
|
6
|
+
export function ElectronicsStoreFooter({ storeConfig }) {
|
|
7
|
+
const bgDark = getThemeColor(storeConfig, 'background', 'dark', '#0F172A');
|
|
8
|
+
const textSecondary = getThemeColor(storeConfig, 'text', 'secondary', '#CBD5E1');
|
|
9
|
+
return (_jsx("footer", { className: "pt-20 pb-10", style: { backgroundColor: bgDark, color: textSecondary }, children: _jsxs("div", { className: "container mx-auto px-6", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-12 mb-16", children: [_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx("div", { className: "w-10 h-10 bg-blue-600 rounded-xl flex items-center justify-center shadow-lg shadow-blue-900/50", children: _jsx(Zap, { className: "h-5 w-5 text-white", fill: "currentColor" }) }), _jsx("span", { className: "font-black text-2xl tracking-tight text-white", children: storeConfig.name })] }), _jsx("p", { className: "text-slate-400 leading-relaxed", children: storeConfig.description || "Leading the future of technology with premium electronics and cutting-edge innovation." }), storeConfig.branding.socialMedia && (_jsxs("div", { className: "flex gap-4", children: [storeConfig.branding.socialMedia.facebook && (_jsx(Link, { href: storeConfig.branding.socialMedia.facebook, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Facebook, { className: "h-4 w-4" }) })), storeConfig.branding.socialMedia.twitter && (_jsx(Link, { href: storeConfig.branding.socialMedia.twitter, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Twitter, { className: "h-4 w-4" }) })), storeConfig.branding.socialMedia.instagram && (_jsx(Link, { href: storeConfig.branding.socialMedia.instagram, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Instagram, { className: "h-4 w-4" }) }))] }))] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Shop" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products`, className: "hover:text-blue-400 transition-colors", children: "All Products" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products?sort=newest`, className: "hover:text-blue-400 transition-colors", children: getLayoutText(storeConfig, 'electronics.newArrivals', 'New Arrivals') }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/categories`, className: "hover:text-blue-400 transition-colors", children: "Collections" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products?sale=true`, className: "hover:text-blue-400 transition-colors", children: "Deals & Offers" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Support" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-blue-400 transition-colors", children: "Help Center" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/track-order`, className: "hover:text-blue-400 transition-colors", children: "Track Order" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/shipping-returns`, className: "hover:text-blue-400 transition-colors", children: "Returns & Exchange" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-blue-400 transition-colors", children: "Warranty Info" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/style-guide`, className: "hover:text-blue-400 transition-colors", children: "Style Guide" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Contact" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsxs("li", { className: "flex items-start gap-3", children: [_jsx(MapPin, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsx("span", { children: "123 Tech Avenue, Silicon Valley, CA 94025" })] }), _jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Phone, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsx("span", { children: "+1 (555) 123-4567" })] }), _jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Mail, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsxs("span", { children: ["support@", storeConfig.slug.replace(/-/g, ''), ".com"] })] })] })] })] }), _jsxs("div", { className: "pt-8 border-t border-slate-900 flex flex-col md:flex-row justify-between items-center gap-4 text-xs font-medium text-slate-500", children: [_jsxs("div", { className: "flex gap-6", children: [_jsx(Link, { href: `/${storeConfig.slug}/privacy`, className: "hover:text-white transition-colors", children: "Privacy Policy" }), _jsx(Link, { href: `/${storeConfig.slug}/terms`, className: "hover:text-white transition-colors", children: "Terms of Service" }), _jsx(Link, { href: `/${storeConfig.slug}/cookie-policy`, className: "hover:text-white transition-colors", children: "Cookie Policy" })] }), _jsx("div", { children: getLayoutText(storeConfig, 'footer.copyright', `© ${new Date().getFullYear()} ${storeConfig.name}. All rights reserved.`) })] })] }) }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface ElectronicsStoreHeaderProps {
|
|
3
|
+
storeConfig: StoreConfig;
|
|
4
|
+
}
|
|
5
|
+
export declare function ElectronicsStoreHeader({ storeConfig }: ElectronicsStoreHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=ElectronicsStoreHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElectronicsStoreHeader.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsStoreHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUhD,UAAU,2BAA2B;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,EAAE,2BAA2B,2CA8HlF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from '../../../components/ui/button';
|
|
4
|
+
import { ShoppingCart, Zap, Menu, X, Search, User } from 'lucide-react';
|
|
5
|
+
import Link from 'next/link';
|
|
6
|
+
import { useState, useEffect } from 'react';
|
|
7
|
+
import { cn } from '../../../lib/utils';
|
|
8
|
+
import { getLayoutText, getLogoUrl } from '../../../lib/utils/asset-helpers';
|
|
9
|
+
import { useStore } from '../../../lib/store-context';
|
|
10
|
+
import { StoreLogo } from '../../../components/ui/store-logos';
|
|
11
|
+
export function ElectronicsStoreHeader({ storeConfig }) {
|
|
12
|
+
const [scrolled, setScrolled] = useState(false);
|
|
13
|
+
const { cartCount } = useStore();
|
|
14
|
+
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const handleScroll = () => setScrolled(window.scrollY > 20);
|
|
17
|
+
window.addEventListener('scroll', handleScroll);
|
|
18
|
+
return () => window.removeEventListener('scroll', handleScroll);
|
|
19
|
+
}, []);
|
|
20
|
+
return (_jsxs("nav", { className: cn("fixed top-0 w-full z-50 transition-all duration-300", scrolled
|
|
21
|
+
? "bg-white/80 backdrop-blur-xl border-b border-gray-100 py-3 shadow-sm"
|
|
22
|
+
: "bg-transparent py-5"), children: [_jsxs("div", { className: "container mx-auto px-6 flex items-center justify-between", children: [_jsxs(Link, { href: `/${storeConfig.slug}`, className: "group flex items-center gap-2.5 z-50", children: [getLogoUrl(storeConfig) ? (_jsx(StoreLogo, { storeConfig: storeConfig, className: "h-10 w-10 transition-all duration-300 group-hover:scale-105 group-hover:opacity-90", alt: storeConfig.name })) : (_jsx("div", { className: "w-10 h-10 bg-blue-600 rounded-xl flex items-center justify-center transition-transform group-hover:scale-105 duration-300 shadow-lg shadow-blue-600/20", children: _jsx(Zap, { className: "h-5 w-5 text-white fill-current" }) })), !getLogoUrl(storeConfig) && (_jsx("span", { className: "text-xl font-black tracking-tight text-gray-900 group-hover:text-blue-600 transition-colors", children: storeConfig.name }))] }), _jsx("div", { className: "hidden md:flex items-center gap-1 bg-gray-100/50 backdrop-blur-md p-1.5 rounded-full border border-gray-200/50", children: [
|
|
23
|
+
{ label: 'Products', href: `/${storeConfig.slug}/products` },
|
|
24
|
+
{ label: 'Collections', href: `/${storeConfig.slug}/categories` },
|
|
25
|
+
{ label: 'About', href: `/${storeConfig.slug}/about` }
|
|
26
|
+
].map((item) => (_jsx(Link, { href: item.href, className: "px-5 py-2 rounded-full text-sm font-semibold text-gray-600 hover:text-gray-900 hover:bg-white transition-all duration-300 hover:shadow-sm", children: item.label }, item.href))) }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Button, { variant: "ghost", size: "icon", className: "hidden sm:flex text-gray-900 hover:bg-blue-50 hover:text-blue-600 rounded-full transition-all", children: _jsx(Search, { className: "h-5 w-5" }) }), _jsx(Link, { href: `/${storeConfig.slug}/account`, children: _jsx(Button, { variant: "ghost", size: "icon", className: "hidden md:flex text-gray-900 hover:bg-blue-50 hover:text-blue-600 rounded-full transition-all", children: _jsx(User, { className: "h-5 w-5" }) }) }), _jsx(Link, { href: `/${storeConfig.slug}/cart`, children: _jsxs(Button, { variant: "ghost", size: "icon", className: "relative text-gray-900 hover:bg-blue-50 hover:text-blue-600 rounded-full transition-all h-10 w-10 sm:h-9 sm:w-9", children: [_jsx(ShoppingCart, { className: "h-5 w-5" }), cartCount > 0 && (_jsx("span", { className: "absolute top-0 right-0 bg-blue-600 text-white text-[10px] font-bold h-4 w-4 flex items-center justify-center rounded-full shadow-sm ring-2 ring-white", children: cartCount }))] }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "md:hidden text-gray-900 hover:bg-gray-100 rounded-full h-10 w-10", onClick: () => setIsMobileMenuOpen(!isMobileMenuOpen), children: isMobileMenuOpen ? _jsx(X, { className: "h-6 w-6" }) : _jsx(Menu, { className: "h-6 w-6" }) })] })] }), _jsxs("div", { className: cn("fixed inset-0 bg-white z-40 pt-28 px-6 md:hidden transition-all duration-300 ease-in-out transform", isMobileMenuOpen ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-full pointer-events-none"), children: [_jsxs("div", { className: "mb-8 relative", children: [_jsx("input", { type: "text", placeholder: "Search products...", className: "w-full h-12 pl-12 pr-4 rounded-xl bg-gray-100 border-none text-gray-900 focus:ring-2 focus:ring-blue-500/20" }), _jsx(Search, { className: "absolute left-4 top-1/2 -translate-y-1/2 h-5 w-5 text-gray-400" })] }), _jsxs("div", { className: "flex flex-col gap-6 text-3xl font-bold text-gray-900 tracking-tight", children: [_jsx(Link, { href: `/${storeConfig.slug}/products`, onClick: () => setIsMobileMenuOpen(false), className: "hover:text-blue-600 transition-colors", children: "Products" }), _jsx(Link, { href: `/${storeConfig.slug}/categories`, onClick: () => setIsMobileMenuOpen(false), className: "hover:text-blue-600 transition-colors", children: "Collections" }), _jsx(Link, { href: `/${storeConfig.slug}/about`, onClick: () => setIsMobileMenuOpen(false), className: "hover:text-blue-600 transition-colors", children: "About" }), _jsx(Link, { href: `/${storeConfig.slug}/account`, onClick: () => setIsMobileMenuOpen(false), className: "hover:text-blue-600 transition-colors", children: "Account" })] }), _jsxs("div", { className: "mt-12 pt-12 border-t border-gray-100 grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "bg-gray-50 p-6 rounded-2xl", children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2", children: "Support" }), _jsx("p", { className: "text-sm text-gray-500", children: "24/7 Customer Care" })] }), _jsxs("div", { className: "bg-blue-50 p-6 rounded-2xl", children: [_jsx("h4", { className: "font-bold text-blue-900 mb-2", children: getLayoutText(storeConfig, 'electronics.newArrivals', 'New Arrivals') }), _jsx("p", { className: "text-sm text-blue-600", children: "Check out latest tech" })] })] })] })] }));
|
|
27
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { ElectronicsHomePage } from './components/ElectronicsHomePage';
|
|
2
|
+
export { ElectronicsProductsPage } from './components/ElectronicsProductsPage';
|
|
3
|
+
export { ElectronicsCategoriesPage } from './components/ElectronicsCategoriesPage';
|
|
4
|
+
export { ElectronicsPageWrapper } from './components/ElectronicsPageWrapper';
|
|
5
|
+
export { ElectronicsStoreHeader } from './components/ElectronicsStoreHeader';
|
|
6
|
+
export { ElectronicsStoreFooter } from './components/ElectronicsStoreFooter';
|
|
7
|
+
export { ElectronicsGridProductCard } from './components/ElectronicsGridProductCard';
|
|
8
|
+
export { ProductsPage } from './pages/ProductsPage';
|
|
9
|
+
export { ProductDetailPage } from './pages/ProductDetailPage';
|
|
10
|
+
export { CategoryPage } from './pages/CategoryPage';
|
|
11
|
+
export { CategoriesPage } from './pages/CategoriesPage';
|
|
12
|
+
export { AboutPage } from './pages/AboutPage';
|
|
13
|
+
export { ContactPage } from './pages/ContactPage';
|
|
14
|
+
export { HelpCenterPage } from './pages/HelpCenterPage';
|
|
15
|
+
export { PrivacyPolicyPage } from './pages/PrivacyPolicyPage';
|
|
16
|
+
export { ShippingReturnsPage } from './pages/ShippingReturnsPage';
|
|
17
|
+
export { TermsPage } from './pages/TermsPage';
|
|
18
|
+
export { TrackOrderPage } from './pages/TrackOrderPage';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/electronics/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Electronics layout exports
|
|
2
|
+
export { ElectronicsHomePage } from './components/ElectronicsHomePage';
|
|
3
|
+
export { ElectronicsProductsPage } from './components/ElectronicsProductsPage';
|
|
4
|
+
export { ElectronicsCategoriesPage } from './components/ElectronicsCategoriesPage';
|
|
5
|
+
export { ElectronicsPageWrapper } from './components/ElectronicsPageWrapper';
|
|
6
|
+
export { ElectronicsStoreHeader } from './components/ElectronicsStoreHeader';
|
|
7
|
+
export { ElectronicsStoreFooter } from './components/ElectronicsStoreFooter';
|
|
8
|
+
export { ElectronicsGridProductCard } from './components/ElectronicsGridProductCard';
|
|
9
|
+
export { ProductsPage } from './pages/ProductsPage';
|
|
10
|
+
export { ProductDetailPage } from './pages/ProductDetailPage';
|
|
11
|
+
export { CategoryPage } from './pages/CategoryPage';
|
|
12
|
+
export { CategoriesPage } from './pages/CategoriesPage';
|
|
13
|
+
export { AboutPage } from './pages/AboutPage';
|
|
14
|
+
export { ContactPage } from './pages/ContactPage';
|
|
15
|
+
export { HelpCenterPage } from './pages/HelpCenterPage';
|
|
16
|
+
export { PrivacyPolicyPage } from './pages/PrivacyPolicyPage';
|
|
17
|
+
export { ShippingReturnsPage } from './pages/ShippingReturnsPage';
|
|
18
|
+
export { TermsPage } from './pages/TermsPage';
|
|
19
|
+
export { TrackOrderPage } from './pages/TrackOrderPage';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface AboutPageProps {
|
|
3
|
+
storeConfig: StoreConfig;
|
|
4
|
+
}
|
|
5
|
+
export declare function AboutPage({ storeConfig }: AboutPageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=AboutPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE,cAAc,2CAsOxD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Users, Award, Heart, Leaf, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
|
|
4
|
+
import { Button } from '../../../components/ui/button';
|
|
5
|
+
import { DotPattern } from '../../../components/ui/background-patterns';
|
|
6
|
+
import Image from 'next/image';
|
|
7
|
+
export function AboutPage({ storeConfig }) {
|
|
8
|
+
const primaryColor = storeConfig.branding.primaryColor;
|
|
9
|
+
const secondaryColor = storeConfig.branding.secondaryColor || primaryColor;
|
|
10
|
+
const aboutConfig = storeConfig.layoutConfig?.pages?.about;
|
|
11
|
+
// Electronics-specific hero image
|
|
12
|
+
const heroImage = aboutConfig?.heroImage || 'https://images.unsplash.com/photo-1498049381960-da565139a979?q=80&w=2071&auto=format&fit=crop';
|
|
13
|
+
const pageTitle = aboutConfig?.title || "Crafting Experiences, Delivering Joy.";
|
|
14
|
+
const pageContent = aboutConfig?.content || storeConfig.description;
|
|
15
|
+
const missionStatement = aboutConfig?.missionStatement;
|
|
16
|
+
const galleryImages = aboutConfig?.gallerySection;
|
|
17
|
+
const values = [
|
|
18
|
+
{
|
|
19
|
+
icon: Award,
|
|
20
|
+
title: "Quality First",
|
|
21
|
+
description: "We never compromise on the quality of our products and services."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
icon: Users,
|
|
25
|
+
title: "Customer Focused",
|
|
26
|
+
description: "Your satisfaction is our top priority. We're here to help."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
icon: Heart,
|
|
30
|
+
title: "Passion",
|
|
31
|
+
description: "We love what we do and it shows in every detail of our work."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
icon: Leaf,
|
|
35
|
+
title: "Sustainability",
|
|
36
|
+
description: "Committed to eco-friendly practices and responsible sourcing."
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [_jsxs("section", { className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow", unoptimized: true }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", children: missionStatement || storeConfig.description })] }) }) })] }), _jsxs("section", { className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [galleryImages && galleryImages.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: galleryImages.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500", unoptimized: true }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=2071&auto=format&fit=crop", alt: "Our Team", fill: true, className: "w-full h-full object-cover", unoptimized: true }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: "The Dream Team" }), _jsx("p", { className: "text-white/80 text-sm", children: "Working together to serve you better" })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx("p", { className: "text-gray-600 text-sm leading-relaxed", children: item.description })] })] }, idx))) })] })] }) })] }), _jsxs("section", { className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
|
|
40
|
+
{ label: "Happy Customers", value: "10k+" },
|
|
41
|
+
{ label: "Products", value: storeConfig.products?.length ? `${storeConfig.products.length * 10}+` : "50+" },
|
|
42
|
+
{ label: "Years Active", value: "5+" },
|
|
43
|
+
{ label: "Team Members", value: "25+" }
|
|
44
|
+
].map((stat, idx) => (_jsxs("div", { className: "text-center group", children: [_jsx("div", { className: "text-5xl md:text-6xl font-black mb-2 tracking-tight transition-transform group-hover:scale-110 duration-300", style: { color: primaryColor }, children: stat.value }), _jsx("div", { className: "text-gray-600 font-bold uppercase tracking-widest text-xs md:text-sm", children: stat.label })] }, idx))) }) })] }), _jsx("section", { className: "py-24 px-4 sm:px-6 lg:px-8 bg-white", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsxs("div", { className: "text-center mb-16", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: "Get in Touch" }), _jsx("p", { className: "text-gray-500 max-w-xl mx-auto", children: "Have questions? We'd love to hear from you. Reach out to our team via email, phone, or visit us at our store." })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: [_jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(MapPin, { className: "h-8 w-8 text-gray-400 group-hover:text-blue-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Visit Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: ["123 Store Street", _jsx("br", {}), "Commerce City, ST 12345"] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 border-2 border-transparent group-hover:border-orange-100 rounded-[2rem] transition-colors pointer-events-none" }), _jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Mail, { className: "h-8 w-8 text-gray-400 group-hover:text-orange-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Email Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed mb-4", children: ["hello@", storeConfig.slug, ".com", _jsx("br", {}), "support@", storeConfig.slug, ".com"] }), _jsxs(Button, { variant: "link", className: "text-orange-600 font-bold p-0 h-auto hover:no-underline group-hover:translate-x-1 transition-transform", children: ["Send a message ", _jsx(ArrowRight, { className: "ml-1 h-4 w-4" })] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Clock, { className: "h-8 w-8 text-gray-400 group-hover:text-green-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Opening Hours" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: ["Mon - Fri: 9am - 6pm", _jsx("br", {}), "Sat - Sun: 10am - 4pm"] })] })] })] }) })] }));
|
|
45
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface CategoriesPageProps {
|
|
3
|
+
storeConfig: StoreConfig;
|
|
4
|
+
}
|
|
5
|
+
export declare function CategoriesPage({ storeConfig }: CategoriesPageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=CategoriesPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoriesPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/CategoriesPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,mBAAmB,2CAElE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ElectronicsCategoriesPage } from '../../../layouts/electronics/components/ElectronicsCategoriesPage';
|
|
4
|
+
export function CategoriesPage({ storeConfig }) {
|
|
5
|
+
return _jsx(ElectronicsCategoriesPage, { storeConfig: storeConfig });
|
|
6
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StoreConfig } from '../../../lib/store-types';
|
|
2
|
+
interface CategoryPageProps {
|
|
3
|
+
storeConfig: StoreConfig;
|
|
4
|
+
categorySlug: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function CategoryPage({ storeConfig, categorySlug }: CategoryPageProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=CategoryPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/CategoryPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,mBAAmB,CAAC;AAc5E,UAAU,iBAAiB;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,iBAAiB,2CA+N5E"}
|