diff --git a/apps/landing/src/app/contact/page.tsx b/apps/landing/src/app/contact/page.tsx new file mode 100644 index 00000000..0196d7ac --- /dev/null +++ b/apps/landing/src/app/contact/page.tsx @@ -0,0 +1,200 @@ +"use client"; + +import { FileText, Monitor, Shield } from "lucide-react"; +import type { FormEvent } from "react"; +import { useState } from "react"; + +import { FadeIn } from "@/components/fade-in"; +import { Footer } from "@/components/footer"; +import { Navbar } from "@/components/navbar"; + +const benefits = [ + { + icon: Monitor, + title: "Live Demo", + description: "See SnapOtter in action with a personalized walkthrough of all features.", + }, + { + icon: Shield, + title: "Deployment Support", + description: "Get expert help setting up SnapOtter on your infrastructure.", + }, + { + icon: FileText, + title: "Enterprise Licensing", + description: "Custom agreements for proprietary use, OEM, and commercial distribution.", + }, +]; + +const subjects = ["Book a Demo", "Enterprise Licensing", "Deployment Help", "General Inquiry"]; + +export default function ContactPage() { + const [name, setName] = useState(""); + const [email, setEmail] = useState(""); + const [company, setCompany] = useState(""); + const [subject, setSubject] = useState(subjects[0]); + const [message, setMessage] = useState(""); + + function handleSubmit(e: FormEvent) { + e.preventDefault(); + + const lines = [ + `Name: ${name}`, + company ? `Company: ${company}` : "", + `Email: ${email}`, + "", + message, + ] + .filter(Boolean) + .join("\n"); + + const mailto = `mailto:contact@snapotter.com?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(lines)}`; + window.location.href = mailto; + } + + return ( + <> + +
+
+
+ {/* Left column */} + +
+

Get in touch

+

+ Whether you need a demo, have questions about deployment, or want to discuss + enterprise licensing, we are here to help. +

+ +
+ {benefits.map((item) => ( +
+
+ +
+
+

{item.title}

+

+ {item.description} +

+
+
+ ))} +
+ +

+ Open source under AGPL-3.0. Commercial licenses available. +

+
+
+ + {/* Right column */} + +
+
+
+ + setName(e.target.value)} + className="w-full rounded-lg border border-border bg-background px-4 py-2.5 text-sm outline-none transition-colors focus:border-accent focus:ring-1 focus:ring-accent" + /> +
+ +
+ + setEmail(e.target.value)} + className="w-full rounded-lg border border-border bg-background px-4 py-2.5 text-sm outline-none transition-colors focus:border-accent focus:ring-1 focus:ring-accent" + /> +
+ +
+ + setCompany(e.target.value)} + className="w-full rounded-lg border border-border bg-background px-4 py-2.5 text-sm outline-none transition-colors focus:border-accent focus:ring-1 focus:ring-accent" + /> +
+ +
+ + +
+ +
+ +