"use client"; import Link from "next/link"; import { BadgeCheck, MessageSquareText } from "lucide-react"; import { useEffect, useState } from "react"; import { StarRating } from "@/components/product/star-rating"; type Review = { id: string; author_name: string; rating: number; title: string | null; content: string; created_at: string; verified_purchase: boolean }; // Reseñas de la ficha: solo las aprobadas por el dueño (el backend no // devuelve las pendientes), siempre de compradores verificados. export function ProductReviews({ productId }: { productId: string }) { const [data, setData] = useState<{ reviews: Review[]; average: number; count: number } | null>(null); useEffect(() => { fetch(`/api/reviews?product_id=${encodeURIComponent(productId)}`) .then((response) => response.json()) .then(setData) .catch(() => setData({ reviews: [], average: 0, count: 0 })); }, [productId]); return (

Reseñas de clientes

{!data ? (

Cargando reseñas…

) : data.count === 0 ? (
Aún no hay reseñas de este producto. ¿Ya lo compraste?{" "} Califícalo desde Mis pedidos.
) : ( <>
{data.average.toLocaleString("es-CO", { minimumFractionDigits: 1 })} de 5 · {data.count} {data.count === 1 ? "reseña" : "reseñas"}
)}
); }