import React, { type ReactElement, type ElementType, useState } from 'react'; import { Box, Button, CircularProgress, Dialog, DialogContent, DialogTitle, IconButton, TextField, Typography, } from '@mui/material'; import Slide from '@mui/material/Slide'; import type { TransitionProps } from '@mui/material/transitions'; import { CloseCircle } from 'iconsax-react'; import { Icon } from '@rkheftan/harmony-ui'; import { type SocialMediaDialogProps } from '@/features/profile/types/settingsType'; import { isEmail } from '@/utils/regexes/isEmail'; const MobileSlide = React.forwardRef(function MobileSlide( props: TransitionProps & { children: ReactElement }, ref: React.Ref, ) { return ; }); export default function SocialMediaDialog({ open, onClose, t, emailInput, setEmailInput, fullScreen, verificationCode, setVerificationCode, isLoading, dialogStep, onSendCode, onConfirmEmail, }: SocialMediaDialogProps) { const [emailError, setEmailError] = useState(); const [touched, setTouched] = useState(false); const validateEmail = (value: string) => { if (!value) { setEmailError(t('settingForm.thisFieldIsRequired')); return false; } if (!isEmail(value)) { setEmailError(t('settingForm.emailIsInvalid')); return false; } setEmailError(undefined); return true; }; const handleSubmit: React.FormEventHandler = (e) => { e.preventDefault(); e.stopPropagation(); if (isLoading) return; if (dialogStep === 'enterEmail') { setTouched(true); if (!validateEmail(emailInput)) return; onSendCode(); } else { onConfirmEmail(); } }; return ( {t('settingForm.addEmailButton')} {t('settingForm.newEmail')} {t('settingForm.dialogHeader')} { setEmailInput(e.target.value); if (touched) validateEmail(e.target.value); }} onBlur={() => { setTouched(true); validateEmail(emailInput); }} label={t('settingForm.email')} placeholder="abc@email.com" autoComplete="email" inputMode="email" sx={{ '& .MuiOutlinedInput-root': { borderRadius: 1 }, mt: 1 }} autoFocus={dialogStep === 'enterEmail'} disabled={isLoading || dialogStep === 'enterCode'} error={touched && !!emailError} helperText={touched && emailError ? emailError : ' '} /> {dialogStep === 'enterCode' && ( setVerificationCode(e.target.value)} label={t('settingForm.verificationCode')} autoComplete="one-time-code" inputMode="numeric" sx={{ '& .MuiOutlinedInput-root': { borderRadius: 1 } }} autoFocus disabled={isLoading} /> )} ); }