import { useState, useEffect } from 'react' import { Outlet, NavLink, useNavigate, useLocation } from 'react-router-dom' import { LayoutDashboard, FileText, Wallet, ClipboardList, Building2, BarChart3, Users, LogOut, Menu, X, Flame, ChevronLeft, Bell, Search, Leaf, Shield, Upload, Target, Settings } from 'lucide-react' import { User } from '../types' interface NavItem { path: string; label: string; icon: React.ReactNode; adminOnly?: boolean; } const navItems: NavItem[] = [ { path: '/app', label: 'Dashboard', icon: }, { path: '/app/demandas', label: 'Demandas', icon: }, { path: '/app/orcamentos', label: 'Orçamentos', icon: }, { path: '/app/ordens-servico', label: 'Ordens de Serviço', icon: }, { path: '/app/fornecedores', label: 'Fornecedores', icon: }, { path: '/app/relatorios', label: 'Relatórios', icon: }, { path: '/app/esg', label: 'ESG', icon: }, { path: '/app/kpis', label: 'KPIs', icon: }, { path: '/app/metas', label: 'Metas', icon: }, { path: '/app/auditoria', label: 'Auditoria', icon: }, { path: '/app/importacao', label: 'Importação', icon: }, { path: '/app/alertas-config', label: 'Alertas', icon: }, { path: '/app/configuracao', label: 'Configuração', icon: }, { path: '/app/usuarios', label: 'Usuários', icon: , adminOnly: true }, ] export default function Layout() { const [sidebarOpen, setSidebarOpen] = useState(true) const [mobileMenuOpen, setMobileMenuOpen] = useState(false) const [user, setUser] = useState(null) const navigate = useNavigate() const location = useLocation() useEffect(() => { const userData = localStorage.getItem('user') if (userData) { setUser(JSON.parse(userData)) } }, []) const handleLogout = () => { localStorage.removeItem('token') localStorage.removeItem('user') navigate('/login') } const isAdmin = user?.perfil?.toLowerCase() === 'admin' || user?.perfil?.toLowerCase() === 'administrador' const filteredNavItems = navItems.filter(item => !item.adminOnly || isAdmin) return (
{/* Desktop Sidebar */} {/* Mobile Menu Overlay */} {mobileMenuOpen && (
setMobileMenuOpen(false)} /> )} {/* Mobile Sidebar */} {/* Main Content */}
{/* Header */}
{user?.nome?.charAt(0).toUpperCase() || 'U'}
{user?.nome?.split(' ')[0] || 'Usuário'}
{/* Page Content */}
) }