From 95913578e9098a0b68b2c4bf11e7c6c7c935f7fd Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Tue, 23 Dec 2025 08:05:51 -0300 Subject: [PATCH] Add profile dropdown to marketplace header --- marketplace/src/components/Header.tsx | 62 ++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/marketplace/src/components/Header.tsx b/marketplace/src/components/Header.tsx index c39ad13..eb45926 100644 --- a/marketplace/src/components/Header.tsx +++ b/marketplace/src/components/Header.tsx @@ -1,3 +1,4 @@ +import { useEffect, useRef, useState } from 'react' import { Link, useLocation } from 'react-router-dom' import { useAuth } from '../context/AuthContext' @@ -14,6 +15,21 @@ const navItems = [ export function Header() { const { user, logout } = useAuth() const location = useLocation() + const [isOpen, setIsOpen] = useState(false) + const dropdownRef = useRef(null) + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { + setIsOpen(false) + } + } + + document.addEventListener('mousedown', handleClickOutside) + return () => { + document.removeEventListener('mousedown', handleClickOutside) + } + }, []) return (
@@ -48,19 +64,45 @@ export function Header() { {/* User info */} -
-
- - {user?.name} - -

{user?.role}

-
+
+ + {isOpen && ( +
+ setIsOpen(false)} + > + Meu perfil + + +
+ )}