pagamio-frontend-commons-lib
Version:
Pagamio library for Frontend reusable components like the form engine and table container
40 lines (39 loc) • 1.54 kB
JavaScript
import { z } from 'zod';
export const loginFormSchema = z.object({
username: z
.string()
.min(1, { message: 'Username is required.' })
.max(255, { message: 'Username must be at most 255 characters long.' }),
password: z
.string()
.min(1, { message: 'Password is required.' })
.max(255, { message: 'Password must be at most 255 characters long.' }),
rememberMe: z.boolean().optional(),
});
export const signupFormSchema = z
.object({
firstName: z.string().min(1, 'First name is required'),
lastName: z.string().min(1, 'Last name is required'),
username: z.string().min(1, { message: 'Username is required.' }).min(8, 'Password confirmation is required'),
password: z
.string()
.min(8, { message: 'Be at least 8 characters long' })
.regex(/[a-zA-Z]/, { message: 'Contain at least one letter.' })
.regex(/\d/, { message: 'Contain at least one number.' })
.regex(/[^a-zA-Z0-9]/, {
message: 'Contain at least one special character.',
})
.trim(),
confirmPassword: z.string().min(8, 'Password confirmation is required'),
emailAddress: z.string().email({ message: 'Please enter a valid email.' }).trim(),
profile: z.string(),
role: z.string().optional(),
})
.refine((data) => data.password === data.confirmPassword, {
message: "Passwords don't match",
path: ['confirmPassword'],
})
.refine((data) => data.role, {
message: 'This field is required',
path: ['role'],
});