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}
);
}
/**
* 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" : ""}`;
};