diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index a65330f..b90bb92 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -2,7 +2,8 @@ import React, { useState, useEffect, useCallback } from 'react'; import { ChevronLeft, ChevronRight } from 'lucide-react'; import { navigateTo } from './Router'; import svgPaths from "../imports/svg-i1joeov37f"; - +import PrimaryCTAButton from './PrimaryCTAButton'; + interface SlideData { id: number; title: string; @@ -11,12 +12,12 @@ interface SlideData { ctaText: string; route: string; } - + export default function HeroSection() { const [currentSlide, setCurrentSlide] = useState(0); const [isAutoPlaying, setIsAutoPlaying] = useState(true); const [progressValues, setProgressValues] = useState([0, 0, 0, 0, 0, 0]); - + const slides: SlideData[] = [ { id: 1, @@ -32,7 +33,7 @@ export default function HeroSection() { backgroundImage: "https://images.unsplash.com/photo-1705234384669-c6d31c61b789?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3Nzg4Nzd8MHwxfHNlYXJjaHwxfHxleGVjdXRpdmUlMjBsZWFkZXJzaGlwJTIwZGV2ZWxvcG1lbnQlMjB0cmFpbmluZ3xlbnwxfHx8fDE3NTY4MDcyNjJ8MA&ixlib=rb-4.1.0&q=80&w=1080&utm_source=figma&utm_medium=referral", shortTitle: "Leadership Development", ctaText: "Explore Leadership Journeys", - route: '/services/leadership-development' + route: '/services/leadership-development' }, { id: 3, @@ -67,25 +68,25 @@ export default function HeroSection() { route: '/services/learning-facility' } ]; - + const totalSlides = slides.length; const slideDuration = 5000; // 5 seconds per slide - + // Auto-advance slides useEffect(() => { if (!isAutoPlaying) return; - + const interval = setInterval(() => { setCurrentSlide((prev) => (prev + 1) % totalSlides); }, slideDuration); - + return () => clearInterval(interval); }, [isAutoPlaying, totalSlides]); - + // Progress bar animation useEffect(() => { if (!isAutoPlaying) return; - + const interval = setInterval(() => { setProgressValues(prev => { const newProgress = [...prev]; @@ -103,10 +104,10 @@ export default function HeroSection() { return newProgress; }); }, 100); - + return () => clearInterval(interval); }, [currentSlide, isAutoPlaying]); - + // Reset progress when manually changing slides useEffect(() => { setProgressValues(prev => { @@ -115,7 +116,7 @@ export default function HeroSection() { return newProgress; }); }, [currentSlide]); - + const goToSlide = useCallback((slideIndex: number) => { if (slideIndex !== currentSlide) { setCurrentSlide(slideIndex); @@ -124,23 +125,23 @@ export default function HeroSection() { setTimeout(() => setIsAutoPlaying(true), 3000); } }, [currentSlide]); - + const nextSlide = useCallback(() => { const next = (currentSlide + 1) % totalSlides; goToSlide(next); }, [currentSlide, totalSlides, goToSlide]); - + const prevSlide = useCallback(() => { const prev = (currentSlide - 1 + totalSlides) % totalSlides; goToSlide(prev); }, [currentSlide, totalSlides, goToSlide]); - + // Pause auto-play on hover const handleMouseEnter = () => setIsAutoPlaying(false); const handleMouseLeave = () => setIsAutoPlaying(true); - + return ( -
))} - + {/* Hero Content */}
@@ -167,144 +168,54 @@ export default function HeroSection() { {/* Dynamic CTA Button - Enhanced with Proper Navigation */} - + navigateTo(slides[currentSlide].route)} + ariaLabel="Learn more about KLC" + />
- + + {/* Bottom Navigation */}
{/* Progress Section */}
{slides.map((slide, index) => ( -
goToSlide(index)} > {/* Progress Bar */} -
navigateTo(slide.route)} > -
-
+ {/* Progress Bar */} +
+
+
- {/* Progress Number */} -
- {String(index + 1).padStart(2, '0')} -
+ {/* Progress Number */} +
+ {String(index + 1).padStart(2, '0')} +
- {/* Progress Text */} -
- {slide.shortTitle} + {/* Progress Text */} +
+ {slide.shortTitle} +
))}
- + {/* Navigation Arrows */}
+ {text} + + + {/* Arrow icon with enhanced animation */} + + + + ); -}; \ No newline at end of file +} + +// Named exports for backward compatibility +export const PrimaryCTAButtonProps = PrimaryCTAButton; +export default PrimaryCTAButton; \ No newline at end of file