diff --git a/src/components/carousel/carousel.tsx b/src/components/carousel/carousel.tsx index 2c7ebe4..d92cfc2 100644 --- a/src/components/carousel/carousel.tsx +++ b/src/components/carousel/carousel.tsx @@ -1,4 +1,6 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useRef } from 'react'; +import ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew'; +import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos'; interface CarouselProps { images: string[]; @@ -10,7 +12,7 @@ interface CarouselClickablesProps { } export const Carousel: React.FC = ({ images }) => { - const [currentImage, setCurrentImage] = React.useState(0); + const [currentImage, setCurrentImage] = useState(0); const nextImage = () => { setCurrentImage((currentImage + 1) % images.length); @@ -36,14 +38,26 @@ export const Carousel: React.FC = ({ images }) => { export const CarouselClickables: React.FC = ({ images, links }) => { const [currentIndex, setCurrentIndex] = useState(0); const [fade, setFade] = useState("fade-in"); + const intervalRef = useRef(null); // Store the interval ID - useEffect(() => { - const interval = setInterval(() => { + const resetInterval = () => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + intervalRef.current = window.setInterval(() => { handleNextImage(); }, 3000); + }; - return () => clearInterval(interval); - }, [images.length]); + useEffect(() => { + resetInterval(); + + return () => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + }; + }, []); const handleNextImage = () => { setFade("fade-out"); @@ -51,6 +65,7 @@ export const CarouselClickables: React.FC = ({ images, setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length); setFade("fade-in"); }, 500); + resetInterval(); }; const handlePreviousImage = () => { @@ -59,26 +74,25 @@ export const CarouselClickables: React.FC = ({ images, setCurrentIndex((prevIndex) => (prevIndex - 1 + images.length) % images.length); setFade("fade-in"); }, 500); + resetInterval(); }; return ( -
-
- {images.map((image, index) => ( - - {`Slide - - ))} -
-
- - -
-
+
+ +
+ {images.map((image, index) => ( + + ))} +
+ +
); }; \ No newline at end of file diff --git a/src/components/sidecard/fromleftcard.tsx b/src/components/sidecard/fromleftcard.tsx index dc2c9d1..575995f 100644 --- a/src/components/sidecard/fromleftcard.tsx +++ b/src/components/sidecard/fromleftcard.tsx @@ -16,14 +16,12 @@ interface FromLeftCardCarouselProps { export const FromLeftCard: React.FC = ({ title, content, image }) => { return ( <> -
-
+
+

{title}

{content}
-
- {title}/ -
+ {title}
) diff --git a/src/components/sidecard/fromrightcard.tsx b/src/components/sidecard/fromrightcard.tsx index b423486..51facd2 100644 --- a/src/components/sidecard/fromrightcard.tsx +++ b/src/components/sidecard/fromrightcard.tsx @@ -10,9 +10,7 @@ interface FromRightCardProps { export const FromRightCard: React.FC = ({ title, content, image, className }) => { return (
-
- {title} -
+ {title}

{title}