"use client"; import React, { useEffect, useState } from "react"; import { Star, MessageSquareQuote, ShieldCheck, UserCheck } from "lucide-react"; import { motion } from "motion/react"; import SafeImage from "./SafeImage"; import { useSettingsStore } from "../lib/store/settingsStore"; import api, { BASE_DOMAIN } from "../lib/services/api"; export interface Testimonial { id: string; authorName: string; roleTitle?: string; avatarUrl?: string; content: string; rating: number; isFeatured: boolean; isActive: boolean; } export default function TestimonialsSection() { const getText = useSettingsStore(state => state.getText); const [testimonials, setTestimonials] = useState([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { async function loadTestimonials() { try { setIsLoading(true); const res = await api.get('/testimonials/homepage'); const raw = res.data; const list = Array.isArray(raw?.testimonials) ? raw.testimonials : Array.isArray(raw?.data?.testimonials) ? raw.data.testimonials : Array.isArray(raw?.data) ? raw.data : Array.isArray(raw) ? raw : []; setTestimonials(list.filter((t: Testimonial) => t.isActive !== false)); } catch (err) { console.error('Failed to load testimonials:', err); setTestimonials([]); } finally { setIsLoading(false); } } loadTestimonials(); }, []); if (!isLoading && testimonials.length === 0) { return null; // Gracefully hide section if no testimonials exist in backend } return (
{/* Section Header */}
{getText('testimonials_badge', 'توصیه‌ها و تجربیات')}

{getText('testimonials_title_1', 'نظرات')} {getText('testimonials_title_2', 'دامپزشکان و مشتریان')}

{getText('testimonials_desc', 'تجربه استفاده از مکمل‌های دارویی کنینا از نگاه برترین کلینیک‌های دامپزشکی و سرپرستان پت در سراسر کشور.')}

{/* Testimonials Grid */} {isLoading ? (
{[1, 2, 3].map((i) => (
))}
) : (
{testimonials.map((item, index) => { const avatar = item.avatarUrl?.startsWith('http') ? item.avatarUrl : (item.avatarUrl ? `${BASE_DOMAIN}${item.avatarUrl}` : ''); return (
{/* Rating stars */}
{Array.from({ length: item.rating || 5 }).map((_, r) => ( ))}
{/* Content Quote */}

«{item.content}»

{/* Author footer */}
{avatar ? ( ) : ( )}

{item.authorName}

{item.roleTitle && (

{item.roleTitle}

)}
); })}
)}
); }