// diagnostico-teaser.jsx // Mini diagnóstico — 3 questions + a teaser result screen. // Renders as a backdrop overlay (absolute-positioned) inside the artboard // so the user can feel the flow without leaving the landing. const TEASER_QUESTIONS = [ { id: "etapa", label: "Pregunta 1 de 3 · Etapa", q: "¿Dónde estás parado hoy con tu empresa?", options: [ "Apenas empezando, todo lo hago yo", "Ya tengo equipo, pero falta orden", "Operación estable, busco crecer", "En crecimiento fuerte, necesito profesionalizar", ], }, { id: "dolor", label: "Pregunta 2 de 3 · Lo que más duele", q: "Si pudieras resolver una cosa esta semana, ¿cuál sería?", options: [ "Tener claridad de mis números reales", "Que mi equipo no me necesite para todo", "Conseguir clientes más grandes", "Dejar de operar y empezar a dirigir", ], }, { id: "ambicion", label: "Pregunta 3 de 3 · A dónde vas", q: "¿Qué te gustaría poder decir de tu negocio en 12 meses?", options: [ "Que está más ordenado y predecible", "Que ya facturo el doble", "Que estoy certificado y puedo competir", "Que ya no depende de mí para operar", ], }, ]; function DiagnosticoTeaser({ variant, accentClass, onClose }) { const [step, setStep] = React.useState(0); // 0..2 questions, 3 result const [answers, setAnswers] = React.useState({}); const total = TEASER_QUESTIONS.length; const isResult = step >= total; const progress = isResult ? 1 : (step / total); const select = (qid, opt) => { setAnswers((a) => ({ ...a, [qid]: opt })); // auto-advance after a beat setTimeout(() => setStep((s) => s + 1), 220); }; return (
e.stopPropagation()}>
Diagnóstico Vig-ia · Versión rápida
{!isResult ? ( select(TEASER_QUESTIONS[step].id, opt)} step={step} total={total} onBack={step > 0 ? () => setStep(step - 1) : null} /> ) : ( { setAnswers({}); setStep(0); }} onClose={onClose} /> )}
); } function TeaserQuestion({ data, selected, onSelect, step, total, onBack }) { return (
{data.label}

{data.q}

{data.options.map((opt) => ( ))}
{onBack ? ( ) : } {step + 1} / {total}
); } function TeaserResult({ answers, accentClass, onRestart, onClose }) { // Build a friendly score based on how "advanced" the answers are // (option index 0..3 → weight 30, 50, 70, 85; then averaged + small jitter) const stageMap = [30, 52, 70, 84]; const idx = TEASER_QUESTIONS.map((q) => { const a = answers[q.id]; const i = q.options.indexOf(a); return i >= 0 ? stageMap[i] : 50; }); const score = Math.round(idx.reduce((s, v) => s + v, 0) / idx.length); const stage = score < 45 ? "En arranque" : score < 65 ? "En profesionalización" : score < 80 ? "En crecimiento" : "Lista para escalar"; const recos = [ "Ordenar tus procesos administrativos clave", "Visibilidad financiera con reportes simples", "Sentar las bases para una certificación", ]; // Animate the bar from 0 → score const [drawn, setDrawn] = React.useState(0); React.useEffect(() => { const t = setTimeout(() => setDrawn(score), 80); return () => clearTimeout(t); }, [score]); return (
Tu resultado preliminar

Buen punto de arranque para tu empresa.

Esto es solo una vista rápida. El diagnóstico completo (25 preguntas, 5 min) te da una ruta detallada y un equipo de consultoría listo para acompañarte.

{score} /100 Etapa: {stage}
Lo que probablemente sigue para ti {recos.map((r) => (
{r}
))}
); } Object.assign(window, { DiagnosticoTeaser });