diff --git a/src/pages/Contact.tsx b/src/pages/Contact.tsx new file mode 100644 index 0000000..d50a410 --- /dev/null +++ b/src/pages/Contact.tsx @@ -0,0 +1,140 @@ +import { useState } from "react"; +import { toast } from "sonner"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; +import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; +import { + ArrowRight, Mail, MapPin, Linkedin, Github, Twitter, CheckCircle2 +} from "lucide-react"; +import { useSaasMutation } from "@/hooks/use-tygarun"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; + +const faqs = [ + { q: "What is your typical project timeline?", a: "Most projects take 4-8 weeks depending on scope. I will provide a detailed timeline during our initial consultation." }, + { q: "What are your rates?", a: "I offer both project-based and retainer pricing. Rates depend on project scope and complexity. Let us chat to find the right fit." }, + { q: "Do you work with international clients?", a: "Absolutely! I work with clients worldwide and am comfortable with asynchronous communication across time zones." }, + { q: "What tools do you use?", a: "Figma for design, React/Next.js for development, and tools like Framer Motion, Tailwind CSS, and TypeScript for building modern interfaces." }, +]; + +export default function ContactPage() { + const [sending, setSending] = useState(false); + // Contact enquiries flow to tyga.run CRM (seed success until crm is live) + const { mutate: createLead } = useSaasMutation("crm", "/leads"); + + const handleContact = async (e: React.FormEvent) => { + e.preventDefault(); + const form = e.currentTarget; + const fd = new FormData(form); + setSending(true); + try { + await createLead({ + name: fd.get("name"), + email: fd.get("email"), + subject: fd.get("subject"), + message: fd.get("message"), + }); + toast.success("Message sent! I'll get back to you within 24 hours."); + form.reset(); + } catch (err) { + toast.error("Something went wrong. Please email me directly."); + } finally { + setSending(false); + } + }; + + return ( +
+
+ +
+
+

Let's Work Together

+

Have a project in mind? I would love to hear about it. Send me a message and I will get back to you within 24 hours.

+ +
+ {/* ── LEFT: Contact info ── */} +
+
+ {[ + { icon: Mail, label: "Email", value: "hello@alexrivera.dev" }, + { icon: MapPin, label: "Location", value: "San Francisco, CA" }, + { icon: Linkedin, label: "LinkedIn", value: "linkedin.com/in/alexrivera" }, + ].map((item, i) => ( +
+
+ +
+
+
{item.label}
+
{item.value}
+
+
+ ))} +
+
+ {[Github, Linkedin, Twitter].map((Icon, i) => ( + + + + ))} +
+
+ + {/* ── RIGHT: Form ── */} + + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ +