'use client' import { useState, useEffect } from "react" import { Autoplay, Navigation, Pagination } from "swiper/modules" import { Swiper, SwiperSlide } from "swiper/react" const swiperOptions = { modules: [Autoplay, Pagination, Navigation], slidesPerView: 1, spaceBetween: 30, autoplay: { delay: 2500, disableOnInteraction: false, }, loop: true, // Navigation navigation: { nextEl: '.h1n', prevEl: '.h1p', }, // Pagination pagination: { el: '.swiper-pagination', clickable: true, }, breakpoints: { 320: { slidesPerView: 1, // spaceBetween: 30, }, 575: { slidesPerView: 1, // spaceBetween: 30, }, 767: { slidesPerView: 1, // spaceBetween: 30, }, 991: { slidesPerView: 1, // spaceBetween: 30, }, 1199: { slidesPerView: 1, // spaceBetween: 30, }, 1350: { slidesPerView: 1, // spaceBetween: 30, }, } } export default function TestimonialSlider1() { const [reviews, setReviews] = useState([]); const [loading, setLoading] = useState(true); const [expandedReview, setExpandedReview] = useState(null); const [isClient, setIsClient] = useState(false); useEffect(() => { setIsClient(true); async function loadReviews() { try { const res = await fetch("/api/reviews"); const data = await res.json(); const cleaned = (data.reviews || []).filter(r => (r.text || r.description || r.snippet || r.review_text || r.body || r.content) && r.rating >= 4 ); setReviews(cleaned); } catch (error) { console.error("Failed to fetch reviews", error); } finally { setLoading(false); } } loadReviews(); }, []); const displayedReviews = reviews.length > 0 && reviews.length < 3 ? [...reviews, ...reviews, ...reviews] : reviews; function renderStars(rating) { return [...Array(5)].map((_, i) => ( )); } function getReviewText(r) { return r.text || r.description || r.snippet || r.review_text || r.body || r.content || ""; } function truncateText(text) { return text.length > 150 ? text.substring(0, 150) + "..." : text; } function getProfileImage(r) { const url = r.profile_photo_url || r.author_profile_photo_url || r.user?.thumbnail; if (!url) return null; return url.startsWith("http") ? url : `https://lh3.googleusercontent.com/${url}`; } function getInitials(name) { if (!name) return "U"; return name.split(' ').map(n => n[0]).join('').substring(0, 2).toUpperCase(); } if (!isClient) return null; if (loading) { return
{isExpanded ? fullText : truncateText(fullText)}
{/* Image support if available */} {r.images && r.images.length > 0 && (