mirror of
https://github.com/Snigdha-OS/snigdhaos-web-dev.git
synced 2025-09-07 13:25:12 +02:00
add pages
This commit is contained in:
@@ -7,6 +7,8 @@ import About from './pages/About';
|
|||||||
import Features from './pages/Features';
|
import Features from './pages/Features';
|
||||||
import Download from './pages/Download';
|
import Download from './pages/Download';
|
||||||
import Developers from './pages/Developers';
|
import Developers from './pages/Developers';
|
||||||
|
import PrivacyPolicy from './pages/PrivacyPolicy'; // Import the PrivacyPolicy page
|
||||||
|
import CookieNotice from './components/CookieNotice'; // Cookie Notice
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
@@ -20,8 +22,10 @@ function App() {
|
|||||||
<Route path="/features" element={<Features />} />
|
<Route path="/features" element={<Features />} />
|
||||||
<Route path="/download" element={<Download />} />
|
<Route path="/download" element={<Download />} />
|
||||||
<Route path="/developers" element={<Developers />} />
|
<Route path="/developers" element={<Developers />} />
|
||||||
|
<Route path="/privacy-policy" element={<PrivacyPolicy />} /> {/* Privacy Policy Route */}
|
||||||
</Routes>
|
</Routes>
|
||||||
</main>
|
</main>
|
||||||
|
<CookieNotice />
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
</Router>
|
</Router>
|
||||||
|
42
src/components/CookieNotice.tsx
Normal file
42
src/components/CookieNotice.tsx
Normal 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;
|
@@ -1,5 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Github, Twitter, Youtube } from 'lucide-react';
|
import { FaGithub, FaDev } from 'react-icons/fa';
|
||||||
|
|
||||||
export default function Footer() {
|
export default function Footer() {
|
||||||
return (
|
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="/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="/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="/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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<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="/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="/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="/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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h4 className="text-lg font-semibold mb-4">Connect</h4>
|
<h4 className="text-lg font-semibold mb-4">Connect</h4>
|
||||||
<div className="flex space-x-4">
|
<div className="flex space-x-4">
|
||||||
<a href="https://github.com/snigdha-os" className="text-gray-400 hover:text-[#754ffe]">
|
<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>
|
||||||
<a href="https://twitter.com/snigdhaos" className="text-gray-400 hover:text-[#754ffe]">
|
<a href="https://dev.to/snigdhaos" className="text-gray-400 hover:text-[#754ffe]">
|
||||||
<Twitter className="h-6 w-6" />
|
<FaDev 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>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</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">
|
<div className="mt-8 pt-8 border-t border-gray-800 text-center text-gray-400">
|
||||||
<p>© {new Date().getFullYear()} Snigdha OS. All rights reserved.</p>
|
<p>© {new Date().getFullYear()} Snigdha OS. All rights reserved.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
import { Menu, X, Terminal } from 'lucide-react';
|
import { Menu, X, Terminal } from 'lucide-react';
|
||||||
|
import { FaGithub, FaDev } from 'react-icons/fa';
|
||||||
|
|
||||||
export default function Navbar() {
|
export default function Navbar() {
|
||||||
const [isOpen, setIsOpen] = React.useState(false);
|
const [isOpen, setIsOpen] = React.useState(false);
|
||||||
@@ -16,7 +17,7 @@ export default function Navbar() {
|
|||||||
return (
|
return (
|
||||||
<nav className="bg-white shadow-md">
|
<nav className="bg-white shadow-md">
|
||||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
<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">
|
<div className="flex items-center">
|
||||||
<NavLink to="/" className="flex items-center">
|
<NavLink to="/" className="flex items-center">
|
||||||
<Terminal className="h-8 w-8 text-[#754ffe]" />
|
<Terminal className="h-8 w-8 text-[#754ffe]" />
|
||||||
@@ -29,7 +30,7 @@ export default function Navbar() {
|
|||||||
<NavLink
|
<NavLink
|
||||||
key={path}
|
key={path}
|
||||||
to={path}
|
to={path}
|
||||||
className={({isActive}) =>
|
className={({ isActive }) =>
|
||||||
`${isActive ? 'text-[#754ffe]' : 'text-gray-700'} hover:text-[#754ffe] transition-colors`
|
`${isActive ? 'text-[#754ffe]' : 'text-gray-700'} hover:text-[#754ffe] transition-colors`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
@@ -38,6 +39,26 @@ export default function Navbar() {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</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">
|
<div className="md:hidden flex items-center">
|
||||||
<button
|
<button
|
||||||
onClick={() => setIsOpen(!isOpen)}
|
onClick={() => setIsOpen(!isOpen)}
|
||||||
@@ -68,4 +89,4 @@ export default function Navbar() {
|
|||||||
)}
|
)}
|
||||||
</nav>
|
</nav>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
65
src/pages/PrivacyPolicy.tsx
Normal file
65
src/pages/PrivacyPolicy.tsx
Normal 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;
|
Reference in New Issue
Block a user