// Hero v3 — mobile-first, conversa centralizada, canais como faixa lateral (não orbital) const HERO_SCRIPT = [ { side: 'guest', text: 'Olá! Estou planejando uma escapada para o feriado. Disponibilidade no fim de semana de 22 a 24?', delay: 600, time: '14:32' }, { side: 'typing', delay: 2400 }, { side: 'agent', text: 'Que bom receber você, Marina. Acabei de verificar — temos sim disponibilidade. Posso te mostrar duas opções com a vista que combina com você?', delay: 4000, time: '14:32' }, { side: 'guest', text: 'Adoraria. Será uma ocasião especial 🥂', delay: 7000, time: '14:33' }, { side: 'typing', delay: 8800 }, { side: 'agent', text: 'Que lindo. Posso reservar a Suíte Panorâmica e separar uma cesta de boas-vindas com o espumante da casa por nossa conta?', delay: 10600, time: '14:33' }, ]; const useHeroScript = (inView) => { const [step, setStep] = React.useState(0); React.useEffect(() => { if (!inView) return; let timers = []; const run = () => { setStep(0); timers = HERO_SCRIPT.map((m, i) => setTimeout(() => setStep(i + 1), m.delay)); }; run(); const loop = setInterval(run, 17000); return () => { timers.forEach(clearTimeout); clearInterval(loop); }; }, [inView]); return step; }; const HeroBubble = ({ side, text, time, status }) => { const isAgent = side === 'agent'; return (
{text}
{time}{status ? ' ✓✓' : ''}
); }; const TypingBubble = () => (
); const HeroConversation = () => { const [ref, inView] = useInView(0.05); const step = useHeroScript(inView); return (
Concierge · Hotel Vista Bela
online · respondendo
{HERO_SCRIPT.slice(0, step).map((msg, i) => { if (msg.side === 'typing') return
; return
; })}
Mensagem…
); }; // Channel rail — vertical column of floating channels alongside chat (desktop) // On mobile becomes a horizontal row above the chat. const ChannelRail = () => { const channels = [ { id: 'whatsapp', label: 'WhatsApp' }, { id: 'instagram', label: 'Instagram' }, { id: 'messenger', label: 'Messenger' }, { id: 'email', label: 'E-mail' }, { id: 'web', label: 'Site' }, ]; return (
{channels.map((ch, i) => (
{ch.label}
))}
); }; const Hero = ({ palette }) => { return (
{/* Hotel background image with transparency */}
{/* Fallback SVG for older views */} {/* Dark gradient overlay for readability */}
{/* Glow effect from brand color */}
CHAT HOTEL · O CONCIERGE QUE CONVERSA

O hóspede conversa.
Ninguém percebe
que não é humano.

Hospitalidade fina em todos os canais — sem botões, sem formulários, sem o tom robótico. Da primeira pergunta sobre a região ao envio do voucher, uma conversa só. Em qualquer idioma.

30
anos · grupo RVS
20
anos · CleverIA
24/7
concierge ativo
{/* Ambient halo behind chat */}
{/* Chat + rail of channels (desktop = side by side, mobile = stacked) */}
SCROLL
); }; const Navbar = () => ( ); window.Hero = Hero; window.Navbar = Navbar; window.HeroBubble = HeroBubble; window.TypingBubble = TypingBubble;