/* This is the form component to register an email adress to your mailing list. This is just the frontend, and the email will be send to our backend API (/api/mailingList) */ import Image from 'next/image'; import Mailing from 'public/landing/mailing.svg'; import axios from 'axios'; import { toast } from 'react-toastify'; import { useState } from 'react'; const MailingList = (): JSX.Element => { const [mail, setMail] = useState(''); const [loading, setLoading] = useState(false); const [valid, setValid] = useState(true); const validateEmail = (): void => { // Regex patern for email validation const regex = /^(([^\s"(),.:;<>@[\\\]]+(\.[^\s"(),.:;<>@[\\\]]+)*)|(".+"))@((\[(?:\d{1,3}\.){3}\d{1,3}])|(([\dA-Za-z\-]+\.)+[A-Za-z]{2,}))$/; if (regex.test(mail)) { // this is a valid email address void subscribe(); setValid(true); } else { // invalid email. toast.error('Your email is invalid'); setValid(false); } }; const subscribe = async (): Promise => { setLoading(true); const data = await axios.put('api/mailingList', { mail, }); if (data.status === 200) { toast.success('You have been added to our mailing list. Welcome 👋'); setLoading(false); setMail(''); } else { toast.error('Something went wrong'); setLoading(false); } }; return (

Stay Tuned

Mail
{ setMail(event.target.value); }} type="email" placeholder="Your email" className={`input input-primary input-bordered ${ valid ? '' : 'input-error' }`} />
); }; export default MailingList;