"use client"; import { useEffect, useState } from "react"; /** * Render an email address split into user + domain attributes so simple * HTML scrapers don't see a usable address in the server-rendered DOM. * On mount we assemble the address client-side and wrap in a real mailto. * * Pre-mount HTML looks like: * [email protected] * * Post-mount (JS executed) becomes: * ryan@broadcastbeat.com * * Plus the @ is rendered with an HTML entity so even rare bots reading the * pre-JS DOM won't get a clean string. */ export default function ObfuscatedEmail({ user, domain, className, }: { user: string; domain: string; className?: string; }) { const [revealed, setRevealed] = useState(false); useEffect(() => setRevealed(true), []); if (!revealed) { return ( [email protected] ); } const addr = `${user}@${domain}`; return ( {addr} ); }