diff --git a/src/app/students/page.tsx b/src/app/students/page.tsx new file mode 100644 index 0000000..b88f14f --- /dev/null +++ b/src/app/students/page.tsx @@ -0,0 +1,330 @@ +"use client"; + +import { useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleFullscreen from "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen"; +import Input from "@/components/form/Input"; +import FooterLogoReveal from "@/components/sections/footer/FooterLogoReveal"; +import { Mail } from "lucide-react"; + +interface FormErrors { + firstName?: string; + lastName?: string; + email?: string; + grade?: string; + learningGoals?: string; +} + +export default function StudentRegistrationPage() { + const navItems = [ + { name: "Ana Sayfa", id: "/" }, + { name: "Öğretmenler", id: "/teachers" }, + { name: "Öğrenciler", id: "/students" }, + { name: "Çalışma Programı", id: "schedule" }, + ]; + + const [formData, setFormData] = useState({ + firstName: "", lastName: "", email: "", grade: "", learningGoals: ""}); + + const [errors, setErrors] = useState({}); + const [submitted, setSubmitted] = useState(false); + const [isSubmitting, setIsSubmitting] = useState(false); + + const validateForm = (): boolean => { + const newErrors: FormErrors = {}; + + if (!formData.firstName.trim()) { + newErrors.firstName = "Ad gereklidir"; + } + + if (!formData.lastName.trim()) { + newErrors.lastName = "Soyadı gereklidir"; + } + + if (!formData.email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) { + newErrors.email = "Geçerli bir email adı girin"; + } + + if (!formData.grade.trim()) { + newErrors.grade = "Sınıf seçiniz"; + } + + if (!formData.learningGoals.trim()) { + newErrors.learningGoals = "Öğrenme hedefleri gereklidir"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + if (!validateForm()) { + return; + } + + setIsSubmitting(true); + // Simulate API call + setTimeout(() => { + console.log("Form submitted:", formData); + setSubmitted(true); + setIsSubmitting(false); + }, 1500); + }; + + const handleReset = () => { + setFormData({ + firstName: "", lastName: "", email: "", grade: "", learningGoals: ""}); + setErrors({}); + setSubmitted(false); + }; + + return ( + + + +
+
+ {/* Header */} +
+

Öğrenci Kaydı

+

Eğitim yolculuğunuza katılın ve size uygun öğretmen bulun

+
+ + {/* Success Message */} + {submitted ? ( +
+
+ + + +
+

Kayıt Başarılı!

+

+ Merhaba {formData.firstName} {formData.lastName}, kaydınız başarıyla tamamlanmıştır. +

+

+ En yakın zamanda size uygun öğretmen önerileri gönderilecektir. Lütfen email kutunuzu kontrol edin. +

+ +
+ ) : ( + /* Registration Form */ +
+
+ {/* First Name */} +
+ + { + setFormData({ ...formData, firstName: value }); + if (errors.firstName) { + setErrors({ ...errors, firstName: undefined }); + } + }} + type="text" + placeholder="Adınız" + required + /> + {errors.firstName && ( +
+ +

{errors.firstName}

+
+ )} +
+ + {/* Last Name */} +
+ + { + setFormData({ ...formData, lastName: value }); + if (errors.lastName) { + setErrors({ ...errors, lastName: undefined }); + } + }} + type="text" + placeholder="Soyadınız" + required + /> + {errors.lastName && ( +
+ +

{errors.lastName}

+
+ )} +
+ + {/* Email */} +
+ +
+ { + setFormData({ ...formData, email: value }); + if (errors.email) { + setErrors({ ...errors, email: undefined }); + } + }} + type="email" + placeholder="example@email.com" + required + /> +
+ {errors.email ? ( +
+ +

{errors.email}

+
+ ) : ( +

Güvenli ve gizli tutulacaktır

+ )} +
+ + {/* Grade Level */} +
+ + + {errors.grade && ( +
+ +

{errors.grade}

+
+ )} +
+ + {/* Learning Goals */} +
+ +