import React from 'react'; import { Badge, ProgressBar } from '../ui'; import { CheckCircle, XCircle, Loader2, Clock } from 'lucide-react'; import { ServiceProgress } from '@/api/services/demo'; interface Props { progress: Record; } const SERVICE_LABELS: Record = { tenant: 'Tenant Virtual', inventory: 'Inventario y Productos', recipes: 'Recetas', sales: 'Historial de Ventas', orders: 'Pedidos de Clientes', suppliers: 'Proveedores', production: 'Producción', forecasting: 'Pronósticos', }; const SERVICE_DESCRIPTIONS: Record = { tenant: 'Creando tu entorno demo aislado', inventory: 'Cargando ingredientes, recetas y datos de stock', recipes: 'Configurando recetas y fórmulas', sales: 'Importando registros de ventas históricas', orders: 'Configurando pedidos de clientes', suppliers: 'Importando datos de proveedores', production: 'Configurando lotes de producción', forecasting: 'Preparando datos de pronósticos', }; export const DemoProgressIndicator: React.FC = ({ progress }) => { return (
{Object.entries(progress).map(([serviceName, serviceProgress]) => (
{getStatusIcon(serviceProgress.status)}

{SERVICE_LABELS[serviceName] || serviceName}

{SERVICE_DESCRIPTIONS[serviceName] || 'Procesando...'}

{getStatusLabel(serviceProgress.status)}
{serviceProgress.status === 'in_progress' && (
)} {serviceProgress.records_cloned > 0 && (

✓ {serviceProgress.records_cloned} registros clonados

)} {serviceProgress.error && (

Error: {serviceProgress.error}

)}
))}
); }; function getStatusIcon(status: ServiceProgress['status']): React.ReactNode { switch (status) { case 'completed': return ; case 'failed': return ; case 'in_progress': return ; default: return ; } } function getStatusLabel(status: ServiceProgress['status']): string { switch (status) { case 'completed': return 'Completado'; case 'failed': return 'Fallido'; case 'in_progress': return 'En Progreso'; default: return 'Pendiente'; } } function getStatusVariant( status: ServiceProgress['status'] ): 'success' | 'error' | 'info' | 'default' { switch (status) { case 'completed': return 'success'; case 'failed': return 'error'; case 'in_progress': return 'info'; default: return 'default'; } }