import { useEffect, useState } from "react"; import { fetchReviews, addReview } from "./reviewsApi"; import type { Review } from "./reviewsApi"; import { Star } from "lucide-react"; const ReviewsSection = ({ cardClasses, textClasses, isDarkMode, }: { cardClasses: string; textClasses: string; isDarkMode: boolean; }) => { const [reviews, setReviews] = useState([]); const [name, setName] = useState(""); const [message, setMessage] = useState(""); const [rating, setRating] = useState(5); const [hoverRating, setHoverRating] = useState(0); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(""); const [isModalOpen, setIsModalOpen] = useState(false); useEffect(() => { fetchReviews().then(setReviews); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(""); setSuccess(""); try { await addReview({ name, message, rating }); setSuccess("Review submitted!"); setName(""); setMessage(""); setRating(5); setReviews(await fetchReviews()); // Close modal immediately after successful submission setIsModalOpen(false); } catch (err) { setError("Failed to submit review."); } finally { setLoading(false); } }; const openModal = () => { setIsModalOpen(true); setError(""); setSuccess(""); }; return (

Reviews

{/* Review Modal */} {isModalOpen && (

Share Your Review

{" "}
setName(e.target.value)} required />
{[1, 2, 3, 4, 5].map((star) => ( ))}