// Core components — GR Digital Studio redesign const { useState, useEffect, useRef } = React; // -------- SUPABASE CONFIG -------- // Reemplaza estos dos valores con los de tu proyecto (Dashboard → Settings → API) const SUPABASE_URL = "https://uqrqnxfufteznwrfzknq.supabase.co"; const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVxcnFueGZ1ZnRlem53cmZ6a25xIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzcwNjgwOTQsImV4cCI6MjA5MjY0NDA5NH0.7xrmtPuip8KAFQ58WqxU66uqVsHAL3eUG1SAEt7m3uU"; // Cliente singleton — disponible para todos los archivos Babel cargados después const supabaseClient = window.supabase.createClient(SUPABASE_URL, SUPABASE_ANON_KEY); // -------- enviarLead -------- async function enviarLead(data) { const payload = { nombre: (data.nombre || "").trim(), negocio: (data.negocio || "").trim(), telefono: (data.telefono || "").trim(), email: (data.email || "").trim(), mensaje: (data.mensaje || "").trim(), origen: "formulario-web", fecha: new Date().toISOString(), }; // 1. Guardar en Supabase const { error } = await supabaseClient.from("leads").insert([payload]); if (error) { console.error("[enviarLead] Error Supabase:", error); return { ok: false, error: error.message }; } // 2. Enviar a n8n try { await fetch("https://gr-digital-studio-n8n.4cbvso.easypanel.host/webhook/nuevo-lead", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }); } catch (err) { console.error("[enviarLead] Error webhook n8n:", err); } return { ok: true }; } // -------- NAV -------- function Nav() { const [open, setOpen] = useState(false); const close = () => setOpen(false); return ( ); } // -------- HERO -------- function Hero({ tweaks }) { return (
Automatización + IA · para agencias y servicios

Pierdes 7 de cada 10 leads porque contestas tarde. Lo arreglamos en {tweaks.dias} días.

Implantamos un sistema con IA que responde, califica y agenda cada lead en menos de 60 segundos — aunque estés durmiendo, aunque sea domingo, aunque vengan 200 al día.

Auditoría gratis · 30 min Calcular cuánto pierdes
Setup en {tweaks.dias} días Primera semana gratis Sin permanencia
); } // -------- CHATBOT DEMO -------- function ChatbotDemo() { const script = [ { role: "bot", text: "Hola 👋 Soy el asistente IA de GR Digital. ¿Qué proceso de tu negocio te está quitando más tiempo?" }, { role: "user", text: "Respondemos WhatsApps uno a uno, perdemos horas" }, { role: "bot", text: "Entendido. ¿Cuántos leads nuevos entran a la semana aproximadamente?" }, { role: "user", text: "Unos 80-100" }, { role: "bot", text: "Perfecto. Con ese volumen, un 70% de tus leads se está enfriando. Te propongo: IA que responde en 60s + califica + agenda reuniones en tu calendario. ¿Te mando el caso de un cliente parecido?" }, { role: "user", text: "Sí, envíamelo" }, { role: "bot", text: "✓ Enviado. También te he reservado un hueco para una auditoría gratuita de 30 min el jueves 17:00. ¿Confirmas?" } ]; const [shown, setShown] = useState([]); const [typing, setTyping] = useState(false); const bodyRef = useRef(null); useEffect(() => { let i = 0; let cancelled = false; const run = () => { if (cancelled || i >= script.length) return; const msg = script[i]; const delay = msg.role === "bot" ? 1200 : 900; if (msg.role === "bot") { setTyping(true); setTimeout(() => { if (cancelled) return; setTyping(false); setShown((prev) => [...prev, msg]); i++; setTimeout(run, delay); }, 900); } else { setShown((prev) => [...prev, msg]); i++; setTimeout(run, delay); } }; const t = setTimeout(run, 600); return () => { cancelled = true; clearTimeout(t); }; }, []); useEffect(() => { if (bodyRef.current) bodyRef.current.scrollTop = bodyRef.current.scrollHeight; }, [shown, typing]); return (
G
GR · Asistente IA
En línea · responde en <60s
{shown.map((m, idx) =>
{m.text}
)} {typing &&
}
● Demo en vivo — este es el chatbot que montamos para ti
); } // -------- LOGOS STRIP -------- function LogosStrip() { const items = ["n8n", "Make", "HubSpot", "OpenAI", "WhatsApp API", "Zapier", "Airtable", "Stripe"]; return (
Construimos encima del stack que ya usas
{items.map((i) =>
{`{ ${i} }`}
)}
); } // -------- SERVICES -------- function Services() { const services = [ { num: "01 / Flagship", title: "Sistema IA + WhatsApp + CRM", desc: "Monto el stack completo en 14 días: chatbot IA que responde y califica, integración con tu CRM, flujos de seguimiento por WhatsApp y métricas en un dashboard.", tags: ["n8n", "OpenAI", "WhatsApp API", "HubSpot"] }, { num: "02 / Process", title: "Automatización de operaciones", desc: "Conecto las herramientas que ya tienes para eliminar trabajo manual: onboarding, facturación, reporting, generación de propuestas con IA.", tags: ["Make", "Airtable", "Notion", "Zapier"] }, { num: "03 / Growth", title: "Embudos de captación con IA", desc: "Diseño landings, secuencias de email y lead magnets que capturan y nutren leads de forma autónoma. Integrado con tu analítica.", tags: ["Landing", "Email AI", "Analytics", "Ads"] } ]; return (
02

Qué hacemos por ti

Tres sistemas que funcionan por separado o integrados. Todos orientados a una única métrica: leads que se convierten solos.

{services.map((s) =>
{s.num}

{s.title}

{s.desc}

{s.tags.map((t) => {t})}
)}
); } // -------- PROCESS -------- function Process({ tweaks }) { const steps = [ { day: `Día 01`, title: "Auditoría", desc: "Analizamos procesos, herramientas y fugas actuales. Sin compromiso, 30 minutos." }, { day: `Día 02–04`, title: "Estrategia", desc: "Diseñamos flujos, integraciones y métricas. Te mandamos el blueprint antes de tocar código." }, { day: `Día 05–12`, title: "Implementación", desc: "Construimos, integramos y testeamos. Tú ves el progreso cada 48h en un dashboard privado." }, { day: `Día 13–14`, title: "Lanzamiento", desc: "Arranca el sistema con tu primera semana gratuita. Ajustamos sobre datos reales." } ]; return (
03

De 0 a automatizado en {tweaks.dias} días

Un proceso medible, con deadline y con tu primera semana de prueba gratuita. Si no hay resultados, no hay factura.

{steps.map((s) =>
{s.day}

{s.title}

{s.desc}

)}
); } // -------- COMPARE BEFORE/AFTER -------- function Compare() { const before = [ "Contestas leads a las 4 horas. Un 70% ya se enfrió.", "Tu equipo pierde 2-3h/día copiando datos entre herramientas.", "No sabes qué canal te trae mejores clientes.", "Los domingos y festivos tu web no trabaja.", "Cada propuesta cuesta 45 minutos hacerla.", "Las tareas repetitivas las hace una persona cara." ]; const after = [ "IA responde en menos de 60 segundos, 24/7, con tu tono.", "Los datos fluyen automáticos entre CRM, WhatsApp y calendario.", "Dashboard único con ROI por canal, en tiempo real.", "Tu sistema vende mientras duermes. Literalmente.", "Propuestas generadas en 90 segundos con IA + tu plantilla.", "Tu equipo se dedica a cerrar, no a operar." ]; return (
04

Antes vs después

Lo que cambia exactamente en tu día a día cuando el sistema está en marcha.

● Sin nosotros

Hoy

{before.map((t, i) =>
{t}
)}
● Con GR Digital

En 14 días

{after.map((t, i) =>
{t}
)}
); } // -------- STATS STRIP -------- function Stats() { const stats = [ { big: "<60s", lbl: "Tiempo de respuesta IA" }, { big: "14 días", lbl: "De 0 a sistema en marcha" }, { big: "24/7", lbl: "Sin festivos, sin descansos" }, { big: "+3.2x", lbl: "Leads cualificados vs manual" } ]; return (
{stats.map((s) =>
{s.big}
{s.lbl}
)}
); } Object.assign(window, { Nav, Hero, ChatbotDemo, LogosStrip, Services, Process, Compare, Stats });