"use client"; import { motion, useInView } from "framer-motion"; import { useEffect, useRef, useState } from "react"; import { Send } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Card, CardContent } from "@/components/ui/card"; import { toast } from "sonner"; export function ContactSection() { const ref = useRef(null); const isInView = useInView(ref, { once: true, margin: "-100px" }); const [isDark, setIsDark] = useState(false); const [formData, setFormData] = useState({ name: "", email: "", phone: "", message: "", }); // Sync with global theme class like Navbar/Hero/About useEffect(() => { const sync = () => setIsDark(document.documentElement.classList.contains("dark")); sync(); const observer = new MutationObserver(sync); observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] }); return () => observer.disconnect(); }, []); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); toast("Message Received", { description: "Thank you for reaching out. We'll get back to you soon!", }); setFormData({ name: "", email: "", phone: "", message: "" }); }; return (
{/* Theme sync like Hero/About/Navbar */}
{!isDark && (
)} {isDark && (
)} {/* Subtle animated blobs */}

Get in Touch

Ready to start your journey? Reach out to schedule a consultation.

{/* Left: Illustration replacing cards */} {/* Use a high-quality, license-friendly illustration */}
Contact illustration

Let's Begin Your Healing Journey

Taking the first step toward therapy can feel daunting, but you're not alone. I'm here to support you through every stage of your journey toward wellness and growth.

{/* Right: Contact form */}

Send a Message

setFormData({ ...formData, name: e.target.value })} required className="bg-card text-foreground dark:text-zinc-100 placeholder:text-muted-foreground dark:placeholder:text-zinc-400 border-border focus-visible:ring-rose-500" />
setFormData({ ...formData, email: e.target.value })} required className="bg-card text-foreground dark:text-zinc-100 placeholder:text-muted-foreground dark:placeholder:text-zinc-400 border-border focus-visible:ring-rose-500" />
setFormData({ ...formData, phone: e.target.value })} className="bg-card text-foreground dark:text-zinc-100 placeholder:text-muted-foreground dark:placeholder:text-zinc-400 border-border focus-visible:ring-rose-500" />