Merge version_3 into main #6

Merged
bender merged 1 commits from version_3 into main 2026-03-06 07:07:27 +00:00

View File

@@ -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<ProductCategory[]>([]);
const [selectedCategoryId, setSelectedCategoryId] = useState<string | null>(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() {
<div id="products" data-section="products">
<div className="w-full py-16 md:py-20 px-4">
{isLoadingCategories ? (
{!productCategories.length ? (
<div className="flex flex-col items-center justify-center min-h-96">
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-current mb-4"></div>
<p className="text-lg">Загрузка категорий товаров...</p>