diff --git a/src/app/page.tsx b/src/app/page.tsx index 85dd4b4..6c04f07 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -11,8 +11,8 @@ import SocialProofOne from "@/components/sections/socialProof/SocialProofOne"; import FaqSplitText from "@/components/sections/faq/FaqSplitText"; import ContactSplit from "@/components/sections/contact/ContactSplit"; import FooterCard from "@/components/sections/footer/FooterCard"; -import { Zap, Package, Star, Shield, Headphones, CreditCard, Check, Award, Sparkles, Heart, Trophy, Mail, Facebook, Instagram, Linkedin, Twitter, ShoppingCart } from "lucide-react"; -import { useState, useEffect } from "react"; +import { Zap, Package, Star, Shield, Headphones, CreditCard, Check, Award, Sparkles, Heart, Trophy, Mail, Facebook, Instagram, Linkedin, Twitter } from "lucide-react"; +import { useState, useEffect, useCallback } from "react"; interface CartItem { id: string; @@ -34,7 +34,7 @@ export default function LandingPage() { const [showCart, setShowCart] = useState(false); const [productCategories, setProductCategories] = useState([]); const [selectedCategoryId, setSelectedCategoryId] = useState(null); - const [isLoadingCategories, setIsLoadingCategories] = useState(true); + const [isLoadingCategories, setIsLoadingCategories] = useState(false); // All 60 products organized by category const allProducts = [ @@ -110,8 +110,6 @@ export default function LandingPage() { // Initialize categories on mount useEffect(() => { - setIsLoadingCategories(true); - // Simulate category loading delay const timer = setTimeout(() => { const categories = [ { @@ -140,25 +138,25 @@ export default function LandingPage() { } ]; setProductCategories(categories); - setIsLoadingCategories(false); - // Set first category as default setSelectedCategoryId(categories[0].id); }, 500); return () => clearTimeout(timer); }, []); - const addToCart = (product: any) => { - const existingItem = cart.find(item => item.id === product.id); - if (existingItem) { - setCart(cart.map(item => - item.id === product.id - ? { ...item, quantity: item.quantity + 1 } - : item - )); - } else { - setCart([...cart, { ...product, quantity: 1 }]); - } - }; + const addToCart = useCallback((product: any) => { + setCart(prevCart => { + const existingItem = prevCart.find(item => item.id === product.id); + if (existingItem) { + return prevCart.map(item => + item.id === product.id + ? { ...item, quantity: item.quantity + 1 } + : item + ); + } else { + return [...prevCart, { ...product, quantity: 1 }]; + } + }); + }, []); const removeFromCart = (id: string) => { setCart(cart.filter(item => item.id !== id)); @@ -276,7 +274,7 @@ export default function LandingPage() {
- {isLoadingCategories ? ( + {!productCategories.length ? (

Загрузка категорий товаров...