const LINKS = { github: "https://github.com/preyashyadav/pheromone-ai", demoVideo: "https://youtu.be/nqk8-5RG2k0", x: "https://x.com/preyashyadav_/status/2053254234741850309", technicalWalkthrough: "https://github.com/preyashyadav/pheromone-ai/blob/main/docs/TECHNICAL_WALKTHROUGH.md", site: "https://preyashyadav.com", }; function setLink(id, href, label) { const el = document.getElementById(id); if (!el) return; el.setAttribute("href", href); if (label) el.textContent = label; } setLink("githubLinkTop", LINKS.github, "GitHub"); setLink("githubLink", LINKS.github, "GitHub"); setLink("githubLinkBottom", LINKS.github, "GitHub"); setLink("demoLink", LINKS.demoVideo, "View Demo Video"); setLink("demoLink2", LINKS.demoVideo, "View Demo Video"); setLink("demoLink3", LINKS.demoVideo, "Demo Video"); setLink("xLink", LINKS.x, "Build-in-Public Thread"); setLink("siteLink", LINKS.site, "preyashyadav.com"); setLink("techLink", LINKS.technicalWalkthrough, "Technical Walkthrough"); for (const el of document.querySelectorAll('[data-now="iso"]')) { el.textContent = new Date().toISOString(); } const revealEls = Array.from(document.querySelectorAll(".reveal")); for (const el of revealEls) el.classList.add("js-reveal"); const observer = new IntersectionObserver( (entries) => { for (const entry of entries) { if (!entry.isIntersecting) continue; entry.target.classList.add("inView"); observer.unobserve(entry.target); } }, { threshold: 0.15, rootMargin: "0px 0px -10% 0px" }, ); for (const el of revealEls) observer.observe(el);