import React, { useCallback, useState } from 'react'; import { Link } from 'react-router-dom'; import { useAuth } from '../auth-context'; import ErrorBox from '../components/error-box'; import { SpinnerIcon } from '../components/icons'; import InfoBox from '../components/info-box'; import SupporterLogos from '../components/supporter-logos'; export const SignUp: React.FC = () => { const { isLoading, signup } = useAuth(); const [error, setError] = useState(undefined); const [username, setUsername] = useState(''); const [email, setEmail] = useState(''); const [confirmEmail, setConfirmEmail] = useState('') const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [confirmConditions, setConfirmConditions] = useState(false); const onSubmit = useCallback( e => { e.preventDefault(); signup({ username, email, confirmEmail, password }, setError); }, [username, email, confirmEmail, password, confirmConditions, signup] ); return (

Sign up


Please discuss suggestions for improvements and report issues or problems.

Create an account to start colouring in.

setUsername(e.target.value)} placeholder="not-your-real-name" required minLength={4} maxLength={29} pattern="\w+" title="Usernames can contain only letters, numbers and the underscore" /> setEmail(e.target.value)} placeholder="someone@example.com" /> setConfirmEmail(e.target.value)} /> setPassword(e.target.value)} required minLength={8} maxLength={128} />
setShowPassword(e.target.checked)} />
setConfirmConditions(e.target.checked)} required />
{isLoading && Sending sign up data...}
Please also read our data ethics policy before using or sharing our data Do you already have an account?
Log in

); };