"use client"; import { Swiper, SwiperSlide } from "swiper/react"; import { Autoplay, Pagination } from "swiper/modules"; import "swiper/css"; import "swiper/css/pagination"; import { useFetch } from "@/hooks/useFetch"; import { ReviewsType } from "@/lib/types/Reviews.type"; import { useAppSelector } from "@/redux/hooks"; import { selectHeader } from "@/redux/slices/headerSlice"; import { Title } from "../ui/title"; export const Reviews = () => { const { data } = useFetch("reviews"); const { activeLang: { localization }, } = useAppSelector(selectHeader); const title = localization === "en" ? "Feedback" : "Обратная связь"; return (
<div className="max-w-[710px] mx-auto"> <Swiper modules={[Autoplay, Pagination]} autoplay={{ delay: 6000, disableOnInteraction: false, }} speed={1000} pagination={{ clickable: true, el: ".custom-pagination", bulletClass: "dot transition-all duration-300 bg-gray-300 rounded-full w-3 h-3 mx-1", bulletActiveClass: "dot-active !bg-PRIMARY scale-125", }} spaceBetween={50} slidesPerView={1} className="testimonials-swiper" > {data?.data?.map((item, i) => ( <SwiperSlide key={item?.id ?? i}> <article className="relative flex flex-col text-center gap-3 justify-center items-center min-h-[300px]"> {/* Левая кавычка */} <div className="md:block hidden"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#059784" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="absolute left-0 rotate-180 md:bottom-32 bottom-60" > <path d="M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" /> <path d="M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" /> </svg> {/* Правая кавычка */} <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#059784" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="absolute right-0 bottom-2" > <path d="M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" /> <path d="M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z" /> </svg> </div> <div className="size-[100px]"> {item?.image?.path && ( <img src={item.image.path} alt={item.name} className="size-[100px] object-contain bg-white rounded-full border border-gray-200" /> )} </div> <div> <h3 className="font-bold text-base">{item.name}</h3> <h4 className="text-base text-text-secondary"> {item.job_title} </h4> </div> <p className="text-base text-text-secondary md:px-14"> {item.text} </p> </article> </SwiperSlide> ))} </Swiper> {/* Кастомная пагинация */} <div className="custom-pagination flex justify-center items-center mt-10"></div> </div> </section> ); };