"use client"; import React, { useState } from "react"; import { FormData, PROFICIENCY_LEVELS } from './formTypes'; // Ensure path is correct interface FormPageProps { onFormSubmit: (data: FormData) => void; } const FormPage: React.FC = ({ onFormSubmit }) => { const [formData, setFormData] = useState({ Hackathon: '', mainTheme: '', tracksStack: [''], students: [{ studentName: '', skills: [{ skillName: '', proficiency: PROFICIENCY_LEVELS[1] }] }], }); const handleChange = (event: React.ChangeEvent) => { setFormData({ ...formData, [event.target.name]: event.target.value, }); }; const handleTracksChange = (event: React.ChangeEvent, index: number) => { const newTracksStack = [...formData.tracksStack]; newTracksStack[index] = event.target.value; setFormData({ ...formData, tracksStack: newTracksStack, }); }; const handleAddTracks = () => { setFormData({ ...formData, tracksStack: [...formData.tracksStack, ''], }); }; const handleRemoveTracks = (index: number) => { const newTracksStack = formData.tracksStack.filter((_, i) => i !== index); setFormData({ ...formData, tracksStack: newTracksStack, }); }; const handleStudentNameChange = (e: React.ChangeEvent, studentIndex: number) => { const newStudents = [...formData.students]; newStudents[studentIndex].studentName = e.target.value; setFormData({ ...formData, students: newStudents }); }; const handleAddStudent = () => { console.log("Adding student...", formData.students.length); if( formData.students.length >= 4 ) { alert("Maxium of 4 teammates allowed.") return; } setFormData({ ...formData, students: [...formData.students, { studentName: '', skills: [{ skillName: '', proficiency: PROFICIENCY_LEVELS[1] }] }] }); }; const handleRemoveStudent = (studentIndex: number) => { const newStudents = formData.students.filter((_, i) => i !== studentIndex); setFormData({ ...formData, students: newStudents }); }; const handleSkillChange = ( e: React.ChangeEvent, studentIndex: number, skillIndex: number ) => { const newStudents = [...formData.students]; const targetName = e.target.name; const targetValue = e.target.value; if (targetName === 'skillName') { newStudents[studentIndex].skills[skillIndex].skillName = targetValue; } else if (targetName === 'proficiency') { newStudents[studentIndex].skills[skillIndex].proficiency = targetValue; } setFormData({ ...formData, students: newStudents }); }; const handleAddSkill = (studentIndex: number) => { const newStudents = [...formData.students]; newStudents[studentIndex].skills.push({ skillName: '', proficiency: PROFICIENCY_LEVELS[1] }); setFormData({ ...formData, students: newStudents }); }; const handleRemoveSkill = (studentIndex: number, skillIndex: number) => { const newStudents = [...formData.students]; newStudents[studentIndex].skills = newStudents[studentIndex].skills.filter((_, i) => i !== skillIndex); setFormData({ ...formData, students: newStudents }); }; const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); onFormSubmit(formData); // Call the prop function with formData }; return (

New Project Idea

{/*
*/} {/*

Project Context

*/}
{/*
*/}
{formData.tracksStack.map((tracks, index) => (
handleTracksChange(e, index)} className="flex-grow px-4 py-2 rounded-lg shadow-sm transition duration-150" /> {formData.tracksStack.length > 1 && ( )}
))}

Teammate(s) and Skills

{formData.students.map((student, studentIndex) => (
{/*
*/} {/*

Teammate #{studentIndex + 1}:

handleStudentNameChange(e, studentIndex)} // className="w-full px-4 py-2 rounded-lg shadow-sm" className-="px-3 py-1 text-sm rounded-md" /> */}

Teammate #{studentIndex + 1}:

{formData.students.length > 1 && ( )} {/*
*/} {/*
handleStudentNameChange(e, studentIndex)} className="w-full px-4 py-2 rounded-lg shadow-sm focus:ring-indigo-500 focus:border-indigo-500" />
*/}
Skills
{student.skills.map((skill, skillIndex) => (
handleSkillChange(e, studentIndex, skillIndex)} className="flex-grow px-3 py-2 bg-[#99A48A] rounded-lg text-sm" /> {student.skills.length > 1 && ( )}
))}
))}
{/* this is just removing the test */} {/*

Current Data:

Hackathon: {formData.Hackathon || '—'}

Main Theme: {formData.mainTheme || '—'}

Tracks Stack: {formData.tracksStack.filter(t => t).join(', ') || '—'}

Team Members ({formData.students.length}):

    {formData.students.map((student, index) => (
  • {student.studentName || `Student ${index + 1}`}: {student.skills.filter(s => s.skillName).map(s => `${s.skillName} (${s.proficiency})`).join('; ') || 'No skills added'}
  • ))}
*/}
); }; export default FormPage;