import React, { useState } from 'react'; import { NavLink, useLocation } from 'react-router-dom'; import { LayoutDashboard, Search, History, Boxes, Store, Users, TrendingUp, LogOut, Wallet, ShoppingCart, Package, BarChart3, Settings, Printer, Scroll, ChevronDown, ChevronRight, Calculator } from 'lucide-react'; import { useCRM } from '../context/CRMContext'; import clsx from 'clsx'; interface SidebarProps { isOpen?: boolean; onClose?: () => void; } type NavItem = { to?: string; icon: React.ElementType; label: string; children?: { to: string; icon: React.ElementType; label: string }[]; }; const Sidebar: React.FC = ({ isOpen = false, onClose }) => { const { user, isAdmin, signOut } = useCRM(); const currentUser = user; const location = useLocation(); // State to track expanded modules const [expandedModules, setExpandedModules] = useState>({ 'Impressão 3D': true // Default open for visibility }); const toggleModule = (label: string) => { setExpandedModules(prev => ({ ...prev, [label]: !prev[label] })); }; const navItems: NavItem[] = [ { to: '/', icon: LayoutDashboard, label: 'Dashboard' }, // Módulo Impressão 3D { icon: Printer, label: 'Impressão 3D', children: [ { to: '/printing/calculator', icon: Calculator, label: 'Calculadora' }, { to: '/printing/filaments', icon: Scroll, label: 'Filamentos' }, { to: '/printing/printers', icon: Settings, label: 'Impressoras' }, ] }, { to: '/sales', icon: ShoppingCart, label: 'Vendas' }, { to: '/sourcing', icon: Search, label: 'Sourcing' }, { to: '/products', icon: Package, label: 'Produtos' }, { to: '/orders', icon: History, label: 'Pedidos' }, { to: '/financial', icon: Wallet, label: 'Financeiro' }, { to: '/customers', icon: Users, label: 'Clientes' }, { to: '/inventory', icon: Boxes, label: 'Estoque' }, { to: '/suppliers', icon: Store, label: 'Fornecedores' }, { to: '/reports', icon: BarChart3, label: 'Relatórios' }, { to: '/users', icon: Users, label: 'Usuários' }, { to: '/settings', icon: Settings, label: 'Configurações' } ]; return ( <> {/* Mobile Overlay */} {isOpen && (
)} ); }; export default Sidebar;