@@ -133,12 +161,7 @@ const Navbar = () => {
d="M6 18L18 6M6 6l12 12"
/>
) : (
-
)}
@@ -149,24 +172,50 @@ const Navbar = () => {
{/* Mobile Menu */}
{menuOpen && (
-
-
-
+
+
{isLoggedIn && (
<>
-
setMenuOpen(false)} className={navLinkClass}>Paklik
-
setMenuOpen(false)} className={navLinkClass}>Statisztikák
-
setMenuOpen(false)} className={navLinkClass}>Profil
+
setMenuOpen(false)} className={navLinkClass}>
+ Paklik
+
>
)}
-
+
{!isLoggedIn ? (
)}
diff --git a/SerpentRace_Frontend/src/pages/About/About.jsx b/SerpentRace_Frontend/src/pages/About/About.jsx
index 273196ab..ee94dafd 100644
--- a/SerpentRace_Frontend/src/pages/About/About.jsx
+++ b/SerpentRace_Frontend/src/pages/About/About.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useRef, useState } from "react"
+import React, { useState } from "react"
import Navbar from "../../components/Navbar/Navbar"
import Footer from "../../components/Footer/Footer"
import Background from "../../assets/backgrounds/Background.jsx"
@@ -9,10 +9,53 @@ import Zsola from "../../assets/pictures/zsola.JPG"
import Donat from "../../assets/pictures/donat.JPG"
import Turo from "../../assets/pictures/turo.JPG"
import Piskor from "../../assets/pictures/piskor.JPG"
+// ÚJ: kész ikonok használata
+import { FaLightbulb, FaUsers, FaShieldAlt } from "react-icons/fa"
+// ÚJ: framer-motion használata a Landing-hez hasonló megjelenésért
+import { motion } from "framer-motion"
+
+///// ÚJ: központosított motion beállítások /////
+const baseMotion = {
+ initial: { opacity: 0, y: 20 },
+ whileInView: { opacity: 1, y: 0 },
+ viewport: { once: true, amount: 0.2 },
+ transition: { duration: 0.8 },
+}
+
+const getMotionProps = (overrides = {}) => {
+ const { transition = {}, viewport = {}, ...rest } = overrides
+ return {
+ ...baseMotion,
+ ...rest,
+ transition: { ...baseMotion.transition, ...transition },
+ viewport: { ...baseMotion.viewport, ...viewport },
+ }
+}
+
+///// ÚJ: variánsok a szülő-gyermek animációhoz (stagger) /////
+// container: használható olyan szekciókra, ahol a children együttesen animálódjanak
+const containerVariant = {
+ hidden: {},
+ visible: {
+ transition: {
+ staggerChildren: 0.06,
+ // delayChildren beállítható egyedi késleltetéshez
+ },
+ },
+}
+// item: alap animáció minden gyermek elemhez
+const itemVariant = {
+ hidden: { opacity: 0, y: 20 },
+ visible: { opacity: 1, y: 0, transition: { duration: 0.6 } },
+}
const About = () => {
- const [visible, setVisible] = useState(false)
- const sectionRef = useRef(null)
+ // Új: kontakt űrlap state + státusz
+ const [contactName, setContactName] = useState("")
+ const [contactEmail, setContactEmail] = useState("")
+ const [contactMessage, setContactMessage] = useState("")
+ const [submitting, setSubmitting] = useState(false)
+ const [success, setSuccess] = useState("")
const teamMembers = [
{
@@ -52,20 +95,35 @@ const About = () => {
},
]
- useEffect(() => {
- const observer = new IntersectionObserver(
- ([entry]) => {
- if (entry.isIntersecting) setVisible(true)
- },
- { threshold: 0.3 }
- )
- if (sectionRef.current) observer.observe(sectionRef.current)
- return () => observer.disconnect()
- }, [])
+ // Új: egyszerű onSubmit kezelő (nem változott logika)
+ const handleContactSubmit = (e) => {
+ e.preventDefault()
+ if (!contactName.trim() || !contactEmail.trim() || !contactMessage.trim()) {
+ setSuccess("Kérlek tölts ki minden mezőt.")
+ return
+ }
+ // nagyon egyszerű email ellenőrzés
+ const emailRe = /\S+@\S+\.\S+/
+ if (!emailRe.test(contactEmail)) {
+ setSuccess("Kérlek adj meg érvényes email címet.")
+ return
+ }
+
+ setSubmitting(true)
+ setSuccess("")
+ // Itt lehetne API hívás; most csak szimuláljuk
+ setTimeout(() => {
+ setSubmitting(false)
+ setContactName("")
+ setContactEmail("")
+ setContactMessage("")
+ setSuccess("Köszönjük, üzenetedet megkaptuk!")
+ setTimeout(() => setSuccess(""), 5000)
+ }, 900)
+ }
return (
-
{/* Háttér – fix pozíció, a teljes képernyőre */}
@@ -78,7 +136,6 @@ const About = () => {
{/* Tartalom */}
-
{/* Vissza gomb */}
@@ -86,56 +143,109 @@ const About = () => {
-
+ {/* Általános konténer — framer-motion mint a Landingnél */}
+
{/* Rólunk cím */}
-
+
Rólunk
-
+
{/* Leírás */}
-
- Célunk, hogy egy innovatív, közösségorientált platformot építsünk, ahol a versenyzés, játék és technológia találkozik. Elhivatott csapatunk minden nap azon dolgozik, hogy élményt és értéket nyújtson a felhasználóinknak.
-
+
+ Célunk, hogy egy innovatív, közösségorientált platformot építsünk, ahol a versenyzés, játék és
+ technológia találkozik. Elhivatott csapatunk minden nap azon dolgozik, hogy élményt és értéket
+ nyújtson a felhasználóinknak.
+
- {/* Küldetésünk */}
-
+ {/* Küldetésünk — most szülő variánssal, hogy a kártyák ne triggereljenek külön és ne ugorjanak */}
+
Küldetésünk
-
-
-
Innováció
-
Folyamatosan fejlesztjük rendszereinket a legmodernebb technológiákkal.
-
-
-
Közösség
-
Fontos számunkra, hogy egy összetartó, aktív közösséget építsünk ki.
-
-
-
Minőség
-
Minden részletre figyelünk a felhasználói élmény és biztonság érdekében.
-
-
-
- {/* Csapat */}
-
+ {/* Új: stilizált kártyák (egyenként animálva a szülőből) */}
+
+
+
+ {/* ICON: Lightbulb */}
+
+
+ Innováció
+
+ Modern megoldásokkal gyorsítjuk a fejlődést — moduláris, skálázható rendszereket építünk.
+
+
+
+
+
+ {/* ICON: Users */}
+
+
+ Közösség
+
+ Közösségépítés és együttműködés—eszközök, amik bevonják és motiválják a felhasználókat.
+
+
+
+
+
+ {/* ICON: Shield/Quality */}
+
+
+ Minőség
+
+ Biztonság, megbízhatóság és gondosan tervezett UX — minden részlet számít.
+
+
+
+
+
+ {/* Csapat — a szülő kezeli a gyermekek animációját (stagger), így nincs külön "belülről" trigger */}
+
Csapatunk
{teamMembers.map((member, i) => {
const isLast = i === teamMembers.length - 1
const itemsInLastRow = teamMembers.length % 3
const shouldCenter = itemsInLastRow === 1 && isLast
-
return (
-

{
/>
{member.name}
{member.role}
-
+
)
})}
-
-
+
+
+ {/* Új: Kapcsolat szekció — egységes megjelenés (animálva) */}
+
+
+
+ Kapcsolat
+
+
+
+ {/* Bal: elérhetőségek */}
+
+
+
✉️
+
+
Email
+
hello@serpentrace.hu
+
+
+
+
+
📞
+
+
Telefon
+
+36 20 123 4567
+
+
+
+
+
📍
+
+
Iroda
+
Budapest, Magyarország
+
+
+
+
+ Általános megkeresésekre 48 órán belül válaszolunk. Ha céges együttműködésről van szó,
+ kérjük, írj részletesen a projektedről.
+
+
+
+ {/* Jobb: űrlap */}
+
+
+
+
+
{/* Footer (nem scrollozható alá) */}