import { AvatarImage, AvatarFallback, Avatar } from "@/components/ui/avatar"; import { Product, Review as ReviewType } from "@/lib/types"; import { FiveStarRating } from "./five-star-rating"; import { AIReviewSummary } from "./ai-review-summary"; export async function Reviews({ product }: { product: Product }) { // Sort reviews by date descending (newest first) const sortedReviews = [...product.reviews].sort( (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime() ); return (
{sortedReviews.map((review) => (
))}
); } export function Review({ review }: { review: ReviewType }) { const date = new Date(review.date); return (
CN

{review.authorName}

{review.review}

); } /** * You probably want to wrap the parent element of this component with `suppressHydrationWarning` */ const timeAgo = (date: Date, suffix = true) => { const now = new Date(); const seconds = Math.floor((now.getTime() - date.getTime()) / 1000); if (seconds < 60) return "Just now"; const minutes = Math.floor(seconds / 60); if (minutes < 60) return `${minutes} minute${ minutes !== 1 ? "s" : "" }${suffix ? " ago" : ""}`; const hours = Math.floor(minutes / 60); if (hours < 24) return `${hours} hour${hours !== 1 ? "s" : ""}${suffix ? " ago" : ""}`; const days = Math.floor(hours / 24); if (days < 30) return `${days} day${days !== 1 ? "s" : ""}${suffix ? " ago" : ""}`; const months = Math.floor(days / 30); if (months < 12) return `${months} month${months !== 1 ? "s" : ""}${suffix ? " ago" : ""}`; const years = Math.floor(months / 12); return `${years} year${years !== 1 ? "s" : ""}${suffix ? " ago" : ""}`; };