import { FC, useState, memo } from 'react' import Link from 'next/link' import Image from 'next/image' import { Button, Form, Input, IconMinimize2, IconMaximize2, IconGitHub, IconTwitter, } from '@supabase/ui' import supabaseClient from '../client' import { useTheme } from '../lib/ThemeProvider' interface Props {} const WaitlistPopover: FC = ({}) => { const { isDarkMode } = useTheme() const [isExpanded, setIsExpanded] = useState(true) const [isSuccess, setIsSuccess] = useState(false) const [error, setError] = useState() const initialValues = { email: '' } const getGeneratedTweet = () => { return `Join me to experience Realtime by Supabase!%0A%0A${window.location.href}` } const onValidate = (values: any) => { const errors = {} as any const emailValidateRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ if (!emailValidateRegex.test(values.email)) errors.email = 'Please enter a valid email' return errors } const onSubmit = async (values: any, { setSubmitting, resetForm }: any) => { setIsSuccess(false) setError(undefined) setSubmitting(true) const { error } = await supabaseClient.from('waitlist').insert([{ email: values.email }]) if (!error) { resetForm() setIsSuccess(true) } else { setError(error) } setSubmitting(false) } return (
supabase

/

Realtime

{isExpanded ? ( setIsExpanded(false)} /> ) : ( setIsExpanded(true)} /> )}

Realtime

Realtime collaborative app to display broadcast, presence, and database listening over WebSockets

Realtime Multiplayer by Supabase - Easily build real-time apps that enables user collaboration | Product Hunt
{({ isSubmitting }: any) => { return ( <> Get early access , ]} /> {isSuccess && (

Thank you for submitting your interest!

)} {error?.message.includes('duplicate key') && (

Email has already been registered for waitlist

)} {error && !error?.message.includes('duplicate key') && (

Unable to register email for waitlist

)} ) }}
) } export default memo(WaitlistPopover)