38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { z } from "zod"
|
|
|
|
import { passwordValidator } from "@/utils/zod/passwordValidator"
|
|
import { phoneValidator } from "@/utils/zod/phoneValidator"
|
|
|
|
const countryRequiredMsg = "Country is required"
|
|
export const signUpSchema = z.object({
|
|
firstName: z.string().max(250).trim().min(1, {
|
|
message: "First name is required",
|
|
}),
|
|
lastName: z.string().max(250).trim().min(1, {
|
|
message: "Last name is required",
|
|
}),
|
|
email: z.string().max(250).email(),
|
|
phoneNumber: phoneValidator(
|
|
"Phone is required",
|
|
"Please enter a valid phone number"
|
|
),
|
|
dateOfBirth: z.string().min(1, {
|
|
message: "Date of birth is required",
|
|
}),
|
|
address: z.object({
|
|
countryCode: z
|
|
.string({
|
|
required_error: countryRequiredMsg,
|
|
invalid_type_error: countryRequiredMsg,
|
|
})
|
|
.min(1, countryRequiredMsg),
|
|
zipCode: z.string().min(1),
|
|
}),
|
|
password: passwordValidator("Password is required"),
|
|
termsAccepted: z.boolean().refine((value) => value === true, {
|
|
message: "You must accept the terms and conditions",
|
|
}),
|
|
})
|
|
|
|
export type SignUpSchema = z.infer<typeof signUpSchema>
|