From 4e9b743928ac8bd0db4d0ea35dbff7d91dab2878 Mon Sep 17 00:00:00 2001 From: yagostn Date: Thu, 4 Dec 2025 10:36:33 -0300 Subject: [PATCH] feat: atuializacao de layout --- frontend/components/Navbar.tsx | 183 ++++++++++++++++++++++++++++++--- frontend/pages/Calendar.tsx | 10 +- frontend/pages/Home.tsx | 8 +- frontend/pages/Login.tsx | 68 +++++++----- frontend/pages/Register.tsx | 23 +++-- 5 files changed, 233 insertions(+), 59 deletions(-) diff --git a/frontend/components/Navbar.tsx b/frontend/components/Navbar.tsx index e6f3f33..234776c 100644 --- a/frontend/components/Navbar.tsx +++ b/frontend/components/Navbar.tsx @@ -30,6 +30,19 @@ export const Navbar: React.FC = ({ onNavigate, currentPage }) => { return () => window.removeEventListener("scroll", handleScroll); }, []); + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (isAccountDropdownOpen) { + const target = event.target as HTMLElement; + if (!target.closest('.relative')) { + setIsAccountDropdownOpen(false); + } + } + }; + document.addEventListener("mousedown", handleClickOutside); + return () => document.removeEventListener("mousedown", handleClickOutside); + }, [isAccountDropdownOpen]); + const getLinks = () => { if (!user) return []; @@ -213,16 +226,14 @@ export const Navbar: React.FC = ({ onNavigate, currentPage }) => { onClick={() => setIsAccountDropdownOpen(!isAccountDropdownOpen) } - className="flex items-center gap-2 p-2 rounded-full hover:bg-gray-100 transition-colors" + className="flex items-center gap-2 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors shadow-md" >

Olá, bem-vindo(a)

-

- Entrar / Cadastrar -

+

Entrar/Cadastrar

@@ -234,7 +245,8 @@ export const Navbar: React.FC = ({ onNavigate, currentPage }) => {
-

Olá, bem-vindo(a)

+

Olá, bem-vindo(a)

+

Entrar/Cadastrar

{/* Botões */} @@ -267,14 +279,159 @@ export const Navbar: React.FC = ({ onNavigate, currentPage }) => { )} - {/* Mobile Button */} -
- + {/* Mobile Buttons */} +
+ {user ? ( + <> +
+ + + {/* Profile Preview Dropdown Mobile */} + {isAccountDropdownOpen && ( +
+ {/* Header com foto e info */} +
+
+ {user.name} +
+

{user.name}

+

{user.email}

+ + {getRoleLabel()} + +
+ + {/* Menu Items */} +
+ {/* Editar Perfil - Apenas para Fotógrafos e Clientes */} + {(user.role === UserRole.PHOTOGRAPHER || user.role === UserRole.EVENT_OWNER) && ( + + )} + + {/* Configurações - Apenas para CEO e Business Owner */} + {(user.role === UserRole.BUSINESS_OWNER || user.role === UserRole.SUPERADMIN) && ( + + )} + + {/* Sair */} + +
+
+ )} +
+ + {/* Menu Hamburguer - Apenas para usuários logados */} + + + ) : ( +
+ + + {/* Dropdown Popup Mobile */} + {isAccountDropdownOpen && ( +
+ {/* Header com ícone */} +
+
+ +
+

Olá, bem-vindo(a)

+

Entrar/Cadastrar

+
+ + {/* Botões */} +
+ + + +
+
+ )} +
+ )}
diff --git a/frontend/pages/Calendar.tsx b/frontend/pages/Calendar.tsx index a0ccae1..2411358 100644 --- a/frontend/pages/Calendar.tsx +++ b/frontend/pages/Calendar.tsx @@ -162,7 +162,7 @@ export const CalendarPage: React.FC = () => { {/* Header */}
-

+

Minha Agenda

@@ -170,14 +170,6 @@ export const CalendarPage: React.FC = () => {

- -
diff --git a/frontend/pages/Home.tsx b/frontend/pages/Home.tsx index 5e2203b..474ae7d 100644 --- a/frontend/pages/Home.tsx +++ b/frontend/pages/Home.tsx @@ -230,22 +230,22 @@ export const Home: React.FC = ({ onEnter }) => { @@ -90,7 +99,7 @@ export const Login: React.FC = ({ onNavigate }) => { value={email} onChange={(e) => setEmail(e.target.value)} className="w-full px-3 sm:px-4 py-2.5 sm:py-3 text-sm sm:text-base border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:border-transparent transition-all" - style={{focusRing: '2px solid #B9CF33'}} + style={{ focusRing: '2px solid #B9CF33' }} onFocus={(e) => e.target.style.borderColor = '#B9CF33'} onBlur={(e) => e.target.style.borderColor = '#d1d5db'} /> @@ -121,22 +130,22 @@ export const Login: React.FC = ({ onNavigate }) => { type="submit" disabled={isLoading} className="w-full px-6 sm:px-10 py-3 sm:py-4 text-white font-bold text-base sm:text-lg rounded-lg transition-all duration-300 transform hover:scale-[1.02] hover:shadow-xl active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed" - style={{backgroundColor: '#4E345F'}} + style={{ backgroundColor: '#4E345F' }} > {isLoading ? 'Entrando...' : 'Entrar no Sistema'} - {/* Demo Users Quick Select */} + {/* Demo Users Quick Select - Melhorado para Mobile */}

Usuários de Demonstração (Clique para preencher)

-
+
{availableUsers.map(user => ( ))}
diff --git a/frontend/pages/Register.tsx b/frontend/pages/Register.tsx index fd28c8e..aee64b0 100644 --- a/frontend/pages/Register.tsx +++ b/frontend/pages/Register.tsx @@ -81,7 +81,7 @@ export const Register: React.FC = ({ onNavigate }) => { }; addInstitution(newInstitution); setShowInstitutionForm(false); - + // Complete registration setIsLoading(true); setTimeout(() => { @@ -149,15 +149,24 @@ export const Register: React.FC = ({ onNavigate }) => { {/* Right Side - Form */}
+ {/* Logo Mobile */} +
+ Photum Formaturas +
+
- Comece agora + Comece agora

Crie sua conta

Já tem uma conta?{' '} @@ -221,7 +230,7 @@ export const Register: React.FC = ({ onNavigate }) => { checked={agreedToTerms} onChange={(e) => setAgreedToTerms(e.target.checked)} className="mt-0.5 sm:mt-1 h-4 w-4 flex-shrink-0 border-gray-300 rounded focus:ring-2" - style={{accentColor: '#B9CF33'}} + style={{ accentColor: '#B9CF33' }} />