// src/components/Header.jsx
import React, { useState, useEffect, useRef } from 'react';
import { NavLink, useNavigate } from 'react-router-dom';
import LanguageSelector from './LanguageSelector';
import { useTranslation } from '../js/i18n';
import '../styles/Header.css';
import logo from '/assets/logo.png';

function Header() {
  const { t } = useTranslation();
  const navigate = useNavigate();
  const user = JSON.parse(localStorage.getItem('user'));
  const [menuOpen, setMenuOpen] = useState(false);
  const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
  const menuRef = useRef(null);

  const toggleMenu = () => {
    setMenuOpen(!menuOpen);
  };

  useEffect(() => {
    const handleClickOutside = (event) => {
      if (menuRef.current && !menuRef.current.contains(event.target)) {
        setMenuOpen(false);
      }
    };

    document.addEventListener('mousedown', handleClickOutside);
    return () => {
      document.removeEventListener('mousedown', handleClickOutside);
    };
  }, [menuRef]);

  const handleLogout = () => {
    localStorage.removeItem('user');
    navigate('/login');
    setMobileMenuOpen(false);
  };

  const toggleMobileMenu = () => {
    setMobileMenuOpen(!mobileMenuOpen);
  };

  const handleNavClick = () => {
    setMobileMenuOpen(false);
  };

  return (
    <header>
      <nav>
        <div className="logo-title-container">
          <NavLink to="/" className="title no-underline" onClick={handleNavClick}>
            <img src={logo} alt="Logo" className="logo" />
            {t('title')}
          </NavLink>
        </div>

        <button className="mobile-menu-button" onClick={toggleMobileMenu}>
          <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
            {mobileMenuOpen ? (
              <path d="M6 18L18 6M6 6l12 12" />
            ) : (
              <path d="M4 6h16M4 12h16M4 18h16" />
            )}
          </svg>
        </button>

        <div className={`menu-container ${mobileMenuOpen ? 'mobile-menu-open' : ''}`}>
          <div className="menu-items">
            <NavLink to="/dev-tools" onClick={handleNavClick}>
              {t('dev-tools.title')}
            </NavLink>
            <NavLink to="/image-tools" onClick={handleNavClick}>
              {t('image-tools.title')}
            </NavLink>
            <NavLink to="/ai-products" onClick={handleNavClick}>
              {t('ai-products.title')}
            </NavLink>
            <NavLink to="/blog" onClick={handleNavClick}>
              {t('blog.title')}
            </NavLink>
          </div>
          <div className="right-container">
            <LanguageSelector />
            <div className="auth-container">
              {user ? (
                <div className="user-info">
                  <div className="avatar-container" ref={menuRef}>
                    <img
                      src={user.picture}
                      alt="User Avatar"
                      className="avatar"
                      onClick={toggleMenu}
                    />
                    <div className={`dropdown-menu ${menuOpen ? 'active' : ''}`}>
                      <button onClick={handleLogout}>
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                          <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
                          <polyline points="16 17 21 12 16 7" />
                          <line x1="21" y1="12" x2="9" y2="12" />
                        </svg>
                        {t('logout')}
                      </button>
                    </div>
                  </div>
                </div>
              ) : (
                <NavLink to="/login" className="login-button">
                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                    <path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4" />
                    <polyline points="10 17 15 12 10 7" />
                    <line x1="15" y1="12" x2="3" y2="12" />
                  </svg>
                  {t('login')}
                </NavLink>
              )}
            </div>
          </div>
        </div>
      </nav>
    </header>
  );
}

export default Header;
