add pages

This commit is contained in:
Eshan Roy
2024-12-03 18:47:23 +05:30
parent 8c0d1cd43d
commit f337392e44
5 changed files with 174 additions and 11 deletions

View File

@@ -7,6 +7,8 @@ import About from './pages/About';
import Features from './pages/Features';
import Download from './pages/Download';
import Developers from './pages/Developers';
import PrivacyPolicy from './pages/PrivacyPolicy'; // Import the PrivacyPolicy page
import CookieNotice from './components/CookieNotice'; // Cookie Notice
function App() {
return (
@@ -20,8 +22,10 @@ function App() {
<Route path="/features" element={<Features />} />
<Route path="/download" element={<Download />} />
<Route path="/developers" element={<Developers />} />
<Route path="/privacy-policy" element={<PrivacyPolicy />} /> {/* Privacy Policy Route */}
</Routes>
</main>
<CookieNotice />
<Footer />
</div>
</Router>

View File

@@ -0,0 +1,42 @@
// src/components/CookieNotice.tsx
import React, { useState, useEffect } from 'react';
const CookieNotice: React.FC = () => {
const [isVisible, setIsVisible] = useState(false);
useEffect(() => {
const isCookieAccepted = localStorage.getItem('cookieAccepted');
if (!isCookieAccepted) {
setIsVisible(true);
}
}, []);
const handleAccept = () => {
localStorage.setItem('cookieAccepted', 'true');
setIsVisible(false);
};
if (!isVisible) return null;
return (
<div className="fixed bottom-4 left-4 right-4 bg-gray-900 text-white p-4 rounded-lg shadow-lg md:max-w-md md:mx-auto">
<p className="text-sm">
This website uses cookies to ensure you get the best experience on our website. By continuing to browse, you consent to our use of cookies.{' '}
<a href="/privacy-policy" className="text-blue-400 underline hover:text-blue-300">
Learn more
</a>.
</p>
<div className="mt-3 text-right">
<button
onClick={handleAccept}
className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-md text-sm"
>
Accept
</button>
</div>
</div>
);
};
export default CookieNotice;

View File

@@ -1,5 +1,5 @@
import React from 'react';
import { Github, Twitter, Youtube } from 'lucide-react';
import { FaGithub, FaDev } from 'react-icons/fa';
export default function Footer() {
return (
@@ -16,6 +16,7 @@ export default function Footer() {
<li><a href="/download" className="text-gray-400 hover:text-[#754ffe]">Download</a></li>
<li><a href="/docs" className="text-gray-400 hover:text-[#754ffe]">Documentation</a></li>
<li><a href="/tools" className="text-gray-400 hover:text-[#754ffe]">Tools</a></li>
<li><a href="/contact" className="text-gray-400 hover:text-[#754ffe]">Contact Us</a></li>
</ul>
</div>
<div>
@@ -24,27 +25,57 @@ export default function Footer() {
<li><a href="/forums" className="text-gray-400 hover:text-[#754ffe]">Forums</a></li>
<li><a href="/blog" className="text-gray-400 hover:text-[#754ffe]">Blog</a></li>
<li><a href="/support" className="text-gray-400 hover:text-[#754ffe]">Support</a></li>
<li><a href="/contribute" className="text-gray-400 hover:text-[#754ffe]">Contribute</a></li>
</ul>
</div>
<div>
<h4 className="text-lg font-semibold mb-4">Connect</h4>
<div className="flex space-x-4">
<a href="https://github.com/snigdha-os" className="text-gray-400 hover:text-[#754ffe]">
<Github className="h-6 w-6" />
<FaGithub className="h-6 w-6" />
</a>
<a href="https://twitter.com/snigdhaos" className="text-gray-400 hover:text-[#754ffe]">
<Twitter className="h-6 w-6" />
</a>
<a href="https://youtube.com/snigdhaos" className="text-gray-400 hover:text-[#754ffe]">
<Youtube className="h-6 w-6" />
<a href="https://dev.to/snigdhaos" className="text-gray-400 hover:text-[#754ffe]">
<FaDev className="h-6 w-6" />
</a>
</div>
</div>
</div>
{/* Legal & Newsletter Section */}
<div className="mt-8 grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4 text-center md:text-left">
<div>
<h4 className="text-lg font-semibold mb-2">Legal</h4>
<ul className="space-y-2">
<li>
<a href="/privacy-policy" className="text-gray-400 hover:text-[#754ffe]">
Privacy Policy
</a>
</li>
<li>
<a href="/terms-of-service" className="text-gray-400 hover:text-[#754ffe]">
Terms of Service
</a>
</li>
</ul>
</div>
<div>
<h4 className="text-lg font-semibold mb-2">Newsletter</h4>
<form>
<input
type="email"
placeholder="Your email"
className="p-2 rounded bg-gray-800 text-gray-300 mb-4"
/>
<button className="px-4 py-2 bg-[#754ffe] text-white rounded">Subscribe</button>
</form>
</div>
</div>
{/* Footer Bottom */}
<div className="mt-8 pt-8 border-t border-gray-800 text-center text-gray-400">
<p>&copy; {new Date().getFullYear()} Snigdha OS. All rights reserved.</p>
</div>
</div>
</footer>
);
}
}

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { NavLink } from 'react-router-dom';
import { Menu, X, Terminal } from 'lucide-react';
import { FaGithub, FaDev } from 'react-icons/fa';
export default function Navbar() {
const [isOpen, setIsOpen] = React.useState(false);
@@ -16,7 +17,7 @@ export default function Navbar() {
return (
<nav className="bg-white shadow-md">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between h-16">
<div className="flex justify-between h-16 items-center">
<div className="flex items-center">
<NavLink to="/" className="flex items-center">
<Terminal className="h-8 w-8 text-[#754ffe]" />
@@ -29,7 +30,7 @@ export default function Navbar() {
<NavLink
key={path}
to={path}
className={({isActive}) =>
className={({ isActive }) =>
`${isActive ? 'text-[#754ffe]' : 'text-gray-700'} hover:text-[#754ffe] transition-colors`
}
>
@@ -38,6 +39,26 @@ export default function Navbar() {
))}
</div>
{/* Social Media Icons */}
<div className="hidden md:flex items-center space-x-6 ml-6">
<a
href="https://github.com/Snigdha-OS"
target="_blank"
rel="noopener noreferrer"
className="text-gray-700 hover:text-[#754ffe] transition-colors"
>
<FaGithub className="h-6 w-6" />
</a>
<a
href="https://dev.to/snigdhaos"
target="_blank"
rel="noopener noreferrer"
className="text-gray-700 hover:text-[#754ffe] transition-colors"
>
<FaDev className="h-6 w-6" />
</a>
</div>
<div className="md:hidden flex items-center">
<button
onClick={() => setIsOpen(!isOpen)}
@@ -68,4 +89,4 @@ export default function Navbar() {
)}
</nav>
);
}
}

View File

@@ -0,0 +1,65 @@
// src/pages/PrivacyPolicy.tsx
import React from 'react';
const PrivacyPolicy: React.FC = () => {
return (
<div className="container mx-auto p-4">
<h1 className="text-3xl font-bold mb-4">Privacy Policy</h1>
<p className="text-lg mb-4">Last Updated: [Date]</p>
<h2 className="text-2xl font-semibold mt-4">1. Information We Collect</h2>
<p>We collect the following types of information when you use our website:</p>
<h3 className="text-xl font-semibold mt-4">Personal Information</h3>
<ul className="list-disc ml-6">
<li>Email Address</li>
<li>Account Information</li>
</ul>
<h3 className="text-xl font-semibold mt-4">Non-Personal Information</h3>
<ul className="list-disc ml-6">
<li>Usage Data</li>
<li>Cookies and Tracking Technologies</li>
</ul>
<h2 className="text-2xl font-semibold mt-4">2. How We Use Your Information</h2>
<ul className="list-disc ml-6">
<li>To provide, maintain, and improve our services.</li>
<li>To communicate with you.</li>
<li>To monitor and analyze the usage of our website.</li>
<li>To respond to customer service requests.</li>
</ul>
<h2 className="text-2xl font-semibold mt-4">3. How We Protect Your Information</h2>
<p>We implement a variety of security measures to maintain the safety of your personal information.</p>
<h2 className="text-2xl font-semibold mt-4">4. Sharing Your Information</h2>
<p>We do not sell or share your personal information without your consent, except for the reasons listed in this policy.</p>
<h2 className="text-2xl font-semibold mt-4">5. Third-Party Links</h2>
<p>Our website may contain links to third-party sites that are not controlled by us.</p>
<h2 className="text-2xl font-semibold mt-4">6. Your Rights and Choices</h2>
<ul className="list-disc ml-6">
<li>Access, update, or delete your information.</li>
<li>Opt-out of communications from us.</li>
<li>Control cookies and tracking technologies.</li>
</ul>
<h2 className="text-2xl font-semibold mt-4">7. Data Retention</h2>
<p>We retain your information only as long as necessary to provide you with our services.</p>
<h2 className="text-2xl font-semibold mt-4">8. Children's Privacy</h2>
<p>Our services are not intended for children under 13. We do not knowingly collect information from children under 13.</p>
<h2 className="text-2xl font-semibold mt-4">9. Changes to This Privacy Policy</h2>
<p>We may update our Privacy Policy. Any changes will be posted here with a revised "Last Updated" date.</p>
<h2 className="text-2xl font-semibold mt-4">10. Contact Us</h2>
<p>If you have any questions or concerns about this Privacy Policy, please contact us at:</p>
<p>Email: support@snigdhaos.com</p>
</div>
);
};
export default PrivacyPolicy;