import { Stack } from "@mui/material"; import { useTheme } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useForm, FormProvider } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod/dist/zod.js"; import { Dialog } from "@/Components/inputs"; import { useAddTeamMemberForm } from "@/Hooks/useAddTeamMemberForm"; import type { AddTeamMemberFormData } from "@/Validation/addTeamMember"; import type { User } from "@/Types/User"; import { usePost } from "@/Hooks/UseApi"; import { LAYOUT } from "@/Utils/Theme/constants"; import { FormTextField } from "@/Components/inputs/forms/FormTextField"; import { RoleSelectField } from "./RoleSelectField"; interface AddTeamMemberDialogProps { open: boolean; onClose: () => void; onSuccess?: () => void; } interface RegisterPayload { firstName: string; lastName: string; email: string; password: string; role: string[]; } export const AddTeamMemberDialog = ({ open, onClose, onSuccess, }: AddTeamMemberDialogProps) => { const theme = useTheme(); const { t } = useTranslation(); const { schema, defaults } = useAddTeamMemberForm(); const { post, loading } = usePost(); const form = useForm({ resolver: zodResolver(schema), defaultValues: defaults, values: defaults, }); const { handleSubmit, reset, setError } = form; const handleClose = () => { reset(); onClose(); }; const onSubmit = async (data: AddTeamMemberFormData) => { if (loading) return; const { confirm: _confirm, ...userData } = data; const payload: RegisterPayload = userData; const result = await post("/auth/users", payload); if (result?.success) { reset(); onClose(); onSuccess?.(); } else if (result?.msg) { if (result.msg.toLowerCase().includes("email")) { setError("email", { message: result.msg }); } } }; return ( ); };