import * as v from 'valibot' export const loginSchema = v.object({ login: v.pipe(v.string('Email or username is required'), v.nonEmpty('Email or username is required')), password: v.pipe(v.string('Password is required'), v.nonEmpty('Password is required')), remember: v.optional(v.boolean()), }) export const registerSchema = v.pipe( v.object({ username: v.pipe( v.string('Username is required'), v.nonEmpty('Username is required'), v.minLength(3, 'Username must be at least 3 characters'), v.regex(/^[\w-]+$/, 'Username can only contain letters, numbers, dashes and underscores'), ), first_name: v.pipe(v.string('First name is required'), v.nonEmpty('First name is required')), last_name: v.pipe(v.string('Last name is required'), v.nonEmpty('Last name is required')), email: v.pipe(v.string('Email is required'), v.nonEmpty('Email is required'), v.email('Please enter a valid email')), password: v.pipe(v.string('Password is required'), v.nonEmpty('Password is required'), v.minLength(8, 'Password must be at least 8 characters')), password_confirmation: v.pipe(v.string('Please confirm your password'), v.nonEmpty('Please confirm your password')), }), v.forward( v.partialCheck( [['password'], ['password_confirmation']], input => input.password === input.password_confirmation, 'Passwords do not match', ), ['password_confirmation'], ), ) export const forgotPasswordSchema = v.object({ email: v.pipe(v.string('Email is required'), v.nonEmpty('Email is required'), v.email('Please enter a valid email')), }) export const resetPasswordSchema = v.pipe( v.object({ email: v.pipe(v.string('Email is required'), v.nonEmpty('Email is required'), v.email('Please enter a valid email')), password: v.pipe(v.string('Password is required'), v.nonEmpty('Password is required'), v.minLength(8, 'Password must be at least 8 characters')), password_confirmation: v.pipe(v.string('Please confirm your password'), v.nonEmpty('Please confirm your password')), }), v.forward( v.partialCheck( [['password'], ['password_confirmation']], input => input.password === input.password_confirmation, 'Passwords do not match', ), ['password_confirmation'], ), ) export const completeProfileSchema = v.object({ username: v.pipe( v.string('Username is required'), v.nonEmpty('Username is required'), v.minLength(3, 'Username must be at least 3 characters'), v.regex(/^[\w-]+$/, 'Username can only contain letters, numbers, dashes and underscores'), ), first_name: v.pipe(v.string('First name is required'), v.nonEmpty('First name is required')), last_name: v.pipe(v.string('Last name is required'), v.nonEmpty('Last name is required')), })