import { Stack } from "@mui/material"; import { useTheme, Typography } from "@mui/material"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useForm, FormProvider } from "react-hook-form"; import { Dialog, TextField, Button } from "@/Components/inputs"; import { useInviteForm } from "@/Hooks/useInviteForm"; import type { InviteFormData } from "@/Validation/invite"; import { usePost } from "@/Hooks/UseApi"; import { LAYOUT } from "@/Utils/Theme/constants"; import { runtimeConfig } from "@/Utils/runtimeConfig"; import { FormTextField } from "@/Components/inputs/forms/FormTextField"; import { RoleSelectField } from "./RoleSelectField"; const CLIENT_HOST = runtimeConfig.clientHost || import.meta.env.VITE_APP_CLIENT_HOST; interface InviteResponse { token: string; } interface InviteTeamMemberDialogProps { open: boolean; onClose: () => void; } export const InviteTeamMemberDialog = ({ open, onClose, }: InviteTeamMemberDialogProps) => { const theme = useTheme(); const { t } = useTranslation(); const { resolver, defaults } = useInviteForm(); const form = useForm({ resolver, defaultValues: defaults, values: defaults, }); const { handleSubmit, reset } = form; const { post: generateToken, loading: generateLoading } = usePost< InviteFormData, InviteResponse >(); const { post: sendInvite, loading: sendLoading } = usePost< InviteFormData, InviteResponse >(); const [inviteLink, setInviteLink] = useState(null); const handleGenerateToken = async (data: InviteFormData) => { const result = await generateToken("/invite", data); if (result?.data?.token) { const token = result.data.token; const link = `${CLIENT_HOST || window.location.origin}/register/${token}`; setInviteLink(link); } }; const handleSendInvite = async (data: InviteFormData) => { const result = await sendInvite("/invite/send", data); if (result?.success) { handleClose(); } }; const handleClose = () => { reset(); setInviteLink(null); onClose(); }; return ( {t("common.buttons.generateToken")} } > {inviteLink && ( <> {t("pages.account.team.invite.linkLabel")} )} ); };