const { useState, useEffect, useRef } = React; const TWEAKS_DEFAULTS = /*EDITMODE-BEGIN*/{ "accentMode": "magenta", "headlineVariant": "vender", "heroImage": "interior", "whatsappNumber": "+54 9 11 6621 0997", "showStats": true } /*EDITMODE-END*/; // ---- Brand tokens ---- const BRAND = { magenta: '#E5147D', magentaDark: '#B30F62', graphite: '#2E2E2E', graphiteSoft: '#4A4A4A', ink: '#1A1A1A', bone: '#FAF8F6', paper: '#FFFFFF', line: 'rgba(46,46,46,0.10)' }; const ACCENTS = { magenta: { primary: '#E5147D', dark: '#B30F62', tint: 'rgba(229,20,125,0.08)' }, graphite: { primary: '#2E2E2E', dark: '#000000', tint: 'rgba(46,46,46,0.06)' }, burgundy: { primary: '#8E1F4D', dark: '#5C1233', tint: 'rgba(142,31,77,0.08)' } }; const HEADLINES = { vender: { eyebrow: 'Venta de propiedades', h1: <>Vendé tu casa, asesorado
por profesionales de verdad., sub: 'Loana Del Vecchio, tu martillera inmobiliaria de confianza. CABA y GBA.', cta: 'Agendá tu visita sin costo' }, tasacion: { eyebrow: 'Tasación de inmuebles', h1: <>¿Cuánto vale
realmente tu propiedad?, sub: 'Tasación profesional sin cargo, basada en datos de mercado y experiencia real en CABA y GBA.', cta: 'Tasar mi propiedad' }, acompañamiento: { eyebrow: 'Estrategia inmobiliaria', h1: <>Tu propiedad merece
una estrategia seria., sub: 'No publicamos avisos: diseñamos una operación. Marketing profesional, cartera activa y martillera matriculada al frente.', cta: 'Hablemos por WhatsApp' } }; const HERO_IMAGES = { interior: 'https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=1600&q=80', building: 'https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=1600&q=80', recoleta: 'https://images.unsplash.com/photo-1567496898669-ee935f5f647a?w=1600&q=80' }; // ---- Helpers ---- function buildWaLink(number, message) { const clean = (number || '').replace(/\D/g, ''); const text = encodeURIComponent(message || 'Hola Loana, me interesa tasar mi propiedad.'); return `https://wa.me/${clean}?text=${text}`; } function useReveal() { const ref = useRef(null); const [shown, setShown] = useState(false); useEffect(() => { const el = ref.current; if (!el) return; const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { setShown(true); io.unobserve(el); } }); }, { threshold: 0.10 }); io.observe(el); return () => io.disconnect(); }, []); return [ref, shown]; } function Reveal({ children, delay = 0, as: Tag = 'div', style, className }) { const [ref, shown] = useReveal(); return ( {children} ); } // ---- useMobile hook ---- function useMobile(bp = 768) { const [mobile, setMobile] = useState(window.innerWidth <= bp); useEffect(() => { const fn = () => setMobile(window.innerWidth <= bp); window.addEventListener('resize', fn); return () => window.removeEventListener('resize', fn); }, [bp]); return mobile; } // ---- Icons ---- const Icon = { WhatsApp: ({ size = 22, color = '#fff' }) => , Arrow: ({ size = 18, color = 'currentColor' }) => , Check: ({ size = 18, color = 'currentColor' }) => , Mail: ({ size = 18, color = 'currentColor' }) => , Instagram: ({ size = 18, color = 'currentColor' }) => , Menu: ({ size = 24, color = 'currentColor' }) => , Close: ({ size = 24, color = 'currentColor' }) => }; // ---- Nav ---- function Nav({ accent, onWa }) { const [scrolled, setScrolled] = useState(false); const [menuOpen, setMenuOpen] = useState(false); const mobile = useMobile(768); useEffect(() => { const onS = () => setScrolled(window.scrollY > 30); window.addEventListener('scroll', onS); return () => window.removeEventListener('scroll', onS); }, []); // close menu on scroll useEffect(() => { if (!menuOpen) return; const fn = () => setMenuOpen(false); window.addEventListener('scroll', fn, { passive: true }); return () => window.removeEventListener('scroll', fn); }, [menuOpen]); const navLinks = [ { l: 'Venta', h: 'servicios' }, { l: 'Tasaciones', h: 'tasaciones' }, { l: 'Compra', h: 'compra' }, { l: 'Zonas', h: 'zonas' }, { l: 'Loana', h: 'loana' } ]; return ( <> {/* Mobile drawer */} {mobile && (
{navLinks.map(({ l, h }) => ( setMenuOpen(false)} style={{ display: 'block', padding: '16px 24px', color: BRAND.ink, textDecoration: 'none', fontSize: 18, fontWeight: 500, borderBottom: `1px solid ${BRAND.line}` }}>{l} ))}
)} ); } // ---- Hero ---- function Hero({ accent, headline, heroImg, onWa, showStats }) { const [scrollY, setScrollY] = useState(0); const mobile = useMobile(768); useEffect(() => { const onS = () => setScrollY(window.scrollY); window.addEventListener('scroll', onS, { passive: true }); return () => window.removeEventListener('scroll', onS); }, []); if (mobile) { return (
{/* Image top on mobile */}
); } // Desktop hero return (
{headline.eyebrow} · CABA + GBA
{headline.h1} {headline.sub} Ver cómo trabajamos {showStats && ( {[ { n: '15+', l: 'Años de experiencia' }, { n: '100%', l: 'Tasaciones sin cargo' }, { n: 'CABA', l: '+ Gran Buenos Aires' } ].map((s, i) => (
{s.n}
{s.l}
))}
)}
); } // ---- Services ---- function Services({ accent }) { const mobile = useMobile(768); const items = [ { t: 'Tasación profesional sin cargo', d: 'Análisis comparativo de mercado, estado del inmueble y proyección. Recibís un informe claro, no un número al aire.' }, { t: 'Venta de propiedades', d: 'Estrategia comercial integral: posicionamiento de precio, plan de salida al mercado y gestión completa hasta la escritura.' }, { t: 'Asesoramiento legal', d: 'Acompañamiento en boleto, documentación, situación dominial y todos los pasos hasta la firma.' }, { t: 'Cartera activa de clientes', d: 'Más allá de los portales: una base propia de compradores calificados que muchas veces resuelven la operación antes de publicar.' } ]; return (
01 – Servicios
Los servicios que ofrecemos son los mejores del mercado inmobiliario.
{items.map((it, i) => (
0{i + 1}

{it.t}

{it.d}

))}
); } // ---- Marketing ---- function Marketing({ accent }) { const mobile = useMobile(768); const tools = [ 'Fotografía profesional con estabilizadores', 'Tomas aéreas con drones', 'Video tour cinematográfico', 'Campañas en Meta Ads (Instagram + Facebook)', 'Campañas en Google Ads', 'Publicación en los principales portales del país', 'Distribución en cartera privada de clientes', 'Pauta segmentada por zona y perfil' ]; return (
02 – Marketing
Tu propiedad merece ser trabajada con profesionalismo. Una venta no se logra publicando un aviso. Se logra con una operación de marketing seria, que pone tu propiedad frente a quien la puede comprar.
{tools.map((t, i) => (
0{i + 1} {t}
))}
); } // ---- Process ---- function Process({ accent, onWa }) { const mobile = useMobile(768); const steps = [ { n: '01', t: 'Hablamos por WhatsApp', d: 'Nos contás de la propiedad. Sin formularios eternos, sin call centers.' }, { n: '02', t: 'Visitamos y tasamos', d: 'Vamos en persona, recorremos el inmueble y armamos la tasación con criterio profesional.' }, { n: '03', t: 'Diseñamos la estrategia', d: 'Precio, fotografía, video, pauta, portales y nuestra cartera. Una salida al mercado pensada.' }, { n: '04', t: 'Vendemos y firmamos', d: 'Filtramos consultas, coordinamos visitas, negociamos y te acompañamos hasta la escritura.' } ]; return (
03 – Cómo trabajamos
Cuatro pasos. Cero vueltas.
{steps.map((s, i) => ( {s.n}

{s.t}

{s.d}

))}
); } // ---- About ---- function About({ accent }) { const mobile = useMobile(768); const values = [ { t: 'Atención profesional de verdad', d: 'No te atiende un asistente. Te atiendo yo, en cada paso.' }, { t: 'Martillera matriculada', d: 'Operación con respaldo legal y registro profesional.' }, { t: 'Compromiso real', d: 'Si tomamos tu propiedad, le dedicamos foco. No somos un volumen más.' }, { t: 'Experiencia comprobable', d: 'Años recorriendo CABA y GBA, conociendo barrios, valores y tiempos reales.' } ]; return (
Loana
04 – Quién está detrás
Una sola persona responsable{mobile ? ' ' :
} de tu operación.
{/* Photo */}
{!mobile && (
)}
Loana Del Vecchio
Martillera matriculada
CUCICBA
Nº 6376
{!mobile && (
15+
Años en el rubro
)}
{/* Values */}

Vender una propiedad es una de las decisiones financieras más importantes de tu vida. Merece a alguien que se haga cargo de verdad, con nombre, apellido y matrícula.

{values.map((v, i) => (
0{i + 1}

{v.t}

{v.d}

))}
); } // ---- Testimonials ---- const TESTIMONIALS = [ { barrio: 'Villa Urquiza', tipo: '3 ambientes con balcón', nombre: 'Marta R.', cita: 'Tenía el departamento publicado hace ocho meses con otra inmobiliaria y nada. Loana vino, lo vio, me dijo el precio real y me explicó por qué. En menos de dos meses lo vendimos. Honesta y derecha, así tendrían que ser todos.' }, { barrio: 'Versailles', tipo: 'PH con patio', nombre: 'Jorge y Silvia', cita: 'Nosotros estábamos asustados de vender, es la casa donde criamos a los chicos. Loana se tomó el tiempo de entendernos, nos acompañó en cada paso, hasta el día de la escritura. Un trato humano que no se ve más.' }, { barrio: 'Recoleta', tipo: 'Semipiso 4 ambientes', nombre: 'Eduardo M.', cita: 'Buscaba alguien que entendiera la zona y los valores reales, no que me tirara un número para captar. Loana hizo la tasación con criterio, me mostró comparables y armó una estrategia de venta seria. Profesional de punta a punta.' }, { barrio: 'Palermo', tipo: 'Monoambiente a estrenar', nombre: 'Camila L.', cita: 'Era mi primera venta y estaba perdida con todo el tema papeles. Me explicó cada cosa con paciencia, me filtró las consultas raras y solo me hizo coordinar visitas con gente seria. La recomiendo cerrado.' }, { barrio: 'Saavedra', tipo: 'Casa de 4 ambientes', nombre: 'Familia Pérez', cita: 'Probamos vender por nuestra cuenta seis meses. Pasaba gente que no era ni compradora. Llamamos a Loana, hizo fotos, video con drone, pauta, todo. En tres meses cerramos con un precio mejor del que esperábamos.' } ]; function Testimonials({ accent }) { const [index, setIndex] = useState(0); const [paused, setPaused] = useState(false); const mobile = useMobile(768); const total = TESTIMONIALS.length; useEffect(() => { if (paused) return; const id = setInterval(() => setIndex((i) => (i + 1) % total), 6500); return () => clearInterval(id); }, [paused, total]); const go = (n) => setIndex((n + total) % total); return (
setPaused(true)} onMouseLeave={() => setPaused(false)} onTouchStart={() => setPaused(true)} onTouchEnd={() => setPaused(false)} > {!mobile && (
"
)}
05 – Lo que dicen
Vendedores reales, operaciones reales.
{TESTIMONIALS.map((item, i) => (
"{item.cita}"
{item.nombre.split(' ').map((s) => s[0]).join('').slice(0, 2)}
{item.nombre}
{item.tipo} · {item.barrio}
))}
{TESTIMONIALS.map((_, i) => (
{String(index + 1).padStart(2, '0')} / {String(total).padStart(2, '0')}
); } // ---- Tasaciones ---- function Tasaciones({ accent, onWa }) { const mobile = useMobile(768); const items = [ 'Análisis comparativo de mercado (ACM) actualizado', 'Visita en persona al inmueble', 'Informe escrito con valor de venta sugerido', 'Asesoramiento sobre estrategia de precio', 'Sin cargo, sin compromiso' ]; return (
Tasaciones
Tasación profesional sin cargo. Saber cuánto vale tu propiedad es el primer paso para venderla bien. Te entregamos una tasación con criterio profesional, no un número al aire para captar.
Qué incluye
{items.map((it, i) => (
{it}
))}
); } // ---- Compra ---- function Compra({ accent, onWa }) { const mobile = useMobile(768); const items = [ { t: 'Búsqueda personalizada', d: 'Te buscamos lo que necesitás según tus prioridades reales: ubicación, presupuesto, ambientes, estado.' }, { t: 'Acceso a cartera privada', d: 'Propiedades fuera de portales, exclusivas, antes de que salgan al mercado abierto.' }, { t: 'Asesoramiento legal', d: 'Verificación dominial, situación del inmueble, boleto y escritura. Comprás sin sustos.' }, { t: 'Negociación a tu favor', d: 'Conocemos los valores reales de cada barrio. No pagás de más.' } ]; return (
Compra
¿Buscás casa o departamento? Te acompañamos. No solo vendemos. Si estás buscando comprar en CABA o GBA, te ayudamos a encontrar la propiedad correcta y a cerrar la operación con respaldo profesional.
{items.map((it, i) => (

{it.t}

{it.d}

))}
Conocer más sobre compra
); } // ---- Zonas ---- function Zonas({ accent, onWa }) { const mobile = useMobile(768); const caba = ['Belgrano', 'Caballito', 'Palermo', 'Recoleta', 'Villa Urquiza', 'Villa Devoto', 'Saavedra', 'Flores', 'Floresta', 'Versailles', 'Boedo', 'Liniers', 'Monte Castro', 'Parque Chas', 'Villa del Parque', 'Paternal', 'Puerto Madero', 'Villa Real', 'Villa Santa Rita', 'Agronomía']; const gba = ['Vicente López', 'San Isidro', 'Munro', 'Nordelta', 'Pilar', 'Ramos Mejía', 'Morón', 'Castelar', 'Ituzaingó', 'Haedo', 'Caseros', 'Ciudadela', 'San Martín', 'Parque Leloir']; return (
Zonas que cubrimos
Inmobiliaria con presencia en toda Capital y Gran Buenos Aires. Conocemos los valores reales de cada barrio. Operamos con tasaciones, ventas y compras en CABA y GBA.
{[{ label: 'Capital Federal', items: caba }, { label: 'Gran Buenos Aires', items: gba }].map(({ label, items }) => (
{label}
{items.map((b) => ( {b} ))}
))}
); } // ---- CTA ---- function CTA({ accent, onWa }) { const mobile = useMobile(768); return (
¿Listo?
Hablemos de tu propiedad.
Sin compromiso, sin vueltas.
Escribinos por WhatsApp y te respondemos hoy. Tasación profesional sin cargo en CABA y GBA.
); } // ---- Footer ---- function Footer({ accent }) { const mobile = useMobile(768); return ( ); } // ---- Floating WA ---- function FloatingWA({ accent, onWa }) { const [visible, setVisible] = useState(false); const mobile = useMobile(768); useEffect(() => { const onS = () => setVisible(window.scrollY > 400); window.addEventListener('scroll', onS); return () => window.removeEventListener('scroll', onS); }, []); return ( ); } // ---- App ---- function App() { const [tweaks, setTweak] = useTweaks(TWEAKS_DEFAULTS); const accent = ACCENTS[tweaks.accentMode] || ACCENTS.magenta; const headline = HEADLINES[tweaks.headlineVariant] || HEADLINES.vender; const heroImg = HERO_IMAGES[tweaks.heroImage] || HERO_IMAGES.interior; const onWa = () => { const url = buildWaLink(tweaks.whatsappNumber, 'Hola Loana, me interesa tasar mi propiedad.'); window.open(url, '_blank'); }; return (
); } ReactDOM.createRoot(document.getElementById('root')).render();