"use client" import Image from "next/image" import { Button } from "@/components/ui/button" import { useLanguage } from "@/lib/language-context" import { useEffect, useState } from "react" import { ChevronLeft, ChevronRight } from "lucide-react" import { cn } from "@/lib/utils" export default function Footer() { const { t, language } = useLanguage() const year = new Date().getFullYear().toString() const [ratingsData, setRatingsData] = useState(null) const [allReviews, setAllReviews] = useState([]) const [currentPage, setCurrentPage] = useState(0) const [isTransitioning, setIsTransitioning] = useState(false) const reviewsPerPage = 2 useEffect(() => { const fetchRatings = async () => { try { const response = await fetch(`/ratings_${language}.json`) const data = await response.json() setRatingsData(data) const reviews = data?.data?.[0]?.reviews ?? [] setAllReviews(reviews) } catch (error) { console.error("Error fetching ratings:", error) } } fetchRatings() }, [language]) const totalPages = Math.ceil(allReviews.length / reviewsPerPage) const handlePageChange = (direction: 'next' | 'prev') => { if (isTransitioning) return setIsTransitioning(true) setTimeout(() => { if (direction === 'next') { setCurrentPage((prev) => (prev + 1) % totalPages) } else { setCurrentPage((prev) => (prev - 1 + totalPages) % totalPages) } setIsTransitioning(false) }, 300) } const currentReviews = allReviews.slice( currentPage * reviewsPerPage, (currentPage + 1) * reviewsPerPage ) const ratingValue = ratingsData?.data?.[0]?.rating ?? 5.0 const ratingCount = ratingsData?.data?.[0]?.userRatingCount ?? 0 const ratingPercent = Math.max(0, Math.min(100, (ratingValue / 5) * 100)) const reviewUrl = "https://g.page/r/CRltVP4lAy7lEBM/review" const reviewPreviewText = (text: string) => (text.length > 140 ? `${text.slice(0, 140).trimEnd()}...` : text) const reviewStars = (value: number) => { const safe = Math.max(0, Math.min(5, Math.round(value))) return "★".repeat(safe) + "☆".repeat(5 - safe) } return (

{t.footer.ready}

{t.footer.description}

{t.footer.reviewsTitle}
{totalPages > 1 && (
{currentPage + 1} / {totalPages}
)}
{ratingValue.toFixed(1)}
{ratingCount} {t.hero.rating}
{currentReviews.map((review, idx) => (
{reviewStars(review.rating ?? 5)}
{review.author ?? "Google Reviewer"}

"{reviewPreviewText(review.text ?? "")}"

))}
{t.footer.reviewsCta}
{Array.from({ length: totalPages }).map((_, i) => (
))}
{t.footer.copyright.replace("{year}", year)} {t.footer.rights}
{t.footer.seoLine}
) }