diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index 38f1ef16..c6ce2d3b 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -1,11 +1,31 @@ "use client"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import Link from "next/link"; -import { Github, Twitter, Instagram, Linkedin, ArrowRight, ShieldCheck, Zap, Globe, ExternalLink, Lock, Mail } from "lucide-react"; +import { Github, Twitter, Instagram, Linkedin, ArrowRight, ShieldCheck, Zap, Globe, ExternalLink, Lock, Mail, CheckCircle, XCircle, X } from "lucide-react"; export default function Footer() { const [isExpanded, setIsExpanded] = useState(false); + const [email, setEmail] = useState(""); + const [toast, setToast] = useState<{ message: string; type: "success" | "error" } | null>(null); + + useEffect(() => { + if (!toast) return; + const timer = setTimeout(() => setToast(null), 3500); + return () => clearTimeout(timer); + }, [toast]); + + const handleSubscribe = (e: React.FormEvent) => { + e.preventDefault(); + const trimmed = email.trim(); + if (!trimmed || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed)) { + setToast({ message: "Please enter a valid email address.", type: "error" }); + return; + } + setToast({ message: "You're subscribed! Thanks for staying updated", type: "success" }); + setEmail(""); + setIsExpanded(false); + }; return ( ); }