From 26e6cb3644b0a06c9f3af4b5687454b400a592c1 Mon Sep 17 00:00:00 2001 From: Sohan Rout Date: Sun, 2 Nov 2025 21:34:54 +0530 Subject: [PATCH] Feat : ads file added --- app/components/PrivacyPolicyModal.jsx | 2 +- app/components/cookie.jsx | 169 ++++++++++++++++++++++++ app/components/footer.jsx | 49 +++++-- app/components/termsOfServicesModal.jsx | 152 +++++++++++++++++++++ public/ads.txt | 1 + 5 files changed, 364 insertions(+), 9 deletions(-) create mode 100755 app/components/cookie.jsx create mode 100755 app/components/termsOfServicesModal.jsx create mode 100755 public/ads.txt diff --git a/app/components/PrivacyPolicyModal.jsx b/app/components/PrivacyPolicyModal.jsx index 600a573..6c62a7a 100755 --- a/app/components/PrivacyPolicyModal.jsx +++ b/app/components/PrivacyPolicyModal.jsx @@ -25,7 +25,7 @@ const policySections = [ id : "4", title : "Contact Information", data : "For any privacy-related questions, please contact us at", - contact : "support@dsavisualizer.com", + contact : "hello@dsavisualizer.in", }, ]; diff --git a/app/components/cookie.jsx b/app/components/cookie.jsx new file mode 100755 index 0000000..291d7f5 --- /dev/null +++ b/app/components/cookie.jsx @@ -0,0 +1,169 @@ +import React, { useEffect } from 'react'; +import { FiX } from 'react-icons/fi'; + +const cookieSections = [ + { + id: "1", + title: "What Are Cookies", + data: "Cookies are small text files that are stored on your device when you visit our website. They help us provide you with a better experience by remembering your preferences and understanding how you use our site.", + }, + { + id: "2", + title: "Types of Cookies We Use", + points: [ + "Essential Cookies: Required for basic site functionality and security", + "Performance Cookies: Help us understand how visitors interact with our website", + "Functionality Cookies: Remember your preferences and settings", + "Analytics Cookies: Collect information about your usage patterns", + ], + }, + { + id: "3", + title: "How We Use Cookies", + points: [ + "To authenticate users and prevent fraudulent use", + "Remember your preferences and settings", + "Analyze site traffic and usage patterns", + "Improve our website performance and user experience", + "Provide personalized content when available", + ], + }, + { + id: "4", + title: "Third-Party Cookies", + data: "We may also use cookies from trusted third-party services for analytics, performance monitoring, and other functionality. These third parties have their own privacy policies governing cookie usage.", + }, + { + id: "5", + title: "Cookie Management", + points: [ + "You can control cookie settings through your browser preferences", + "Most browsers allow you to refuse or delete cookies", + "Disabling essential cookies may affect website functionality", + "You can opt-out of analytics cookies using our cookie preferences tool", + ], + }, + { + id: "6", + title: "Your Choices", + data: "You have the right to accept or reject cookies. Most web browsers automatically accept cookies, but you can usually modify your browser setting to decline cookies if you prefer. However, this may prevent you from taking full advantage of the website.", + }, + { + id: "7", + title: "Updates to Cookie Policy", + data: "We may update this Cookie Policy from time to time to reflect changes in technology, legislation, or our operations. We encourage you to periodically review this page for the latest information.", + }, + { + id: "8", + title: "Contact Information", + data: "If you have any questions about our use of cookies, please contact us at", + contact: "hello@dsavisualizer.in", + }, +]; + +const CookiePolicyModal = ({ isOpen, onClose }) => { + // Prevent body scroll when modal is open + useEffect(() => { + if (isOpen) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = 'auto'; + } + return () => { + document.body.style.overflow = 'auto'; + }; + }, [isOpen]); + + if (!isOpen) return null; + + return ( +
+ {/* Backdrop with fade-in animation */} +
+ + {/* Modal container with slide-up animation */} +
+ {/* Header with close button */} +
+

+ Cookie Policy +

+ +
+ + {/* Scrollable content */} +
+

+ This Cookie Policy explains how we use cookies and similar technologies on our website. It describes the types of cookies we use, their purposes, and how you can manage your cookie preferences. +

+ + {/* Cookie policy sections */} +
+
    + {cookieSections.map((item, index) => ( +
  • +
    +
    + {item.id} +

    + {item.title} +

    +
    + {item.points &&
      + {item.points.map((subitem, subindex) => ( +
    • + {subitem} +
    • + ))} +
    } +

    {item.data}

    + {item.contact && ( + {item.contact} + )} +
    +
  • + ))} +
+
+ + {/* Additional cookie information */} +
+

+ 🍪 Cookie Duration +

+

+ Session cookies are temporary and expire when you close your browser. Persistent cookies remain on your device for a set period or until you delete them. +

+
+ +
+

+ Last updated: May 17, 2025 +

+
+
+ + {/* Footer with close button */} +
+ +
+
+
+ ); +}; + +export default CookiePolicyModal; \ No newline at end of file diff --git a/app/components/footer.jsx b/app/components/footer.jsx index f629b21..3244e6c 100755 --- a/app/components/footer.jsx +++ b/app/components/footer.jsx @@ -3,6 +3,8 @@ import React from "react"; import Link from "next/link"; import { useState } from "react"; import PrivacyPolicyModal from "@/app/components/PrivacyPolicyModal"; +import TermsOfServiceModal from "@/app/components/termsOfServicesModal"; +import CookiePolicyModal from "@/app/components/cookie"; import { GoHomeFill } from "react-icons/go"; import { MdAnimation } from "react-icons/md"; import { IoMdInformationCircle } from "react-icons/io"; @@ -11,6 +13,8 @@ import { RiQuestionLine } from "react-icons/ri"; const Footer = () => { const [showPolicyModal, setShowPolicyModal] = useState(false); + const [showTermsModal, setShowTermsModal] = useState(false); + const [showCookieModal, setShowCookieModal] = useState(false); const quickLinks = [ { href: "/", text: "Home", icon: GoHomeFill }, @@ -68,9 +72,9 @@ const Footer = () => { ]; const legalLinks = [ - { href: "/privacy", text: "Privacy Policy", type: "modal" }, - { href: "/terms", text: "Terms of Service", type: "link" }, - { href: "/cookies", text: "Cookies", type: "link" }, + { href: "/privacy", text: "Privacy Policy", type: "policyModal" }, + { href: "/terms", text: "Terms of Service", type: "termsModal" }, + { href: "/cookies", text: "Cookies", type: "cookieModal" }, ]; return ( @@ -107,14 +111,12 @@ const Footer = () => {
- {/*
- contact@dsavisualizer.com + hello@dsavisualizer.in
- */}
{
    {legalLinks.map((link, index) => (
  • - {link.type === "modal" ? ( + {link.type === "policyModal" ? ( - ) : ( + ) : + link.type === "termsModal" ? ( + + ) + : + link.type === "cookieModal" ? ( + + ) + : + ( { onClose={() => setShowPolicyModal(false)} /> + {/* Render the modal */} + setShowTermsModal(false)} + /> + + {/* Render the modal */} + setShowCookieModal(false)} + /> +

    Connect diff --git a/app/components/termsOfServicesModal.jsx b/app/components/termsOfServicesModal.jsx new file mode 100755 index 0000000..9c9ca13 --- /dev/null +++ b/app/components/termsOfServicesModal.jsx @@ -0,0 +1,152 @@ +import React, { useEffect } from 'react'; +import { FiX } from 'react-icons/fi'; + +const termsSections = [ + { + id: "1", + title: "Acceptance of Terms", + data: "By accessing and using this website, you accept and agree to be bound by the terms and provision of this agreement.", + }, + { + id: "2", + title: "Use License", + points: [ + "Permission is granted to temporarily use the materials on this website for personal, non-commercial transitory viewing only", + "This is the grant of a license, not a transfer of title", + "You may not modify or copy the materials, use them for any commercial purpose, or remove any copyright or proprietary notations", + ], + }, + { + id: "3", + title: "User Responsibilities", + points: [ + "Provide accurate and complete information when required", + "Maintain the confidentiality of your account credentials", + "Notify us immediately of any unauthorized use of your account", + "Use the service in compliance with all applicable laws and regulations", + ], + }, + { + id: "4", + title: "Intellectual Property", + data: "All content, features, and functionality on this website, including but not limited to text, graphics, logos, and software, are the exclusive property of the company and are protected by international copyright, trademark, and other intellectual property laws.", + }, + { + id: "5", + title: "Limitation of Liability", + data: "In no event shall the company, nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses.", + }, + { + id: "6", + title: "Governing Law", + data: "These Terms shall be governed and construed in accordance with the laws of the applicable jurisdiction, without regard to its conflict of law provisions.", + }, + { + id: "7", + title: "Changes to Terms", + data: "We reserve the right, at our sole discretion, to modify or replace these Terms at any time. By continuing to access or use our service after those revisions become effective, you agree to be bound by the revised terms.", + }, + { + id: "8", + title: "Contact Information", + data: "If you have any questions about these Terms, please contact us at", + contact: "hello@dsavisualizer.in", + }, +]; + +const TermsOfServiceModal = ({ isOpen, onClose }) => { + // Prevent body scroll when modal is open + useEffect(() => { + if (isOpen) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = 'auto'; + } + return () => { + document.body.style.overflow = 'auto'; + }; + }, [isOpen]); + + if (!isOpen) return null; + + return ( +
    + {/* Backdrop with fade-in animation */} +
    + + {/* Modal container with slide-up animation */} +
    + {/* Header with close button */} +
    +

    + Terms of Service +

    + +
    + + {/* Scrollable content */} +
    +

    + Please read these terms and conditions carefully before using our website and services. Your access to and use of the service is conditioned on your acceptance of and compliance with these terms. +

    + + {/* Terms sections */} +
    +
      + {termsSections.map((item, index) => ( +
    • +
      +
      + {item.id} +

      + {item.title} +

      +
      + {item.points &&
        + {item.points.map((subitem, subindex) => ( +
      • + {subitem} +
      • + ))} +
      } +

      {item.data}

      + {item.contact && ( + {item.contact} + )} +
      +
    • + ))} +
    +
    + +
    +

    + Last updated: May 17, 2025 +

    +
    +
    + + {/* Footer with close button */} +
    + +
    +
    +
    + ); +}; + +export default TermsOfServiceModal; \ No newline at end of file diff --git a/public/ads.txt b/public/ads.txt new file mode 100755 index 0000000..3522a41 --- /dev/null +++ b/public/ads.txt @@ -0,0 +1 @@ +google.com, pub-4311738896428559, DIRECT, f08c47fec0942fa0 \ No newline at end of file