import { z } from "zod";

/** Esquema compartido por el formulario (cliente) y el servidor. */
export const loginSchema = z.object({
  email: z
    .string()
    .trim()
    .min(1, "Ingresa tu email")
    .max(254, "Email demasiado largo")
    .pipe(z.email("Email inválido"))
    .transform((value) => value.toLowerCase()),
  password: z.string().min(1, "Ingresa tu contraseña").max(128, "Contraseña demasiado larga"),
});

export type LoginInput = z.infer<typeof loginSchema>;

export const PASSWORD_POLICY_MESSAGE =
  "La contraseña debe tener entre 10 y 128 caracteres, con al menos una letra y un número.";

export const newPasswordSchema = z
  .string()
  .min(10, PASSWORD_POLICY_MESSAGE)
  .max(128, PASSWORD_POLICY_MESSAGE)
  .refine(
    (value) => /[A-Za-zÁÉÍÓÚáéíóúÑñ]/.test(value) && /\d/.test(value),
    PASSWORD_POLICY_MESSAGE,
  );
