/* SISMO one-page — Nav, Hero, Manifiesto */ const { useState, useEffect, useRef } = React; /* hooks */ function useReveal() { useEffect(() => { const els = document.querySelectorAll('.rv'); const io = new IntersectionObserver(es => es.forEach(e => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }), { threshold: .15 }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }, []); } const NAV_LINKS = [ ["inicio", "Inicio"], ["nosotras", "Nosotras"], ["servicios", "Servicios"], ["trabajos", "Trabajos"], ["proceso", "Proceso"], ["contacto", "Contacto"], ]; function Nav() { const [scrolled, setScrolled] = useState(false); const [open, setOpen] = useState(false); const [active, setActive] = useState("inicio"); useEffect(() => { const ids = NAV_LINKS.map(([id]) => id); let raf = 0; const onScroll = () => { cancelAnimationFrame(raf); raf = requestAnimationFrame(() => { setScrolled(window.scrollY > 40); const pos = window.scrollY + window.innerHeight * .35; let cur = ids[0]; for (const id of ids) { const el = document.getElementById(id); if (el && el.getBoundingClientRect().top + window.scrollY <= pos) cur = id; } setActive(cur); }); }; onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); window.addEventListener("resize", onScroll); return () => { window.removeEventListener("scroll", onScroll); window.removeEventListener("resize", onScroll); cancelAnimationFrame(raf); }; }, []); const go = () => setOpen(false); return ( <>
En SISMO combinamos estrategia, creatividad, diseño y producción audiovisual para construir marcas con una presencia clara, profesional y con personalidad.
Desde Tierra del Fuego, acompañamos a negocios, profesionales e instituciones a dejar de improvisar y empezar a comunicar con intención.
No hacemos contenido por cumplir. Pensamos qué comunicar, cómo mostrarlo y cómo hacerlo llegar a las personas correctas.