'use client' // React Imports import { useState } from 'react' // MUI Imports import Card from '@mui/material/Card' import Grid from '@mui/material/Grid2' import CardContent from '@mui/material/CardContent' import Stepper from '@mui/material/Stepper' import Step from '@mui/material/Step' import StepLabel from '@mui/material/StepLabel' import Typography from '@mui/material/Typography' import Button from '@mui/material/Button' import MenuItem from '@mui/material/MenuItem' import InputAdornment from '@mui/material/InputAdornment' import IconButton from '@mui/material/IconButton' // Third-party Imports import { toast } from 'react-toastify' // Component Imports import DirectionalIcon from '@components/DirectionalIcon' import CustomTextField from '@core/components/mui/TextField' // Styled Component Imports import StepperWrapper from '@core/styles/stepper' import StepperCustomDot from '@components/stepper-dot' type FormDataType = { username: string email: string password: string isPasswordShown: boolean confirmPassword: string isConfirmPasswordShown: boolean firstName: string lastName: string country: string language: string[] twitter: string facebook: string instagram: string github: string } // Vars const steps = [ { title: 'Account Details', subtitle: 'Enter your account details' }, { title: 'Personal Info', subtitle: 'Setup Information' }, { title: 'Social Links', subtitle: 'Add Social Links' } ] const StepperAlternativeLabel = () => { // States const [activeStep, setActiveStep] = useState(0) const [formData, setFormData] = useState({ username: '', email: '', password: '', isPasswordShown: false, confirmPassword: '', isConfirmPasswordShown: false, firstName: '', lastName: '', country: '', language: [], twitter: '', facebook: '', instagram: '', github: '' }) const handleClickShowPassword = () => setFormData(show => ({ ...show, isPasswordShown: !show.isPasswordShown })) const handleClickShowConfirmPassword = () => setFormData(show => ({ ...show, isConfirmPasswordShown: !show.isConfirmPasswordShown })) const handleReset = () => { setActiveStep(0) setFormData({ username: '', email: '', password: '', isPasswordShown: false, confirmPassword: '', isConfirmPasswordShown: false, firstName: '', lastName: '', country: '', language: [], twitter: '', facebook: '', instagram: '', github: '' }) } const handleNext = () => { setActiveStep(prevActiveStep => prevActiveStep + 1) if (activeStep === steps.length - 1) { toast.success('Form Submitted') } } const handleBack = () => { setActiveStep(prevActiveStep => prevActiveStep - 1) } const renderStepContent = (activeStep: number) => { switch (activeStep) { case 0: return ( <> setFormData({ ...formData, username: e.target.value })} /> setFormData({ ...formData, email: e.target.value })} /> setFormData({ ...formData, password: e.target.value })} slotProps={{ input: { endAdornment: ( e.preventDefault()} aria-label='toggle password visibility' > ) } }} /> setFormData({ ...formData, confirmPassword: e.target.value })} slotProps={{ input: { endAdornment: ( e.preventDefault()} aria-label='toggle confirm password visibility' > ) } }} /> ) case 1: return ( <> setFormData({ ...formData, firstName: e.target.value })} /> setFormData({ ...formData, lastName: e.target.value })} /> setFormData({ ...formData, country: e.target.value as string })} > Select Country UK USA Australia Germany setFormData({ ...formData, language: e.target.value as string[] }) } }} > English French Spanish Portuguese Italian German Arabic ) case 2: return ( <> setFormData({ ...formData, facebook: e.target.value })} /> setFormData({ ...formData, twitter: e.target.value })} /> setFormData({ ...formData, instagram: e.target.value })} /> setFormData({ ...formData, github: e.target.value })} /> ) default: return 'Unknown step' } } return ( <> {steps.map(label => { return (
{label.title} {label.subtitle}
) })}
{activeStep === steps.length ? ( <> All steps are completed!
) : ( <>
e.preventDefault()}> {steps[activeStep].title} {steps[activeStep].subtitle} {renderStepContent(activeStep)}
)}
) } export default StepperAlternativeLabel