Skip to main content

Basic

Basic Login Form

To craft a basic form, start by creating your form schema

import { z } from 'zod';

const loginSchema = z.object({
username: z.string().email({ message: 'Invalid username' }),
password: z.string().min(1, { message: 'Password is required' }),
remember: z.boolean(),
});

Define the schema type:

type Login = z.infer<typeof loginSchema>;

Create form and import SubmitHandler from react-hook-form

import { SubmitHandler } from 'react-hook-form';

export default function SignInForm() {
const onSubmit: SubmitHandler<Login> = (data) => {
console.log(data);
};

return (
<Form<Login> // schema type
validationSchema={loginSchema}
resetValues={reset}
onSubmit={onSubmit}
>
{({ register, formState: { errors } }) => (
<div className="space-y-5">
<Input
type="email"
size="lg"
label="Email"
placeholder="Enter your email"
color="info"
className="[&>label>span]:font-medium"
inputClassName="text-sm"
{...register('username')}
error={errors.username?.message}
/>
<Password
label="Password"
placeholder="Enter your password"
size="lg"
className="[&>label>span]:font-medium"
inputClassName="text-sm"
color="info"
{...register('password')}
error={errors.password?.message}
/>
<Button className="w-full" type="submit" size="lg" color="info">
<span>Sign in</span>{' '}
<PiArrowRightBold className="ms-2 mt-0.5 h-6 w-6" />
</Button>
</div>
)}
</Form>
);
}

This sets you up with a basic login form structure using react-hook-form and zod for schema validation.