import React from 'react'; import { useFleetData } from '../hooks/useFleetData'; import { Truck, Wrench, Fuel, MapPin, AlertCircle, ClipboardCheck, Store, Navigation, ArrowUpRight, TrendingUp } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent } from '@/components/ui/card'; import { cn } from '@/lib/utils'; import { motion } from 'framer-motion'; import { StatsGrid, DataTable } from '@/components/shared'; import { TableRow, TableCell } from '@/components/ui/table'; const TABLE_COLUMNS = ['Placa', 'Modelo', 'Status', 'Localização / Base', 'Motorista Responsável']; /** * StatCard - Componente local para replicar o design de "Icon Box" do mockup */ const StatCard = ({ label, value, icon, colorClass, statusDesc }) => (

{label}

{value}

{statusDesc &&

{statusDesc}

}
{React.cloneElement(icon, { size: 28, strokeWidth: 2.5 })}
); /** * Visão Geral (Dashboard) do ambiente Fleet V2. * Replica o layout de grids e cards do mockup. */ export const DashboardView = () => { const { veiculos, stats } = useFleetData(); const primaryStats = React.useMemo(() => [ { label: 'Frota Total', value: stats.total, icon: , color: 'bg-primary/10 text-primary' }, { label: 'Em Operação', value: stats.operacao, icon: , color: 'bg-emerald-100 text-emerald-600' }, { label: 'Em Manutenção', value: stats.manutencao, icon: , color: 'bg-rose-100 text-rose-600' }, { label: 'Abastecimentos (Mês)', value: stats.abastecimentosMes, icon: , color: 'bg-amber-100 text-amber-600' }, ], [stats]); const secondaryStats = React.useMemo(() => [ { label: 'Checklists Realizados', value: stats.checklists, icon: , color: 'bg-teal-100 text-teal-600' }, { label: 'Alertas Monitoramento', value: stats.alertas, icon: , color: 'bg-primary/10 text-primary' }, { label: 'SLA MÁXIMO', value: '4.8h', icon: , color: 'bg-emerald-500 text-white', statusDesc: 'Meta de Performance' }, ], [stats]); const renderVehicleRow = (v) => (
{v.uf || 'SP'}
{v.placa}
{v.modelo} {v.status === 'operacao' ? 'Em Operação' : v.status === 'manutencao' ? 'Manutenção' : 'Parado'}
{v.base}
{v.motorista.substring(0, 2).toUpperCase()}
{v.motorista}
); return (
{/* Linha 1: Frota Macro (4 cards) */}
{primaryStats.map((stat, i) => ( ))}
{/* Linha 2: Monitoramento e Qualidade (3 cards) */}
{secondaryStats.map((stat, i) => ( ))}
{/* Tabela de Resumo */}

Resumo da Frota

Status em Tempo Real

); }; export default DashboardView;