'use client'; import React from 'react'; import { Box, Card, CardContent, TextField, Button, Typography, Grid, MenuItem, FormControl, InputLabel, Select, FormHelperText, Chip, Avatar, Container, } from '@mui/material'; import { useFormik } from 'formik'; import * as yup from 'yup'; import PersonIcon from '@mui/icons-material/Person'; import EmailIcon from '@mui/icons-material/Email'; import PhoneIcon from '@mui/icons-material/Phone'; import WorkIcon from '@mui/icons-material/Work'; import SendIcon from '@mui/icons-material/Send'; const validationSchema = yup.object({ firstName: yup .string('Enter your first name') .min(2, 'First name should be at least 2 characters') .required('First name is required'), lastName: yup .string('Enter your last name') .min(2, 'Last name should be at least 2 characters') .required('Last name is required'), email: yup .string('Enter your email') .email('Enter a valid email') .required('Email is required'), phone: yup .string('Enter your phone number') .matches(/^[\+]?[1-9][\d]{0,15}$/, 'Enter a valid phone number') .required('Phone number is required'), age: yup .number('Enter your age') .min(18, 'Must be at least 18 years old') .max(120, 'Must be less than 120 years old') .required('Age is required'), department: yup .string('Select a department') .required('Department is required'), skills: yup .array() .min(1, 'Select at least one skill') .required('Skills are required'), bio: yup .string('Enter your bio') .min(10, 'Bio should be at least 10 characters') .max(500, 'Bio should not exceed 500 characters') .required('Bio is required'), }); const departments = [ 'Engineering', 'Marketing', 'Sales', 'HR', 'Finance', 'Operations', 'Design', ]; const skillOptions = [ 'JavaScript', 'React', 'Node.js', 'Python', 'UI/UX Design', 'Project Management', 'Data Analysis', 'Marketing', 'Sales', 'Communication', ]; export default function FormPage() { const formik = useFormik({ initialValues: { firstName: '', lastName: '', email: '', phone: '', age: '', department: '', skills: [], bio: '', }, validationSchema: validationSchema, onSubmit: (values, { setSubmitting, resetForm }) => { setTimeout(() => { console.log('Form submitted:', values); alert('Form submitted successfully!'); setSubmitting(false); resetForm(); }, 1000); }, }); const handleSkillChange = (event) => { const value = event.target.value; formik.setFieldValue('skills', typeof value === 'string' ? value.split(',') : value); }; return ( theme.palette.mode === 'dark' ? 'linear-gradient(135deg, #0f0f23 0%, #1a1a2e 50%, #16213e 100%)' : 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', py: 4, }} > theme.palette.mode === 'dark' ? 'rgba(26, 26, 46, 0.95)' : 'rgba(255, 255, 255, 0.95)', backdropFilter: 'blur(10px)', border: (theme) => theme.palette.mode === 'dark' ? '1px solid rgba(99, 102, 241, 0.2)' : '1px solid rgba(255, 255, 255, 0.3)', }} > User Registration Please fill out all required fields
Personal Information , }} /> , }} /> Professional Information Department {formik.touched.department && formik.errors.department && ( {formik.errors.department} )} Skills {formik.touched.skills && formik.errors.skills && ( {formik.errors.skills} )}
); }