From fcfdd1a021b10ab5edb767ff45e1bb7767656b0b Mon Sep 17 00:00:00 2001 From: bender Date: Thu, 28 May 2026 12:11:35 +0000 Subject: [PATCH] Add src/app/enroll/page.tsx --- src/app/enroll/page.tsx | 296 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 src/app/enroll/page.tsx diff --git a/src/app/enroll/page.tsx b/src/app/enroll/page.tsx new file mode 100644 index 0000000..c8518ca --- /dev/null +++ b/src/app/enroll/page.tsx @@ -0,0 +1,296 @@ +"use client"; + +import { useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import ReactLenis from "lenis/react"; +import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline'; +import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal'; +import { useRouter } from "next/navigation"; +import { Mail, CheckCircle } from "lucide-react"; + + +export default function EnrollmentPage() { + const router = useRouter(); + const [formData, setFormData] = useState({ + fullName: "", age: "", parentGuardianName: "", phoneNumber: "", emailAddress: "", programClassSelection: "", message: ""}); + const [errors, setErrors] = useState({}); + const [submissionStatus, setSubmissionStatus] = useState<"idle" | "loading" | "success" | "error">("idle"); + const [successMessage, setSuccessMessage] = useState(""); + const [errorMessage, setErrorMessage] = useState(""); + + const programs = [ + "Early Childhood Learning", "Primary Education Support", "Secondary Education Coaching", "Adult Learning Programs", "Discipline & Character Development", "Holiday and Vacation Classes"]; + + const validate = () => { + let newErrors = {}; + if (!formData.fullName) newErrors.fullName = "Student Full Name is required"; + if (!formData.age || isNaN(Number(formData.age)) || Number(formData.age) <= 0) newErrors.age = "Age is required and must be a positive number"; + if (!formData.parentGuardianName) newErrors.parentGuardianName = "Parent/Guardian Name is required"; + if (!formData.phoneNumber) newErrors.phoneNumber = "Phone Number is required"; + if (!formData.emailAddress) { + newErrors.emailAddress = "Email Address is required"; + } else if (!/\S+@\S+\.\S+/.test(formData.emailAddress)) { + newErrors.emailAddress = "Email Address is invalid"; + } + if (!formData.programClassSelection) newErrors.programClassSelection = "Program/Class Selection is required"; + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData((prev) => ({ ...prev, [name]: value })); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + setSubmissionStatus("loading"); + setSuccessMessage(""); + setErrorMessage(""); + + if (!validate()) { + setSubmissionStatus("error"); + setErrorMessage("Please correct the errors in the form."); + return; + } + + try { + // Simulate API call to Firebase/Supabase backend + // In a real application, replace this with actual API endpoint and data submission. + // The backend would handle secure submission, admin email, and database storage. + const response = await fetch('/api/enrollments', { // Assuming an API route like /api/enrollments + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(formData), + }); + + if (response.ok) { + setSubmissionStatus("success"); + setSuccessMessage("Enrollment submitted successfully! We will contact you shortly."); + // Optionally clear form + setFormData({ + fullName: "", age: "", parentGuardianName: "", phoneNumber: "", emailAddress: "", programClassSelection: "", message: ""}); + } else { + const errorData = await response.json(); + throw new Error(errorData.message || "Failed to submit enrollment."); + } + } catch (err) { + setSubmissionStatus("error"); + setErrorMessage(err.message || "An unexpected error occurred during submission."); + console.error("Enrollment submission error:", err); + } + }; + + const navItems = [ + { name: "Home", id: "/#home" }, + { name: "About", id: "/#about" }, + { name: "Programs", id: "/#programs" }, + { name: "Why Choose Us", id: "/#why-choose-us" }, + { name: "Testimonials", id: "/#testimonials" }, + { name: "Gallery", id: "/#gallery" }, + { name: "Enroll Now", id: "/enroll" } + ]; + + return ( + + + + +
+
+

Enroll Now

+

+ Fill out the form below to enroll your child or yourself in our programs. We'll get back to you shortly! +

+
+
+
+
+ +
+ + {errors.fullName &&

{errors.fullName}

} +
+
+ +
+ +
+ + {errors.age &&

{errors.age}

} +
+
+ +
+ +
+ + {errors.parentGuardianName &&

{errors.parentGuardianName}

} +
+
+ +
+ +
+ + {errors.phoneNumber &&

{errors.phoneNumber}

} +
+
+ +
+ +
+ + {errors.emailAddress &&

{errors.emailAddress}

} +
+
+ +
+ +
+ + {errors.programClassSelection &&

{errors.programClassSelection}

} +
+
+ +
+ +
+