// Reviews — static Google testimonials + custom partial-fill star rating widget const reviewsDS = window.ThaiVillageCuisineDesignSystem_bfe0b3; // Custom 5-star rating with accurate per-star fractional fill (gap-independent) function StarRating({ value = 0, size = 22, gap = 3, empty = 'var(--cream-300)', fill = '#F5A623' }) { const STAR = 'M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'; const Star = ({ frac }) => (
); return (
{[0, 1, 2, 3, 4].map((i) => )}
); } // Google 'G' mark (nominative use, for linking to the Google listing) function GoogleG({ size = 18 }) { return ( ); } function QuoteMark() { return ( ); } function ReviewCard({ quote, source }) { return (
{quote}
{source}
); } function Reviews() { const { SectionHeading } = reviewsDS; const { REVIEWS = [], GOOGLE_RATING = 0, GOOGLE_REVIEW_COUNT = 0, GOOGLE_REVIEWS_URL = '#', GOOGLE_WRITE_REVIEW_URL = '#', } = window; return (
{/* Rating summary widget */}
{Number(GOOGLE_RATING).toFixed(1)}
Google Rating
Based on {Number(GOOGLE_REVIEW_COUNT).toLocaleString()} reviews
{/* Review cards */}
{REVIEWS.map((r, i) => )}

Reviews are from Google. Google and the Google logo are trademarks of Google LLC.

); } window.Reviews = Reviews;