From a8915a2817fe3d84fe26ea5c21dfde99a384bcb5 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Wed, 3 Jun 2026 14:29:56 +0000 Subject: [PATCH] Bob AI: For the image on the hero section, have it switch in between --- src/pages/HomePage/sections/Hero.tsx | 116 ++++++++++++++++++--------- 1 file changed, 76 insertions(+), 40 deletions(-) diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx index b07051b..c0b38fb 100644 --- a/src/pages/HomePage/sections/Hero.tsx +++ b/src/pages/HomePage/sections/Hero.tsx @@ -16,53 +16,89 @@ const IMAGES = [ export default function HeroSection(): React.JSX.Element { const [currentImageIndex, setCurrentImageIndex] = useState(0); - const [isLoading, setIsLoading] = useState(true); - const [currentImage, setCurrentImage] = useState(IMAGES[0]); + const [progress, setProgress] = useState(0); useEffect(() => { - const interval = setInterval(() => { - setIsLoading(true); - setCurrentImageIndex((prevIndex) => (prevIndex + 1) % IMAGES.length); - }, 5000); // Change image every 5 seconds + const duration = 5000; // 5 seconds per image + const interval = 50; // update progress every 50ms + const step = (interval / duration) * 100; - return () => clearInterval(interval); + const timer = setInterval(() => { + setProgress((prev) => { + if (prev >= 100) { + setCurrentImageIndex((prevIndex) => (prevIndex + 1) % IMAGES.length); + return 0; + } + return prev + step; + }); + }, interval); + + return () => clearInterval(timer); }, []); - useEffect(() => { - const image = new Image(); - image.src = IMAGES[currentImageIndex]; - image.onload = () => { - setCurrentImage(IMAGES[currentImageIndex]); - setIsLoading(false); - }; - image.onerror = () => { - console.error("Failed to load image:", IMAGES[currentImageIndex]); - setIsLoading(false); - }; - }, [currentImageIndex]); - return ( -
- {isLoading && ( -
-
+
+
+

+ Innovate Marketing +

+ +
+
+

+ Your Vision, Amplified. We craft data-driven strategies and compelling narratives to elevate your brand and drive measurable results. Let's grow together. +

+
- )} - - - +
+ +
+ {IMAGES.map((src, index) => ( +
+ {`Slide +
+ ))} + + {/* Progress Bars Overlay */} +
+ {IMAGES.map((_, index) => ( +
{ + setCurrentImageIndex(index); + setProgress(0); + }} + > +
+
+ ))} +
+
+
); }