import { zodResolver } from '@hookform/resolvers/zod'; import { Box } from '@luke-ui/react/box'; import { Button } from '@luke-ui/react/button'; import { Cluster } from '@luke-ui/react/cluster'; import { Heading } from '@luke-ui/react/heading'; import { Stack } from '@luke-ui/react/stack'; import { Text } from '@luke-ui/react/text'; import { TextField } from '@luke-ui/react/text-field'; import { useState } from 'react'; import { Controller, useForm } from 'react-hook-form'; import * as z from 'zod'; const DIGIT_PATTERN = /\d/; const schema = z.object({ email: z.email('Enter an email address in the form you@example.com.'), password: z.string().refine((value) => value.length >= 8 && DIGIT_PATTERN.test(value), { message: 'At least 8 characters, including a number.', }), }); export default () => { const form = useForm({ defaultValues: { email: '', password: '' }, resolver: zodResolver(schema), }); const handleSubmit = form.handleSubmit((values) => { setSignedInAs(values.email); }); // Set on a valid submit only, so the confirmation never tracks keystrokes. const [signedInAs, setSignedInAs] = useState(null); return (
} > Sign in ( )} /> ( )} /> {signedInAs ? ( Signed in as {signedInAs} ) : null} ); };