/* Shared UI primitives for the R3 Club landing page */
const { useState, useEffect, useRef } = React;
/* ---------- Scarcity bar (sticky top) ---------- */
function ScarcityBar({ seatsLeft = 7, showCounter = true }) {
return (
);
}
/* ---------- Top nav ---------- */
function Nav() {
const [scrolled, setScrolled] = useState(false);
useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 24);
onScroll();
window.addEventListener('scroll', onScroll, { passive: true });
return () => window.removeEventListener('scroll', onScroll);
}, []);
return (
);
}
/* ---------- Section eyebrow / number ---------- */
function SectionHeader({ number, eyebrow, children, align = "left" }) {
return (
{number && {number}}
{eyebrow && {eyebrow}}
{children}
);
}
/* ---------- Image placeholder ---------- */
function ImageSlot({ label, ratio = "4 / 5", className = "" }) {
return (
);
}
/* ---------- FAQ accordion ---------- */
function FaqItem({ q, a, defaultOpen = false }) {
const [open, setOpen] = useState(defaultOpen);
return (
);
}
/* ---------- Floating WhatsApp ---------- */
function FloatingWhats() {
return (
Falar com o R3 Club
);
}
Object.assign(window, {
ScarcityBar, Nav, SectionHeader, ImageSlot, FaqItem, FloatingWhats,
});