From 9edc79b7acc2f650d8b3c9970ffe9e5263f3c18d Mon Sep 17 00:00:00 2001 From: bender Date: Fri, 6 Mar 2026 11:00:08 +0000 Subject: [PATCH] Add src/app/teams/page.tsx --- src/app/teams/page.tsx | 375 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 375 insertions(+) create mode 100644 src/app/teams/page.tsx diff --git a/src/app/teams/page.tsx b/src/app/teams/page.tsx new file mode 100644 index 0000000..ace7e28 --- /dev/null +++ b/src/app/teams/page.tsx @@ -0,0 +1,375 @@ +"use client"; + +import { useState } from "react"; +import { Users, MapPin, Trophy, Users2, Mail, Phone } from "lucide-react"; +import NavbarStyleApple from "@/components/navbar/NavbarStyleApple/NavbarStyleApple"; +import TeamCardTen from "@/components/sections/team/TeamCardTen"; +import ContactFaq from "@/components/sections/contact/ContactFaq"; +import FooterBase from "@/components/sections/footer/FooterBase"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; + +export default function TeamsPage() { + const [formData, setFormData] = useState({ + teamName: "", captain: "", email: "", phone: "", region: "", skillLevel: ""}); + const [formErrors, setFormErrors] = useState>({}); + const [submitStatus, setSubmitStatus] = useState<"idle" | "success" | "error">("idle"); + + const validateForm = () => { + const errors: Record = {}; + + if (!formData.teamName.trim()) { + errors.teamName = "Team name is required"; + } + if (!formData.captain.trim()) { + errors.captain = "Captain name is required"; + } + if (!formData.email.trim()) { + errors.email = "Email is required"; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { + errors.email = "Please enter a valid email"; + } + if (!formData.phone.trim()) { + errors.phone = "Phone number is required"; + } + if (!formData.region) { + errors.region = "Region is required"; + } + if (!formData.skillLevel) { + errors.skillLevel = "Skill level is required"; + } + + setFormErrors(errors); + return Object.keys(errors).length === 0; + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + if (!validateForm()) { + setSubmitStatus("error"); + return; + } + + console.log("Form submitted:", formData); + setSubmitStatus("success"); + setFormData({ + teamName: "", captain: "", email: "", phone: "", region: "", skillLevel: ""}); + + setTimeout(() => { + setSubmitStatus("idle"); + }, 3000); + }; + + const handleInputChange = ( + e: React.ChangeEvent + ) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + if (formErrors[name]) { + setFormErrors((prev) => { + const updated = { ...prev }; + delete updated[name]; + return updated; + }); + } + }; + + return ( + + + + + +
+
+
+

Register Your Team

+

+ Join the competitive Counter-Strike community. Register your team to participate in tournaments and events. +

+
+ +
+ {submitStatus === "success" && ( +
+ ✓ Team registration submitted successfully! +
+ )} + + {submitStatus === "error" && Object.keys(formErrors).length > 0 && ( +
+ Please fix the errors below. +
+ )} + +
+
+ + + {formErrors.teamName && ( +

{formErrors.teamName}

+ )} +
+ +
+ + + {formErrors.captain && ( +

{formErrors.captain}

+ )} +
+ +
+ + + {formErrors.email && ( +

{formErrors.email}

+ )} +
+ +
+ + + {formErrors.phone && ( +

{formErrors.phone}

+ )} +
+ +
+ + + {formErrors.region && ( +

{formErrors.region}

+ )} +
+ +
+ + + {formErrors.skillLevel && ( +

{formErrors.skillLevel}

+ )} +
+
+ + +
+
+
+ +
+ +
+ + +
+ ); +}