UNPKG

@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
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'], });