diff --git a/frontend/src/LandingPage.jsx b/frontend/src/LandingPage.jsx index 3f90794..66bb1a9 100644 --- a/frontend/src/LandingPage.jsx +++ b/frontend/src/LandingPage.jsx @@ -18,6 +18,7 @@ import { UserContext } from "./context/userContext"; import { motion, AnimatePresence } from "framer-motion"; import ServicesMarquee from "./components/ServicesMarquee"; import { Star } from "lucide-react"; // Import Star icon for testimonials +import TermsandConditions from "./pages/Terms/TermsandConditions"; // ← Add this /* ───────────────────────────────────────────── @@ -1051,7 +1052,7 @@ const LandingPage = () => {
© {new Date().getFullYear()} PrepPilot AI. All rights reserved.
diff --git a/frontend/src/pages/Terms/TermsandConditions.jsx b/frontend/src/pages/Terms/TermsandConditions.jsx new file mode 100644 index 0000000..1c50305 --- /dev/null +++ b/frontend/src/pages/Terms/TermsandConditions.jsx @@ -0,0 +1,350 @@ +import React, { useState, useEffect } from "react"; +import { motion } from "framer-motion"; +import { + LuChevronDown, + LuFileText, + LuUser, + LuAlertTriangle, + LuShield, + LuGlobe, + LuArrowLeft, +} from "react-icons/lu"; +import { useNavigate } from "react-router-dom"; + +const TermsandConditions = () => { + const navigate = useNavigate(); + const [openSections, setOpenSections] = useState(new Set(["intro"])); + const [activeSection, setActiveSection] = useState("intro"); + + const toggleSection = (id) => { + const newSet = new Set(openSections); + if (newSet.has(id)) newSet.delete(id); + else newSet.add(id); + setOpenSections(newSet); + }; + + const scrollToSection = (id) => { + const element = document.getElementById(id); + if (element) { + const offset = 100; + const elementPosition = + element.getBoundingClientRect().top + window.scrollY; + window.scrollTo({ top: elementPosition - offset, behavior: "smooth" }); + setActiveSection(id); + } + }; + + // Scroll Spy + useEffect(() => { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + setActiveSection(entry.target.id); + } + }); + }, + { threshold: 0.4, rootMargin: "-80px 0px -20% 0px" }, + ); + + const sections = document.querySelectorAll(".policy-section"); + sections.forEach((section) => observer.observe(section)); + + return () => observer.disconnect(); + }, []); + + const sectionsData = [ + { + id: "intro", + title: "Introduction", + icon:
+
+ PrepPilot AI
+
+ + Please read these Terms and Conditions carefully before using + PrepPilot AI. +
++ If you have any questions about these Terms, please contact us. +
+ + Contact Legal Team + ++ These Terms and Conditions govern your use of PrepPilot AI and its + services. By accessing or using our platform, you agree to be bound by + these terms. +
+ ); + case "acceptance": + return ( ++ By creating an account or using PrepPilot AI, you confirm that you + have read, understood, and agree to these Terms and Conditions, as + well as our Privacy Policy. +
+ ); + case "user-accounts": + return ( ++ PrepPilot AI is intended for personal and professional interview + preparation. You may not use the service for any unlawful purpose or + in violation of these terms. +
+ ); + case "prohibited": + return ( ++ All content, features, and functionality on PrepPilot AI are owned by + us and protected by copyright, trademark, and other intellectual + property laws. +
+ ); + case "termination": + return ( ++ We reserve the right to suspend or terminate your account at our + discretion if you violate these terms. +
+ ); + case "liability": + return ( ++ PrepPilot AI is provided "as is". We are not liable for any indirect, + incidental, or consequential damages arising from your use of the + service. +
+ ); + case "governing": + return ( ++ These Terms shall be governed by and construed in accordance with the + laws of India. +
+ ); + case "changes": + return ( ++ We may update these Terms from time to time. Continued use of the + service after changes constitutes acceptance of the new terms. +
+ ); + default: + returnContent coming soon.
; + } +}; + +export default TermsandConditions;