import { useState } from 'react' import { Button, Input, Label } from 'ui' const isValidEmail = (email: string): boolean => { const emailPattern = /^[\w-\.+]+@([\w-]+\.)+[\w-]{2,8}$/ return emailPattern.test(email) } const SecurityNewsletterForm = () => { const [firstName, setFirstName] = useState('') const [lastName, setLastName] = useState('') const [email, setEmail] = useState('') const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle') const [errorMessage, setErrorMessage] = useState('') const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setErrorMessage('') if (!firstName || !lastName || !email) { setErrorMessage('All fields are required.') return } if (!isValidEmail(email)) { setErrorMessage('Please enter a valid email address.') return } setStatus('loading') try { const res = await fetch('/api-v2/submit-form-security-newsletter', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ firstName, lastName, email }), }) if (!res.ok) { const data = await res.json() throw new Error(data.message || 'Something went wrong') } setStatus('success') } catch (err: any) { setStatus('error') setErrorMessage(err.message || 'Something went wrong. Please try again.') } } return (

Security Newsletter

Sign up for the Supabase Security Newsletter. Receive updates during security incidents.

{status === 'success' ? (

Thanks for subscribing! You'll receive security updates from Supabase.

) : (
setFirstName(e.target.value)} placeholder="First Name" required />
setLastName(e.target.value)} placeholder="Last Name" required />
setEmail(e.target.value)} placeholder="Email Address" required />
{errorMessage &&

{errorMessage}

}
)}
) } export default SecurityNewsletterForm