/* Hero section for ZenTag */ function Nav() { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 20); window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); const cfg = (typeof window !== 'undefined' && window.ZENTAG) || { isAuthed: false, urls: { login: '/login', signup: '/login', dashboard: '/login', order: '/login' } }; return ( ); } function Hero({ heroMaterial = 'matte' }) { // Parallax tilt for the hero stage based on mouse const stageRef = React.useRef(null); React.useEffect(() => { const el = stageRef.current; if (!el) return; let raf = null; const onMove = (e) => { const r = el.getBoundingClientRect(); const cx = r.left + r.width/2; const cy = r.top + r.height/2; const dx = (e.clientX - cx) / r.width; const dy = (e.clientY - cy) / r.height; cancelAnimationFrame(raf); raf = requestAnimationFrame(() => { el.style.setProperty('--mx', dx.toFixed(3)); el.style.setProperty('--my', dy.toFixed(3)); }); }; window.addEventListener('mousemove', onMove); return () => window.removeEventListener('mousemove', onMove); }, []); return (
{/* Top label */}
v2 · NFC + QR · Available now

Your business card.
Reinvented.

Share your brand instantly with NFC, QR codes, and smart digital profiles. One tap. Unlimited connections.

Get your card See cards
No app required · Works on iPhone & Android
{/* 3D Stage */}
{/* QR floating left */}
Scan
{/* Scan line */}
{/* Central NFC card */}
{/* Ambient glow */}
{/* The hero card */}
{/* NFC ripples from card */}
{[0,1,2].map(i => (
))}
{/* "Tap to share" hint */}
Tap to share
{/* Phone floating right */}
{/* Floating social icons */}
); } function FloatingSocials() { // Position social icons around the card stage const positions = [ { top: '8%', left: '32%', delay: '0s' }, { top: '14%', right: '28%', delay: '0.4s' }, { top: '70%', left: '24%', delay: '0.8s' }, { top: '78%', right: '20%', delay: '1.2s' }, { top: '40%', left: '10%', delay: '1.6s' }, { top: '50%', right: '8%', delay: '2.0s' }, { top: '22%', left: '46%', delay: '2.4s' }, ]; return ( <> {SocialList.map(({ name, Comp, color }, i) => (
))} ); } Object.assign(window, { Nav, Hero });