diff --git a/client/src/App.jsx b/client/src/App.jsx index cf66fbd..d7b7c94 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -81,29 +81,32 @@ const App = () => { )} - - - } - /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - + {/* Offset for fixed navbar height */} +
+ + + } + /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + +
); }; diff --git a/client/src/components/footer.jsx b/client/src/components/footer.jsx index 2b8d958..d41a678 100644 --- a/client/src/components/footer.jsx +++ b/client/src/components/footer.jsx @@ -1,446 +1,254 @@ -import React, { useState, useEffect } from "react"; -import { Bot, Home, Info, Star, Mail, Github, Twitter, Linkedin, Zap, Shield, Users, Globe } from 'lucide-react'; -const Footer = () => { - const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 }); - const [isHovered, setIsHovered] = useState(false); - useEffect(() => { - const handleMouseMove = (e) => { - setMousePosition({ - x: (e.clientX / window.innerWidth) * 100, - y: (e.clientY / window.innerHeight) * 100, - }); - }; - - window.addEventListener('mousemove', handleMouseMove); - return () => window.removeEventListener('mousemove', handleMouseMove); - }, []); - - const navigationLinks = [ - { icon: , label: 'Home', href: '#home' }, - { icon: , label: 'About', href: '#about' }, - { icon: , label: 'Features', href: '#features' }, - { icon: , label: 'Testimonials', href: '#testimonials' }, - { icon: , label: 'Contact', href: '#contact' } - ]; - - const socialLinks = [ - { icon: , label: 'GitHub', color: 'hover:text-gray-300' }, - { icon: , label: 'Twitter', color: 'hover:text-blue-400' }, - { icon: , label: 'LinkedIn', color: 'hover:text-blue-500' }, - { icon: , label: 'Website', color: 'hover:text-green-400' } - ]; - - const features = [ - { - icon: , - title: 'Advanced AI', - desc: 'Next-gen conversational intelligence', - gradient: 'from-blue-400 to-cyan-500' - }, - { - icon: , - title: 'Lightning Fast', - desc: 'Instant responses worldwide', - gradient: 'from-yellow-400 to-orange-500' - }, - { - icon: , - title: 'Ultra Secure', - desc: 'End-to-end encryption', - gradient: 'from-green-400 to-emerald-500' - }, - { - icon: , - title: 'Global Community', - desc: 'Millions of active users', - gradient: 'from-purple-400 to-pink-500' - } - ]; +import { + ExternalLink, + Github, + Heart, + Instagram, + Linkedin, + Mail, + MapPin, + MessageCircle, + Twitter +} from 'lucide-react'; +import ScrollToTopLink from './ScrollToTopLink'; + +const Footer = ({ variant = 'default' }) => { +const currentYear = new Date().getFullYear(); + +// Clean, structured footer variants focused on layout +const getFooterStyle = () => { + switch (variant) { + case 'auth': + return 'bg-slate-900/95 backdrop-blur-sm text-white border-t border-slate-700'; + case 'chat': + return 'bg-slate-800 text-slate-300 border-t border-slate-600'; + default: + return 'bg-slate-900 text-white border-t border-slate-700'; + } +}; - const stats = [ - { value: '2M+', label: 'Conversations', color: 'text-cyan-400' }, - { value: '100K+', label: 'Active Users', color: 'text-purple-400' }, - { value: '99.99%', label: 'Uptime', color: 'text-green-400' }, - { value: '4.9★', label: 'User Rating', color: 'text-yellow-400' } - ]; +// Structured content sections for clear organization +const footerSections = { + about: { + title: "About ChatterSpace", + content: [ + "A modern, open-source, Discord-like experience for community-driven platforms, remote collaboration, and knowledge-sharing spaces.", + "Scalable, modular, and real-time conversations platform with seamless integration capabilities." + ] + }, + quickLinks: [ + { label: "Home", href: "/" }, + { label: "Features", href: "/features" }, + { label: "Getting Started", href: "/getting-started" }, + { label: "Documentation", href: "/documentation" }, + { label: "Tech Stack", href: "/tech-stack" }, + { label: "How to Contribute", href: "/contributing" } + ], + community: [ + { label: "GitHub Repository", href: "https://github.com/devayanm/ChatterSpace" }, + { label: "Contributing Guide", href: "/contributing" }, + { label: "Code of Conduct", href: "/code-of-conduct" }, + { label: "Issues & Bugs", href: "/issues" }, + { label: "Feature Requests", href: "/feature-requests" }, + { label: "MIT License", href: "/license" } + ], + contact: { + email: "devayan9689@gmail.com", + location: "Open Source Project", + social: [ + { platform: "GitHub", icon: , href: "https://github.com/devayanm" }, + { platform: "LinkedIn", icon: , href: "https://linkedin.com/in/devayan-mandal" }, + { platform: "Twitter", icon: , href: "https://twitter.com/devayan45" }, + { platform: "Instagram", icon: , href: "https://instagram.com/iamdevayan" } + ] + } +}; - return ( - - ); +
+ + Privacy Policy + + + Terms of Service + + v1.0.0 +
+ + + + +); }; export default Footer; \ No newline at end of file diff --git a/client/src/components/navbar.jsx b/client/src/components/navbar.jsx index 01d9b83..8809eb2 100644 --- a/client/src/components/navbar.jsx +++ b/client/src/components/navbar.jsx @@ -1,132 +1,69 @@ -import React, { useState } from "react"; -import { - MessageCircle, - Menu, - X, - Info, - Mail, - Star, -} from "lucide-react"; -const Navbar = ({ onLoginClick, onSignupClick }) => { - const [isMenuOpen, setIsMenuOpen] = useState(false); - const [activeItem, setActiveItem] = useState("Home"); - const menuItems = [ - { name: "About", icon: }, - { name: "Testimonials", icon: }, - { name: "Footer", icon: }, - ]; +// src/components/Navbar.jsx +import React, { useState } from 'react'; +import { MessageCircle, Menu, X } from 'lucide-react'; - // Smooth scroll - const handleScroll = (sectionId, itemName) => { - const section = document.getElementById(sectionId.toLowerCase()); - if (section) { - section.scrollIntoView({ behavior: "smooth" }); - setActiveItem(itemName); - setIsMenuOpen(false); - } - }; +// importing useNavigate +import { Link, useNavigate } from 'react-router-dom'; +export default function Navbar() { + const [menuOpen, setMenuOpen] = useState(false); + + const toggleMenu = () => setMenuOpen(!menuOpen); + + const navigate = useNavigate(); + const handleSignup = ()=>{ + navigate('/authpage'); + } return ( -