import { z } from 'zod'; // --------------------------------------------------------------------------- // Login // --------------------------------------------------------------------------- export const loginSchema = z.object({ username: z.string().min(1, 'Username or email is required'), password: z.string().min(1, 'Password is required'), }); export type LoginFormData = z.infer; // --------------------------------------------------------------------------- // Register // --------------------------------------------------------------------------- export const registerSchema = z .object({ first_name: z.string().min(1, 'First name is required').max(150), last_name: z.string().min(1, 'Last name is required').max(150), username: z .string() .min(3, 'Username must be at least 3 characters') .max(150), email: z.string().email('Invalid email address').max(254), password: z.string().min(8, 'Password must be at least 8 characters'), confirm_password: z.string(), }) .refine((data) => data.password === data.confirm_password, { message: "Passwords don't match", path: ['confirm_password'], }); export type RegisterFormData = z.infer; // --------------------------------------------------------------------------- // Verify email // --------------------------------------------------------------------------- export const verifyEmailSchema = z.object({ code: z.string().length(6, 'Code must be 6 digits'), }); export type VerifyEmailFormData = z.infer; // --------------------------------------------------------------------------- // Forgot password // --------------------------------------------------------------------------- export const forgotPasswordSchema = z.object({ email: z.string().email('Invalid email address'), }); export type ForgotPasswordFormData = z.infer; // --------------------------------------------------------------------------- // Verify reset code // --------------------------------------------------------------------------- export const verifyResetCodeSchema = z.object({ email: z.string().email(), code: z.string().length(6, 'Code must be 6 digits'), }); export type VerifyResetCodeFormData = z.infer; // --------------------------------------------------------------------------- // Reset password // --------------------------------------------------------------------------- export const resetPasswordSchema = z .object({ email: z.string().email(), code: z.string(), new_password: z.string().min(8, 'Password must be at least 8 characters'), confirm_password: z.string(), }) .refine((data) => data.new_password === data.confirm_password, { message: "Passwords don't match", path: ['confirm_password'], }); export type ResetPasswordFormData = z.infer;