import { z } from "zod"; // Register Schema export const registerSchema = z .object({ email: z.string().email("Invalid email address"), first_name: z.string().min(1, "First name is required"), last_name: z.string().min(1, "Last name is required"), phone_number: z.string().optional(), password: z.string().min(8, "Password must be at least 8 characters"), password2: z.string().min(8, "Password confirmation is required"), }) .refine((data) => data.password === data.password2, { message: "Passwords do not match", path: ["password2"], }); export type RegisterInput = z.infer; // Verify OTP Schema export const verifyOtpSchema = z.object({ email: z.string().email("Invalid email address"), otp: z.string().min(6, "OTP must be 6 digits").max(6, "OTP must be 6 digits"), }); export type VerifyOtpInput = z.infer; // Login Schema export const loginSchema = z.object({ email: z.string().email("Invalid email address"), password: z.string().min(1, "Password is required"), }); export type LoginInput = z.infer; // Resend OTP Schema export const resendOtpSchema = z.object({ email: z.string().email("Invalid email address"), context: z.enum(["registration", "password_reset"]).optional(), }); export type ResendOtpInput = z.infer; // Forgot Password Schema export const forgotPasswordSchema = z.object({ email: z.string().email("Invalid email address"), }); export type ForgotPasswordInput = z.infer; // Verify Password Reset OTP Schema export const verifyPasswordResetOtpSchema = z.object({ email: z.string().email("Invalid email address"), otp: z.string().min(6, "OTP must be 6 digits").max(6, "OTP must be 6 digits"), }); export type VerifyPasswordResetOtpInput = z.infer; // Reset Password Schema export const resetPasswordSchema = z .object({ email: z.string().email("Invalid email address"), otp: z.string().min(6, "OTP must be 6 digits").max(6, "OTP must be 6 digits"), new_password: z.string().min(8, "Password must be at least 8 characters"), confirm_password: z.string().min(8, "Password confirmation is required"), }) .refine((data) => data.new_password === data.confirm_password, { message: "Passwords do not match", path: ["confirm_password"], }); export type ResetPasswordInput = z.infer; // Token Refresh Schema export const tokenRefreshSchema = z.object({ refresh: z.string().min(1, "Refresh token is required"), }); export type TokenRefreshInput = z.infer; // Update Profile Schema export const updateProfileSchema = z.object({ first_name: z.string().min(1, "First name is required"), last_name: z.string().min(1, "Last name is required"), phone_number: z.string().optional(), }); export type UpdateProfileInput = z.infer;