From c74fad179379260dcf46edeae22c1f04ee842508 Mon Sep 17 00:00:00 2001 From: Ashelyn Rose Date: Sat, 2 Dec 2023 16:29:03 -0700 Subject: Manual static image optimization --- components/ContactForm.tsx | 69 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 components/ContactForm.tsx (limited to 'components/ContactForm.tsx') diff --git a/components/ContactForm.tsx b/components/ContactForm.tsx new file mode 100644 index 0000000..a64cb85 --- /dev/null +++ b/components/ContactForm.tsx @@ -0,0 +1,69 @@ +'use client' + +import styles from '~/styles/form.module.css' + +const submitUrl = 'https://contact.tempest.dev/api/contact/me' +import { useState, useRef, FormEvent } from 'react' + +export default function ContactForm() { + const [submitting, setSubmitting] = useState(false) + const [status, setStatus] = useState('') + + const nameRef = useRef() + const emailRef = useRef() + const messageRef = useRef() + + const submit = async (ev: FormEvent) => { + ev.preventDefault() + + setStatus('') + + const name = nameRef.current.value + const email = emailRef.current.value + const message = messageRef.current.value + + if (!name) setStatus(s => s + ' Name required.') + if (!email) setStatus(s => s + ' Email required.') + if (!message) setStatus(s => s + ' Message required.') + + if (!name || !email || !message) + return + + setSubmitting(true) + + try { + + await fetch(submitUrl, { + method: 'post', + headers: { + 'content-type': 'application/json' + }, + body: JSON.stringify({ + name, email, message + }) + }) + + setStatus('Message sent successfully') + } catch { + setStatus('Error submitting message, please try again') + } finally { + setSubmitting(false) + } + } + + return ( +
+ + + + + + + +