Skip to content
Snippets Groups Projects
Select Git revision
  • 3bc378d7c54a3f325039aa00712fb552ff192ab9
  • main default protected
2 results

SquareCell.java

Blame
  • Forked from TRAVERS Corentin / flooding-template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Navbar.jsx 3.77 KiB
    import React, { useEffect, useState } from "react";
    import { Link, useNavigate } from "react-router-dom";
    import { CheckCircle, Sun, Moon } from "lucide-react";
    import { useTheme } from "@context/ThemeContext";
    
    const Navbar = () => {
        const [isAuthenticated, setIsAuthenticated] = useState(!!localStorage.getItem("user"));
        const navigate = useNavigate();
        const { theme, toggleTheme } = useTheme();
    
        useEffect(() => {
    
            const handleStorageChange = () => {
                setIsAuthenticated(!!localStorage.getItem("user"));
            };
    
    
            window.addEventListener("storage", handleStorageChange);
    
            return () => {
    
                window.removeEventListener("storage", handleStorageChange);
            };
        }, []);
    
        const handleLogout = () => {
            localStorage.removeItem("user");
            setIsAuthenticated(false);
            navigate("/");
        };
    
        return (
            <nav className="bg-white dark:bg-gray-900 shadow-md transition-colors">
                <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 items-center">
                            <Link to="/home" className="flex items-center gap-2">
                                <CheckCircle className="h-8 w-8 text-violet-600 dark:text-violet-400" />
                                <span className="text-xl font-semibold text-gray-900 dark:text-white">TaskMaster</span>
                            </Link>
                        </div>
    
                        <div className="flex items-center gap-6">
                        {isAuthenticated ? (
                            <Link
                                to="/home"
                                className="text-gray-700 dark:text-white hover:text-violet-600 dark:hover:text-violet-400 px-3 py-2 rounded-md text-sm font-medium"
                            >
                                Dashboard
                            </Link>) : (<p></p>)}
                        
    
                        
                            
    
                            {/* Bouton Light/Dark Mode */}
                            <button onClick={toggleTheme} className="p-2 rounded-md bg-gray-200 dark:bg-gray-700">
                                {theme === "light" ? <Moon className="h-5 w-5 text-gray-700" /> : <Sun className="h-5 w-5 text-yellow-400" />}
                            </button>
    
                            <div className="flex items-center gap-2">
                                {isAuthenticated ? (
    
                                    <button
                                        onClick={handleLogout}
                                        className="bg-red-500 text-white hover:bg-red-600 px-4 py-2 rounded-md text-sm font-medium"
                                    >
                                        Logout
                                    </button>
                                ) : (
    
                                    <>
                                        <Link
                                            to="/"
                                            className="text-gray-700 dark:text-white hover:text-violet-600 dark:hover:text-violet-400 px-3 py-2 rounded-md text-sm font-medium"
                                        >
                                            Login
                                        </Link>
                                        <Link
                                            to="/signup"
                                            className="bg-violet-600 text-white hover:bg-violet-700 px-4 py-2 rounded-md text-sm font-medium"
                                        >
                                            Signup
                                        </Link>
                                    </>
                                )}
                            </div>
                        </div>
                    </div>
                </div>
            </nav>
        );
    };
    
    export default Navbar;