import { z } from 'zod' import { INVITE_CODE_MAX_LENGTH, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, } from '@/constants' const usernameSchema = z .string() .trim() .min(1, 'auth.validation.username.required') const captchaSchema = z .string() .trim() .min(1, 'auth.validation.captcha.required') const passwordSchema = z .string() .min(PASSWORD_MIN_LENGTH, 'auth.validation.password.min') .max(PASSWORD_MAX_LENGTH, 'auth.validation.password.max') export const loginFormSchema = z.object({ password: passwordSchema, username: usernameSchema, }) export const registerFormSchema = z .object({ captcha: captchaSchema, confirmPassword: passwordSchema, inviteCode: z .string() .trim() .min(1, 'auth.validation.inviteCode.required') .max(INVITE_CODE_MAX_LENGTH, 'auth.validation.inviteCode.max'), password: passwordSchema, mobile: usernameSchema, }) .refine((value) => value.password === value.confirmPassword, { message: 'auth.validation.confirmPassword.mismatch', path: ['confirmPassword'], }) export type LoginFormValues = z.infer export type RegisterFormValues = z.infer