import React, { useState, useEffect } from 'react'; import { NavLink, useLocation, useNavigate } from 'react-router-dom'; import { LayoutDashboard, Users, UserCircle, Bell, Search, Menu, X, LogOut, Hexagon, Settings, Building2 } from 'lucide-react'; import { getAttendances, getUsers, getUserById } from '../services/dataService'; import { User } from '../types'; const SidebarItem = ({ to, icon: Icon, label, collapsed }: { to: string, icon: any, label: string, collapsed: boolean }) => ( `flex items-center gap-3 px-4 py-3 rounded-xl transition-all duration-200 group ${ isActive ? 'bg-yellow-400 text-slate-900 font-semibold shadow-md shadow-yellow-400/20' : 'text-slate-500 hover:bg-slate-100 hover:text-slate-900' }` } > {!collapsed && {label}} ); export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const location = useLocation(); const navigate = useNavigate(); const [currentUser, setCurrentUser] = useState(null); useEffect(() => { const fetchCurrentUser = async () => { const storedUserId = localStorage.getItem('ctms_user_id'); if (!storedUserId || storedUserId === 'undefined' || storedUserId === 'null') { navigate('/login', { replace: true }); return; } try { const user = await getUserById(storedUserId); if (user) { setCurrentUser(user); } else { // User ID exists in storage but not in DB (deleted user?) localStorage.removeItem('ctms_user_id'); localStorage.removeItem('ctms_tenant_id'); navigate('/login', { replace: true }); } } catch (err) { console.error("Failed to fetch user:", err); // If API fails completely, we might want to allow offline mode or retry // For now, let's just log it. } }; fetchCurrentUser(); }, [navigate]); const handleLogout = () => { localStorage.removeItem('ctms_user_id'); localStorage.removeItem('ctms_tenant_id'); navigate('/login', { replace: true }); }; if (!currentUser) { const storedUserId = localStorage.getItem('ctms_user_id'); const isValid = storedUserId && storedUserId !== 'undefined' && storedUserId !== 'null'; if (!isValid) return null; return
Iniciando sessão...
; } const isSuperAdmin = currentUser.role === 'super_admin'; return (
{/* Sidebar */} {/* Main Content */}
{/* Header */}

{getPageTitle()}

{/* Search Bar */}
{/* Notifications */}
{/* Scrollable Content Area */}
{children}
{/* Overlay for mobile */} {isMobileMenuOpen && (
setIsMobileMenuOpen(false)} /> )}
); };