From 61dd25ada3f3d08a928efdf574e441e9d71a3649 Mon Sep 17 00:00:00 2001 From: Pheonix Date: Sat, 20 Jun 2026 14:53:02 +0530 Subject: [PATCH] added terms and condition page --- frontend/src/LandingPage.jsx | 3 +- .../src/pages/Terms/TermsandConditions.jsx | 350 ++++++++++++++++++ 2 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 frontend/src/pages/Terms/TermsandConditions.jsx 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.

Privacy Policy - Terms of Service + Terms of Service
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: , + }, + { + id: "acceptance", + title: "Acceptance of Terms", + icon: , + }, + { + id: "user-accounts", + title: "User Accounts", + icon: , + }, + { + id: "use-of-service", + title: "Use of Service", + icon: , + }, + { + id: "prohibited", + title: "Prohibited Conduct", + icon: , + }, + { + id: "intellectual", + title: "Intellectual Property", + icon: , + }, + { + id: "termination", + title: "Termination", + icon: , + }, + { + id: "liability", + title: "Limitation of Liability", + icon: , + }, + { + id: "governing", + title: "Governing Law", + icon: , + }, + { + id: "changes", + title: "Changes to Terms", + icon: , + }, + ]; + + return ( +
+ {/* Navbar */} +
+
+
navigate("/")} + > + Logo + + PrepPilot AI + +
+ + navigate("/")} + className="flex items-center gap-2 text-sm px-6 py-2.5 rounded-full border border-white/20 hover:bg-white/10 transition-all" + > + + Back to Home + +
+
+ +
+ {/* LEFT SIDEBAR */} +
+
+
+

+ + Table of Contents +

+
+ + + +
+ Last Updated: June 20, 2026 +
+
+
+ + {/* RIGHT MAIN CONTENT */} +
+
+
+ + + Legal + +
+

+ Terms and Conditions +

+

+ Please read these Terms and Conditions carefully before using + PrepPilot AI. +

+
+ +
+ {sectionsData.map((sec) => ( +
+ + + {openSections.has(sec.id) && ( +
+ {getSectionContent(sec.id)} +
+ )} +
+ ))} +
+ + {/* Final Note */} +
+

Questions?

+

+ If you have any questions about these Terms, please contact us. +

+ + Contact Legal Team + +
+
+
+ + {/* Footer */} +
+

© {new Date().getFullYear()} PrepPilot AI. All rights reserved.

+
+
+ ); +}; + +// Section Content +const getSectionContent = (id) => { + switch (id) { + case "intro": + return ( +

+ 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 ( +
    +
  • + You must provide accurate and complete information when creating an + account. +
  • +
  • + You are responsible for maintaining the confidentiality of your + account credentials. +
  • +
  • + You must notify us immediately of any unauthorized use of your + account. +
  • +
+ ); + case "use-of-service": + 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 ( +
    +
  • Sharing or selling access to your account
  • +
  • Attempting to reverse engineer or scrape the platform
  • +
  • Using the service to harass, abuse, or harm others
  • +
  • Uploading malicious code or content
  • +
+ ); + case "intellectual": + 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: + return

Content coming soon.

; + } +}; + +export default TermsandConditions;