function RegistrationForm() {
const [errors, setErrors] = React.useState<Record<string, string>>();
async function handleSubmit(values: { username: string; email: string }) {
const response = await fetch('/api/register', {
method: 'POST',
body: JSON.stringify(values),
});
if (!response.ok) {
const { errors } = await response.json();
setErrors(errors);
return;
}
// Success
console.log('Registered!');
}
return (
<Form onFormSubmit={handleSubmit} errors={errors}>
<Field.Root name="username">
<Field.Label>Username</Field.Label>
<Field.Control required />
<Field.Error match="valueMissing">Username is required</Field.Error>
{/* Server error automatically displayed when errors.username is set */}
</Field.Root>
<Field.Root name="email">
<Field.Label>Email</Field.Label>
<Field.Control type="email" required />
<Field.Error match="valueMissing">Email is required</Field.Error>
<Field.Error match="typeMismatch">Invalid email</Field.Error>
</Field.Root>
<button type="submit">Register</button>
</Form>
);
}