// Ejecutora — Campañas y Contenido const CampanasScreen = () => { const [tab, setTab] = React.useState('activas'); const [showModal, setShowModal] = React.useState(false); const [campanas, setCampanas] = React.useState([ { id: 1, nombre: 'Pack Bienvenida — Mayo', tipo: 'adquisicion', producto: 'Pack Bienvenida $37', inicio: '28 abr', fin: '7 may', diasRestantes: 6, estado: 'activa', ventas: 4, meta: 10, notas: 'Story diaria + WA a leads fríos', checks: { historia: true, consultas: true, registro: false, recordatorio: false, seguimiento: false } }, { id: 2, nombre: 'Upsell Clientes Actuales', tipo: 'monetizacion', producto: 'Programa Completo $197', inicio: '10 may', fin: '20 may', diasRestantes: 19, estado: 'planificada', ventas: 0, meta: 5, notas: 'Solo para clientas que compraron Esencial', checks: { historia: false, consultas: false, registro: false, recordatorio: false, seguimiento: false } }, { id: 3, nombre: 'Reactivación Inactivas', tipo: 'activacion', producto: 'Pack Reincorporación $57', inicio: '1 abr', fin: '10 abr', diasRestantes: 0, estado: 'finalizada', ventas: 3, meta: 5, notas: 'Mencioné su compra anterior específica', checks: { historia: true, consultas: true, registro: true, recordatorio: true, seguimiento: true } }, ]); const [nueva, setNueva] = React.useState({ nombre: '', tipo: 'adquisicion', producto: '', inicio: '', fin: '', meta: '', notas: '' }); // Calendario de contenido (semana) const [contenido, setContenido] = React.useState([ { dia: 'Lun', objetivo: 'atraer', formato: 'Carrusel', tema: 'Las 3 señales de que no tienes sistema de ventas', listo: true }, { dia: 'Mar', objetivo: 'atraer', formato: 'Reel', tema: 'Mi rutina de ventas de 60 minutos', listo: true }, { dia: 'Mié', objetivo: 'convertir', formato: 'Story', tema: 'Oferta pack bienvenida + CTA directo', listo: false }, { dia: 'Jue', objetivo: 'fidelizar', formato: 'Post', tema: 'Testimonio de clienta + resultado específico', listo: false }, { dia: 'Vie', objetivo: 'convertir', formato: 'WA Broadcast', tema: 'Último día del pack — urgencia real', listo: false }, ]); const tipos = { adquisicion: { label: 'Adquisición', color: EJ.cyan, bg: EJ.cyanLight, emoji: '🎯' }, monetizacion: { label: 'Monetización', color: EJ.violet, bg: EJ.violetLight, emoji: '💰' }, activacion: { label: 'Activación', color: EJ.pink, bg: EJ.pinkLight, emoji: '🔁' }, }; const estadoColors = { activa: EJ.green, planificada: EJ.cyan, finalizada: EJ.muted }; const estadoBg = { activa: EJ.greenLight, planificada: EJ.cyanLight, finalizada: EJ.bgApp }; const objColors = { atraer: EJ.cyan, convertir: EJ.pink, fidelizar: EJ.violet }; const objBg = { atraer: EJ.cyanLight, convertir: EJ.pinkLight, fidelizar: EJ.violetLight }; const guardarCampana = () => { if (!nueva.nombre) return; setCampanas(prev => [...prev, { ...nueva, id: Date.now(), diasRestantes: 0, estado: 'planificada', ventas: 0, meta: Number(nueva.meta) || 5, checks: { historia: false, consultas: false, registro: false, recordatorio: false, seguimiento: false } }]); setNueva({ nombre: '', tipo: 'adquisicion', producto: '', inicio: '', fin: '', meta: '', notas: '' }); setShowModal(false); }; const toggleCheck = (campId, checkKey) => { setCampanas(prev => prev.map(c => c.id === campId ? { ...c, checks: { ...c.checks, [checkKey]: !c.checks[checkKey] } } : c)); }; const campanasFiltradas = campanas.filter(c => tab === 'todas' || c.estado === tab || (tab === 'activas' && c.estado === 'activa')); // Modelos de contenido rápidos (selección de los 46) const modelos = [ { n: '01', nombre: 'Técnico e Informativo', eng: 'Guardados', desc: 'Enseña algo de calidad, muestra expertise', color: EJ.cyan }, { n: '03', nombre: 'Moneda Social', eng: 'Marcaciones', desc: 'Identificación: "estamos en el mismo barco"', color: EJ.violet }, { n: '05', nombre: 'Empatía y Abrazo', eng: 'Comentarios', desc: 'Haz que la audiencia se sienta "abrazada"', color: EJ.pink }, { n: '08', nombre: 'Dualidades', eng: 'Compartidos', desc: '"Lo que creen vs. Lo que realmente es"', color: EJ.cyan }, { n: '15', nombre: 'Testimonios', eng: 'Marcaciones', desc: 'Prueba social: situación → solución → resultado', color: EJ.green }, { n: '22', nombre: 'Jalón de Orejas', eng: 'Reflexión', desc: 'Motiva a través de reflexión directa', color: EJ.violet }, { n: '29', nombre: 'Storytelling FMAE', eng: 'Conexión', desc: 'Fracaso → Miedo → Amor → Éxito', color: EJ.pink }, { n: '45', nombre: 'Contenido Aspiracional', eng: 'Atracción', desc: 'Muestra el resultado prometido', color: EJ.cyan }, ]; return (
Pilar 2 — Define el CÓMO de la venta · Rota los 3 tipos mensualmente