'use client' import { useState } from 'react' import { Loader2, Send } from 'lucide-react' import { motion } from 'framer-motion' export default function ContactForm() { const [isLoading, setIsLoading] = useState(false) const [status, setStatus] = useState<'idle' | 'success' | 'error'>('idle') async function handleSubmit(e: React.FormEvent) { e.preventDefault() setIsLoading(true) // Simulate network request await new Promise(resolve => setTimeout(resolve, 1000)) const formData = new FormData(e.currentTarget) const data = Object.fromEntries(formData.entries()) // Construct mailto link as fallback since we don't have a backend const subject = encodeURIComponent(`Contact Form: ${data.subject}`) const body = encodeURIComponent(`Name: ${data.name}\nEmail: ${data.email}\n\nMessage:\n${data.message}`) window.location.href = `mailto:hello@thealtstack.com?subject=${subject}&body=${body}` setIsLoading(false) setStatus('success') } return (

Get in Touch

Have a question regarding self-hosting or the AltStack? We're here to help.