import React, { FC, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Tab, TabList, TabPanel, TabPanels, Tabs, Text, } from '@chakra-ui/react'; import { mockReview } from '../../../../mocks/landing'; import { Review } from '../../../../models'; import { ReviewCard } from './ReviewCard'; const SLIDE_CHANGE_INTERVAL = 5000; export const ReviewsSlider: FC = () => { const { i18n } = useTranslation(); const mockReviews: Review.View[] = mockReview.getReviewsByLocale(i18n.language); const reviewsCount = mockReviews.length; const [activeTab, setActiveTab] = useState(0); const [isSlideShowStopped, setIsSlideShowStopped] = useState(false); useEffect(() => { const timer = setInterval(() => { const newActiveTab = (activeTab + 1) % reviewsCount; setActiveTab(newActiveTab); }, SLIDE_CHANGE_INTERVAL); if (isSlideShowStopped) { clearInterval(timer); } return () => { clearInterval(timer); }; }, [activeTab]); return ( { setIsSlideShowStopped(true); setActiveTab(selectedTab); }} display='flex' flexDir='column' alignItems='center' variant='soft-rounded' colorScheme='gray' > {mockReviews.map(({ id }, i) => ( {i} ))} {mockReviews.map(({ id, ...reviewProps }) => ( ))} ); };