UNPKG

create-nova-vite-template

Version:

This is a dashboard template built with React and Vite. It provides a modern and responsive user interface for building web applications.

212 lines (202 loc) 5.53 kB
import { RcFile } from "antd/es/upload"; export interface Auth { emailOrPhone: string; email: string; userName: string; password: string; otp: string; newPassword: string; confirmPassword: string; UserPassword: string; ConfirmUserPassword: string; brandName: string; phoneNumber: number; bio: string; brandIcon: RcFile | undefined | File; commercialRegister: RcFile | undefined; taxId: RcFile | undefined; homeAddress: string; jobTitle: string; fullName: string; companyName: string; } export interface MerchantInfo { name: string; password: string; confirmPassword: string; email: string; phoneNumber: number; bio: string; } export interface UserInfo { userName: string; password: string; confirmPassword: string; email: string; phoneNumber: number; homeAddress: string; } const ValidationSchema = { emailOrPhone: { required: "This field is required", pattern: { value: /^[^\s@]+@[^\s@]+\.[^\s@]+$|^\d{11}$/, message: "Enter a valid email address or a 11-digit phone number", }, }, email: { required: "This field is required", pattern: { value: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, message: "The email address you entered is not found, please enter the correct email address.", }, }, passwordLogin: { required: "This field is required", }, passwordLength: { required: "Password is required", minLength: { value: 8, message: "Password must be at least 8 characters long", }, pattern: { value: /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&#])[A-Za-z\d@$!%*?&]{8,}$/, message: "Password must include uppercase, lowercase, number, and special character", }, }, otp: { required: "OTP is required", pattern: { value: /^\d{4}$/, message: "OTP must be a 4-digit number", }, }, NewPassword: { required: "New password is required", validate: { hasUppercase: (value: string) => /[A-Z]/.test(value) || "Password must include at least one uppercase letter", hasEightCharacters: (value: string) => value?.length >= 8 || "Password must be at least 8 characters long", hasNumber: (value: string) => /\d/.test(value) || "Password must include at least one number", }, }, confirmPassword: (watch: (field: string) => string) => ({ required: "Confirm password is required", validate: { matchesPassword: (value: string) => value === watch("newPassword") || "Passwords do not match", }, }), UserPassword: { required: "New password is required", validate: { hasUppercase: (value: string) => /[A-Z]/.test(value) || "Password must include at least one uppercase letter", hasEightCharacters: (value: string) => value?.length >= 8 || "Password must be at least 8 characters long", hasNumber: (value: string) => /\d/.test(value) || "Password must include at least one number", }, }, ConfirmUserPassword: (watch: (field: string) => string) => ({ required: "Confirm password is required", validate: { matchesPassword: (value: string) => value === watch("UserPassword") || "Passwords do not match", }, }), brandName: { required: "Brand name is required", minLength: { value: 2, message: "Brand name must be at least 2 characters long", }, maxLength: { value: 50, message: "Brand name cannot exceed 50 characters", }, }, phoneNumber: { required: "Phone number is required", pattern: { value: /^\d{11}$/, message: "Phone number must be 11 digits", }, }, bio: { required: "Bio is required", }, brandIcon: { required: "Brand icon is required", }, commercialRegister: { required: "Commercial Register document is required", }, taxId: { required: "Tax ID document is required", }, userName: { required: "user name is required", minLength: { value: 4, message: "user name must be at least 2 characters long", }, maxLength: { value: 15, message: "Brand name cannot exceed 15 characters", }, }, fullName: { required: "full name is required", minLength: { value: 4, message: "user name must be at least 2 characters long", }, maxLength: { value: 15, message: "Brand name cannot exceed 15 characters", }, }, jobTitle: { required: "job title is required", minLength: { value: 4, message: "user name must be at least 2 characters long", }, maxLength: { value: 15, message: "Brand name cannot exceed 15 characters", }, }, companyName: { required: "company name is required", minLength: { value: 4, message: "user name must be at least 2 characters long", }, maxLength: { value: 15, message: "Brand name cannot exceed 15 characters", }, }, homeAddress: { required: "Home address is required", minLength: { value: 4, message: "Home address must be at least 2 characters long", }, maxLength: { value: 30, message: "Home address cannot exceed 15 characters", }, }, }; export default ValidationSchema;