import React, { useState } from "react"; import { Mail, Send, Check, Loader2, Sparkles } from "lucide-react"; import { subscribeNewsletter } from "../lib/firebaseService"; interface NewsletterSignupProps { darkMode: boolean; } export default function NewsletterSignup({ darkMode }: NewsletterSignupProps) { const [email, setEmail] = useState(""); const [loading, setLoading] = useState(false); const [status, setStatus] = useState<"idle" | "success" | "error">("idle"); const [errorMessage, setErrorMessage] = useState(""); const handleSubscribe = async (e: React.FormEvent) => { e.preventDefault(); if (!email.trim()) return; setLoading(true); setStatus("idle"); setErrorMessage(""); try { await subscribeNewsletter(email); setStatus("success"); setEmail(""); } catch (err: any) { console.error("Subscription failed:", err); setStatus("error"); // Extract a descriptive human error message let msg = "Something went wrong. Please check your network or try again."; if (err instanceof Error) { try { const parsed = JSON.parse(err.message); if (parsed.error) { msg = parsed.error; } } catch { msg = err.message; } } setErrorMessage(msg); } finally { setLoading(false); } }; return (
); }