import React from 'react'; import { useCRM } from '../context/CRMContext'; import { useNavigate } from 'react-router-dom'; import clsx from 'clsx'; import { TrendingUp, TrendingDown, DollarSign, Activity, ArrowRight, Package } from 'lucide-react'; const Dashboard: React.FC = () => { const { orders, inventory, suppliers } = useCRM(); const navigate = useNavigate(); // Financial Calculation const activeOrders = orders.filter(o => o.status === 'Pending' || o.status === 'Paid'); const totalInvested = activeOrders.reduce((acc, o) => acc + o.totalCostWithOverhead, 0); // Mocking a growth metric for demonstration const totalProfitHistory = orders.filter(o => o.status === 'Received').reduce((acc, o) => acc + o.estimatedProfit, 0); const inventoryValue = inventory.reduce((acc, i) => acc + ((Number(i.marketPriceBRL) || 0) * (Number(i.quantity) || 0)), 0); // "Am I winning?" - Net Result (Mocked relative to investment for delta) const netResultDelta = totalInvested > 0 ? (totalProfitHistory / totalInvested) * 100 : 0; const isWinning = netResultDelta >= 0; return (
{/* HERDER: "Am I winning?" Context */}

Visão Geral

Performance financeira e operacional.

Resultado Líquido (YTD)

{isWinning ? : } R$ {totalProfitHistory.toLocaleString('pt-BR')}
{/* HIGH PRECISION METRICS GRID */}
{/* Metric 1: Capital Allocation */}

Capital Alocado

R$ {totalInvested.toLocaleString('pt-BR')}

+12% vs. mês ant.
{/* Metric 2: Stock Value (Liquidity) */}

Valor em Estoque

R$ {inventoryValue.toLocaleString('pt-BR')}

Giro: 15 dias
{/* Metric 3: Margin */}

Margem Média

24.5%

-2.1% (Pressão de Custo)
{/* Metric 4: Active Orders */}

Ordens Ativas

{activeOrders.length}

{/* DATA DENSITY TABLE (Bloomberg Style) */}
{/* ORDER FLOW */}

Fluxo de Pedidos

{orders.length === 0 ? ( ) : ( orders.slice(0, 8).map(o => ( )) )}
ID Fornecedor Valor Status
Sem dados recentes.
{o.id.substring(0, 8)}... {o.supplierName} R$ {o.totalCostWithOverhead.toLocaleString('pt-BR')} {o.status.toUpperCase()}
{/* SUPPLIER PERFORMANCE (Compact List) */}

Top Fornecedores

{suppliers.slice(0, 6).map((s, i) => (
{i + 1}

{s.name}

Eletrônicos • PY

+ R$ 45k

))}
); }; export default Dashboard;