import React, { useState, useEffect } from 'react'; import { Shield, Zap, DollarSign, Menu, X, CreditCard, Star, Gift, ArrowRight, CheckCircle, Play, Lock, User, LayoutDashboard, Briefcase, LogOut, BarChart3, Users, PlusCircle, Smartphone, FileText, MapPin, Phone } from 'lucide-react'; // --- IDENTIDAD VISUAL & LOGO --- const Logo = ({ size = "w-12 h-12", showText = false, colorText = "text-[#0B1C3C]" }) => (
{showText && (
MISIÓN
EFECTIVO
)}
); // --- DATOS MOCK --- const MISSIONS = [ { id: 1, title: "Ver Video Promocional", reward: 0.05, type: "video", partner: "AdNetwork", duration: "30s" }, { id: 2, title: "Like a Barbería El Pepe", reward: 0.15, type: "social", partner: "Barbería El Pepe", duration: "Instant" }, { id: 3, title: "Encuesta Financiera", reward: 0.50, type: "survey", partner: "Banco Local", duration: "5 min" }, { id: 4, title: "Seguir a Pizzería Don Juan", reward: 0.10, type: "social", partner: "Pizzería Don Juan", duration: "Instant" }, { id: 5, title: "Instalar Juego 'Warriors'", reward: 1.20, type: "download", partner: "GameStudio", duration: "2 min" }, ]; const COUPONS = [ { id: 1, title: "2x1 en Hamburguesas", store: "Burger King", discount: "50%", cost: 0, img: "🍔" }, { id: 2, title: "Corte de Cabello", store: "Barbería El Pepe", discount: "-20%", cost: 10, img: "💈" }, { id: 3, title: "Pizza Familiar", store: "Don Juan", discount: "$5 OFF", cost: 50, img: "🍕" }, ]; // --- APP COMPONENT --- export default function App() { // Estados Globales const [authView, setAuthView] = useState('login'); // login, register, app const [userRole, setUserRole] = useState('guest'); // guest, free, elite, business const [view, setView] = useState('dashboard'); const [balance, setBalance] = useState(0.00); const [showAd, setShowAd] = useState(false); const [sidebarOpen, setSidebarOpen] = useState(false); // Mobile sidebar toggle // ESTADO DE VALIDACIÓN DE USUARIO (KYC) const [isVerified, setIsVerified] = useState(false); const [showVerificationModal, setShowVerificationModal] = useState(false); const [pendingAction, setPendingAction] = useState(null); // Para guardar qué quería hacer el usuario antes de validar // Lógica de navegación y anuncios const handleViewChange = (newView) => { // Simulación de "Regla de Actividad" (Anuncio obligatorio para usuarios Free) if (userRole === 'free' && Math.random() > 0.7 && newView !== 'elite') { setShowAd(true); setTimeout(() => setShowAd(false), 3500); } setView(newView); setSidebarOpen(false); // Cerrar sidebar en móvil al navegar }; const login = (role) => { setUserRole(role); setAuthView('app'); setView('dashboard'); // Simulamos que el usuario Elite ya está verificado, pero el Free debe hacerlo if (role === 'elite') { setBalance(15.50); setIsVerified(true); } else { setBalance(0.00); setIsVerified(false); // Usuario nuevo empieza sin verificar } if (role === 'business') setBalance(500.00); }; const logout = () => { setAuthView('login'); setUserRole('guest'); setBalance(0); setIsVerified(false); }; // Función Guardián: Verifica si el usuario puede realizar acciones críticas const checkVerification = (actionCallback) => { if (isVerified || userRole === 'business') { actionCallback(); } else { setPendingAction(() => actionCallback); // Guardamos la acción para ejecutarla después de validar setShowVerificationModal(true); } }; const handleVerificationSubmit = (e) => { e.preventDefault(); // Aquí iría la lógica de envío al backend setIsVerified(true); setShowVerificationModal(false); alert("¡Identidad Validada con Éxito!"); // Ejecutar la acción que estaba pendiente (ej: solicitar préstamo o completar misión) if (pendingAction) { pendingAction(); setPendingAction(null); } }; // --- SUB-COMPONENTES DE UI --- const SidebarItem = ({ icon: Icon, label, active, onClick, color }) => ( ); const StatCard = ({ title, value, subtext, icon: Icon, colorClass }) => (

{title}

{value}

{subtext &&

{subtext}

}
{/* Decoración fondo */}
); // --- VISTAS DE AUTENTICACIÓN (LOGIN/REGISTER) --- if (authView !== 'app') { return (
{/* Fondo decorativo */}
{/* Lado Izquierdo (Visual) */}

Tu tiempo vale Oro.

Únete al ecosistema financiero donde pedir prestado, ganar y ahorrar es una sola misión.

Préstamos Rápidos
Ingresos por Tareas
Descuentos Reales
{/* Lado Derecho (Formulario) */}

{authView === 'login' ? 'Iniciar Sesión' : 'Crear Cuenta'}

e.preventDefault()}> {authView === 'register' && (
)}

Selecciona un perfil para simular (Demo):

); } // --- ESTRUCTURA PRINCIPAL DE LA APP (DASHBOARD) --- const isBusiness = userRole === 'business'; return (
{/* 1. SIDEBAR (Navegación Desktop & Mobile Drawer) */} {/* Overlay para móvil */} {sidebarOpen && (
setSidebarOpen(false)} >
)} {/* 2. CONTENIDO PRINCIPAL (Main Area) */}
{/* Mobile Header */}
${balance.toFixed(2)}
{/* VIEW: DASHBOARD USUARIO */} {view === 'dashboard' && !isBusiness && (

Hola, {userRole === 'elite' ? 'Comandante' : 'Agente'} 👋

Aquí está el resumen de tu actividad financiera.

{!isVerified && (

Cuenta No Verificada

Para solicitar préstamos o retirar ganancias, necesitas validar tu identidad. Se te pedirá al realizar tu primera acción importante.

)}
{/* Stats Grid */}
{/* Promo Banner */}

¿Necesitas dinero urgente?

Nuestra red de financieras tiene nuevas ofertas para ti. Si no calificas, te pagamos por intentarlo.

{/* Recent Missions */}

Misiones Recomendadas

{MISSIONS.slice(0, 3).map(m => (
handleViewChange('missions')}>
{m.type} +${userRole === 'elite' ? (m.reward * 1.1).toFixed(2) : m.reward.toFixed(2)}

{m.title}

{m.partner} • {m.duration}

))}
)} {/* VIEW: PRÉSTAMOS (Loan Simulator) */} {view === 'loan' && (

Simulador de Préstamo

Encuentra la mejor oferta en segundos.

Monto a Solicitar $150.00 USD
$50 $500

Pago Estimado

$165.00

Plazo

30 Días

Al solicitar, aceptas nuestros términos y condiciones. Tu información será compartida con nuestros aliados financieros.

)} {/* VIEW: MISIONES */} {view === 'missions' && (

Tablero de Misiones

Completa tareas y aumenta tu saldo al instante.

{userRole === 'free' && (
Eres Free: +10% de ganancia bloqueada
)}
{MISSIONS.map((m, idx) => (
{m.type === 'video' ? : }

{m.title}

{m.partner} {m.duration}
+${userRole === 'elite' ? (m.reward * 1.1).toFixed(2) : m.reward.toFixed(2)}
{userRole === 'free' &&
${(m.reward * 1.1).toFixed(2)}
}
))}
)} {/* VIEW: ELITE (SUSCRIPCIÓN) */} {view === 'elite' && (

MISIÓN ELITE

Desbloquea el máximo potencial de tus ingresos.

Turbo Ganancias

Gana un 10% extra permanente en todas las misiones que completes.

Cero Publicidad

Elimina los anuncios obligatorios y navega sin interrupciones.

POPULAR

Suscripción Mensual

$1.50 /mes
{userRole === 'elite' ? ( ) : ( )}

Se descuenta automáticamente de tu saldo.

)} {/* VIEW: BUSINESS DASHBOARD (B2B) */} {isBusiness && view === 'dashboard' && (

Panel de Negocio

Campañas Activas

Nombre Tipo Progreso Estado
Promo Verano 2x1 Cupón QR
Activa
Seguidores Instagram Social Task
Pausada
)}
{/* 3. MOBILE BOTTOM NAV (Solo visible en pantallas pequeñas y usuarios NO negocio) */} {!isBusiness && ( )} {/* AD INTERSTITIAL SIMULATION */} {showAd && (
VIDEO PUBLICITARIO

Juego de Guerra

El mejor juego de estrategia del año.

El anuncio cerrará en 3 segundos...

¿Odias esperar?

)} {/* MODAL DE VALIDACIÓN DE CUENTA (KYC) */} {showVerificationModal && (

Validación de Identidad

Requerido para préstamos y retiros (KYC).

)}
); }