From f0d710818354b5c53372ef07dfbde02f44f197e1 Mon Sep 17 00:00:00 2001 From: Sahil Rajput Date: Mon, 3 Nov 2025 23:48:32 +0530 Subject: [PATCH 1/2] Pages Added --- TODO.md | 5 + package-lock.json | 14 ++- src/App.jsx | 6 ++ src/components/PrivacyPolicy.jsx | 146 ++++++++++++++++++++++++++ src/components/ScrollToTop.jsx | 14 +++ src/components/TermsAndConditions.jsx | 125 ++++++++++++++++++++++ 6 files changed, 309 insertions(+), 1 deletion(-) create mode 100644 TODO.md create mode 100644 src/components/PrivacyPolicy.jsx create mode 100644 src/components/ScrollToTop.jsx create mode 100644 src/components/TermsAndConditions.jsx diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..f8ca8e9 --- /dev/null +++ b/TODO.md @@ -0,0 +1,5 @@ +# TODO: Add Privacy Policy and Terms and Conditions Pages + +- [x] Create PrivacyPolicy.jsx component with basic content +- [x] Create TermsAndConditions.jsx component with basic content +- [x] Update App.jsx to add routes for /privacy and /terms diff --git a/package-lock.json b/package-lock.json index 496ad59..5a65979 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,6 +96,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", @@ -866,6 +867,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", + "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "6.6.0" }, @@ -1706,6 +1708,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2062,6 +2065,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001646", "electron-to-chromium": "^1.5.4", @@ -2445,6 +2449,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "peer": true, "engines": { "node": ">=12" } @@ -2918,6 +2923,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", @@ -4321,6 +4327,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -5154,6 +5161,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", @@ -5372,6 +5380,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -5383,6 +5392,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -6292,7 +6302,8 @@ "node_modules/three": { "version": "0.168.0", "resolved": "https://registry.npmjs.org/three/-/three-0.168.0.tgz", - "integrity": "sha512-6m6jXtDwMJEK/GGMbAOTSAmxNdzKvvBzgd7q8bE/7Tr6m7PaBh5kKLrN7faWtlglXbzj7sVba48Idwx+NRsZXw==" + "integrity": "sha512-6m6jXtDwMJEK/GGMbAOTSAmxNdzKvvBzgd7q8bE/7Tr6m7PaBh5kKLrN7faWtlglXbzj7sVba48Idwx+NRsZXw==", + "peer": true }, "node_modules/three-forcegraph": { "version": "1.41.14", @@ -7047,6 +7058,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==", "dev": true, + "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/src/App.jsx b/src/App.jsx index 233c7fb..d32b76b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -10,6 +10,9 @@ import HomePage from './components/HomePage'; import Books from './components/Books'; import Journey from './components/Journey'; import QuestionBank from './components/QuestionBank'; +import PrivacyPolicy from './components/PrivacyPolicy'; +import TermsAndConditions from './components/TermsAndConditions'; +import ScrollToTop from './components/ScrollToTop'; import ReactGA from 'react-ga4'; const trackingId = import.meta.env.VITE_APP_GA_TRACKING_ID; if (trackingId) { @@ -19,6 +22,7 @@ if (trackingId) { const App = () => { return ( +
} /> @@ -30,6 +34,8 @@ const App = () => { } /> } /> } /> + } /> + } /> } />
diff --git a/src/components/PrivacyPolicy.jsx b/src/components/PrivacyPolicy.jsx new file mode 100644 index 0000000..ca74345 --- /dev/null +++ b/src/components/PrivacyPolicy.jsx @@ -0,0 +1,146 @@ +import React from 'react'; +import Navbar from './Navbar'; +import Footer from './Footer'; + +const PrivacyPolicy = () => { + const [darkMode, setDarkMode] = React.useState(false); + + React.useEffect(() => { + const savedDarkMode = localStorage.getItem('darkMode') === 'true'; + setDarkMode(savedDarkMode); + document.documentElement.classList.toggle('dark', savedDarkMode); + }, []); + + const toggleDarkMode = () => { + const newDarkMode = !darkMode; + setDarkMode(newDarkMode); + document.documentElement.classList.toggle('dark', newDarkMode); + localStorage.setItem('darkMode', newDarkMode); + }; + + return ( + <> + + +
+
+
+

+ Privacy Policy +

+ +
+
+

+ Last updated: {new Date().toLocaleDateString()} +

+ +
+

1. Introduction

+

+ Welcome to mldl.study ("we," "our," or "us"). We are committed to protecting your privacy and ensuring the security of your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you visit our website. +

+
+ +
+

2. Information We Collect

+

2.1 Personal Information

+

+ We may collect personal information that you voluntarily provide to us when you: +

+
    +
  • Contact us through email or other communication channels
  • +
  • Subscribe to our newsletters or updates
  • +
  • Participate in surveys or feedback forms
  • +
+ +

2.2 Usage Information

+

+ We automatically collect certain information about your device and usage of our website, including: +

+
    +
  • IP address and location information
  • +
  • Browser type and version
  • +
  • Pages visited and time spent on our site
  • +
  • Referring website information
  • +
+
+ +
+

3. How We Use Your Information

+

We use the collected information for the following purposes:

+
    +
  • To provide and maintain our website
  • +
  • To improve our content and user experience
  • +
  • To communicate with you about updates or changes
  • +
  • To analyze usage patterns and trends
  • +
  • To ensure the security and integrity of our website
  • +
+
+ +
+

4. Cookies and Tracking Technologies

+

+ We use cookies and similar tracking technologies to enhance your browsing experience, analyze site traffic, and understand where our visitors are coming from. You can control cookie settings through your browser preferences. +

+
+ +
+

5. Third-Party Services

+

+ Our website may contain links to third-party websites or services. We are not responsible for the privacy practices of these external sites. We encourage you to review the privacy policies of any third-party services you use. +

+
+ +
+

6. Data Security

+

+ We implement appropriate technical and organizational measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet is 100% secure. +

+
+ +
+

7. Your Rights

+

Depending on your location, you may have the following rights regarding your personal information:

+
    +
  • The right to access your personal information
  • +
  • The right to rectify inaccurate information
  • +
  • The right to erase your personal information
  • +
  • The right to restrict processing
  • +
  • The right to data portability
  • +
+
+ +
+

8. Changes to This Privacy Policy

+

+ We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page and updating the "Last updated" date. +

+
+ +
+

9. Contact Us

+

+ If you have any questions about this Privacy Policy, please contact us at: +

+
+

+ Email: anshanejaa@gmail.com +

+

+ GitHub: https://github.com/anshaneja5/mldl.study +

+
+
+
+
+
+
+
+ +