import React from 'react'; import { TrendingUp, TrendingDown, AlertTriangle, CheckCircle, Clock, DollarSign } from 'lucide-react'; import { Card, Badge } from '../../components/ui'; import { PageHeader } from '../../components/layout'; import { DashboardCard, KPIWidget, QuickActions, RecentActivity, ActivityType, ActivityStatus } from '../../components/domain/dashboard'; const DashboardPage: React.FC = () => { const kpiData = [ { title: 'Ventas Hoy', value: { current: 1247, previous: 1112, format: 'currency' as const, prefix: '€' }, trend: { direction: 'up' as const, value: 12, isPositive: true, comparisonPeriod: 'vs ayer' }, icon: , }, { title: 'Órdenes Pendientes', value: { current: 23, previous: 24, format: 'number' as const }, trend: { direction: 'down' as const, value: 4.2, isPositive: false, comparisonPeriod: 'vs ayer' }, icon: , }, { title: 'Productos Vendidos', value: { current: 156, previous: 144, format: 'number' as const }, trend: { direction: 'up' as const, value: 8.3, isPositive: true, comparisonPeriod: 'vs ayer' }, icon: , }, { title: 'Stock Crítico', value: { current: 4, previous: 2, format: 'number' as const }, trend: { direction: 'up' as const, value: 100, isPositive: false, comparisonPeriod: 'vs ayer' }, status: 'warning' as const, icon: , }, ]; const quickActions = [ { id: 'production', title: 'Nueva Orden de Producción', description: 'Crear nueva orden de producción', icon: , onClick: () => window.location.href = '/app/operations/production', href: '/app/operations/production' }, { id: 'inventory', title: 'Gestionar Inventario', description: 'Administrar stock de productos', icon: , onClick: () => window.location.href = '/app/operations/inventory', href: '/app/operations/inventory' }, { id: 'sales', title: 'Ver Ventas', description: 'Analizar ventas y reportes', icon: , onClick: () => window.location.href = '/app/analytics/sales', href: '/app/analytics/sales' }, { id: 'settings', title: 'Configuración', description: 'Ajustar configuración del sistema', icon: , onClick: () => window.location.href = '/app/settings', href: '/app/settings' }, ]; const recentActivities = [ { id: '1', type: ActivityType.PRODUCTION, title: 'Orden de producción completada', description: 'Pan de Molde Integral - 20 unidades', timestamp: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(), status: ActivityStatus.SUCCESS, }, { id: '2', type: ActivityType.INVENTORY, title: 'Stock bajo detectado', description: 'Levadura fresca necesita reposición', timestamp: new Date(Date.now() - 3 * 60 * 60 * 1000).toISOString(), status: ActivityStatus.WARNING, }, { id: '3', type: ActivityType.SALES, title: 'Venta registrada', description: '€45.50 - Croissants y café', timestamp: new Date(Date.now() - 4 * 60 * 60 * 1000).toISOString(), status: ActivityStatus.INFO, }, ]; const productionStatus = { today: { target: 150, completed: 95, inProgress: 18, pending: 37, }, efficiency: 85, }; const salesData = { today: 1247, yesterday: 1112, thisWeek: 8934, thisMonth: 35678, }; const inventoryAlerts = [ { item: 'Levadura Fresca', current: 2, min: 5, status: 'critical' }, { item: 'Harina Integral', current: 8, min: 10, status: 'low' }, { item: 'Mantequilla', current: 15, min: 20, status: 'low' }, ]; const topProducts = [ { name: 'Pan de Molde', sold: 45, revenue: 202.50 }, { name: 'Croissants', sold: 32, revenue: 192.00 }, { name: 'Baguettes', sold: 28, revenue: 84.00 }, { name: 'Magdalenas', sold: 24, revenue: 72.00 }, ]; return (
{/* KPI Cards */}
{kpiData.map((kpi, index) => ( ))}
{/* Production Status */}

Estado de Producción

Progreso del Día {productionStatus.today.completed} / {productionStatus.today.target}

{productionStatus.today.completed}

Completado

{productionStatus.today.inProgress}

En Proceso

{productionStatus.today.pending}

Pendiente

Eficiencia {productionStatus.efficiency}%
{/* Sales Summary */}

Resumen de Ventas

Hoy €{salesData.today.toLocaleString()}
Ayer
€{salesData.yesterday.toLocaleString()} {salesData.today > salesData.yesterday ? ( ) : ( )}
Esta Semana €{salesData.thisWeek.toLocaleString()}
Este Mes €{salesData.thisMonth.toLocaleString()}

Crecimiento vs ayer

+{(((salesData.today - salesData.yesterday) / salesData.yesterday) * 100).toFixed(1)}%

{/* Inventory Alerts */}

Alertas de Inventario

{inventoryAlerts.map((alert, index) => (

{alert.item}

Stock: {alert.current} / Mín: {alert.min}

{alert.status === 'critical' ? 'Crítico' : 'Bajo'}
))}
{/* Top Products */}

Productos Más Vendidos

{topProducts.map((product, index) => (
{index + 1}. {product.name}

{product.sold} unidades

€{product.revenue.toFixed(2)}

))}
{/* Recent Activity */}

Actividad Reciente

{/* Quick Actions */}

Acciones Rápidas

); }; export default DashboardPage;