import Page from 'site/components/wrappers/page.js' import useApp from 'site/hooks/useApp.js' import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { useTranslation } from 'next-i18next' import Layout from 'site/components/layouts/bare' import Link from 'next/link' import { useState } from 'react' import { validateEmail, validateTld } from 'shared/utils.mjs' import SusiWrapper from 'site/components/wrappers/susi.js' import { signUp } from 'shared/backend.mjs' import Spinner from 'shared/components/icons/spinner.js' const DarkLink = ({ href, txt }) => ( {txt} ) const SignUpPage = (props) => { const app = useApp(props) const { t } = useTranslation(['susi', 'loader', 'errors']) const [email, setEmail] = useState('') const [emailValid, setEmailValid] = useState(false) const [result, setResult] = useState({ result: 'success' }) //const [error, setError] = useState(null) const updateEmail = (evt) => { const value = evt.target.value setEmail(value) const valid = (validateEmail(value) && validateTld(value)) || false setEmailValid(valid === true ? true : false) } const signupHandler = async (evt) => { evt.preventDefault() if (!emailValid) return let res try { res = await signUp({ email, language: app.locale, setResult, ...app.loadHelpers, }) } catch (err) { setError(app.error(err)) } // Do something clever next console.log(res) } const loadingClasses = app.loading ? 'opacity-50' : '' return (

{result ? ( result.result === 'success' ? ( {t('emailSent')}! ) : ( {t('errors.something')}! ) ) : ( {t('joinFreeSewing')}! )}

{t('toReceiveSignupLink')}:

{t('alreadyHaveAnAccount')}

) } export default SignUpPage export async function getStaticProps({ locale }) { return { props: { ...(await serverSideTranslations(locale)), }, } }