// Page sections — Frution editorial landing const { useState, useEffect, useRef } = React; // Resource resolver: in standalone-bundled mode, window.__resources[id] holds a blob URL. // In dev/file mode, falls back to the relative path. const asset = (id, path) => (typeof window !== 'undefined' && window.__resources && window.__resources[id]) || path; // Hook for scroll reveal const useReveal = () => { useEffect(() => { const els = document.querySelectorAll('[data-reveal]:not(.in)'); const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('in'); }); }, { threshold: 0.08, rootMargin: '0px 0px -40px 0px' }); els.forEach(el => io.observe(el)); return () => io.disconnect(); }); }; // ============== NAV ============== const Nav = () => { const [scrolled, setScrolled] = useState(false); const [open, setOpen] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 20); window.addEventListener('scroll', onScroll); return () => window.removeEventListener('scroll', onScroll); }, []); // close menu on resize to desktop / on link click useEffect(() => { const onR = () => { if (window.innerWidth > 900) setOpen(false); }; window.addEventListener('resize', onR); return () => window.removeEventListener('resize', onR); }, []); // lock body scroll when open useEffect(() => { document.body.style.overflow = open ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [open]); const links = [ ['Sobre','#about'], ['Módulos','#modules'], ['Recursos','#features'], ['Preços','#pricing'], ['Clientes','#clients'], ['Contato','#contact'] ]; return ( ); }; // ============== HERO ============== const Hero = () => { return (
{/* huge serif backdrop */}
{/* eyebrow */}
Plataforma all-in-one · v8.4
Curitiba · Brasil
{/* left */}

Toda sua operação.
Uma única plataforma.

CRM, BPM, ERP e OmniChannel integrados nativamente. Da primeira oportunidade ao faturamento — sem planilhas, sem retrabalho, sem trocar de sistema.

Agendar demonstração Ver módulos
{/* stats */}
{[ ['30+','Empresas ativas'], ['99%','Uptime 12 meses'], ['8h–18h','Suporte humano'], ].map(([n,l]) => (
{n}
{l}
))}
{/* right — floating dashboard */}
{/* coral halo */}
{/* browser chrome */}
frution.com.br · demo
{/* video */}