import { z } from "zod";
import type { Messages } from "@/shared/i18n/config";

/**
 * Single schema for both the invite and edit dialogs. `status` is only present
 * (and rendered) in edit mode — invite never sends a status.
 */
export const internalUserFormSchema = (t: Messages) =>
  z.object({
    full_name: z.string().min(1, t.validation.fullNameRequired),
    email: z.string().min(1, t.validation.emailRequired).email(t.validation.emailInvalid),
    role: z.string().min(1, t.validation.roleRequired),
    status: z.enum(["active", "invited", "suspended"]).optional(),
  });

export type InternalUserFormValues = z.infer<ReturnType<typeof internalUserFormSchema>>;
