// Landing page: terminal tabs + benchmark bars export function initLanding() { document.querySelectorAll('.ja-tabs').forEach((tabs) => { const btns = tabs.querySelectorAll('[data-tab-btn]'); const panels = tabs.querySelectorAll('[data-tab-panel]'); btns.forEach((btn) => { btn.addEventListener('click', () => { const target = btn.dataset.tabBtn; btns.forEach((b) => b.setAttribute('data-active', b === btn ? 'true' : 'false')); panels.forEach((p) => { p.style.display = p.dataset.tabPanel === target ? 'block' : 'none'; }); }); }); }); const bars = document.querySelectorAll('.ja-bar-fill'); if (bars.length && 'IntersectionObserver' in window) { const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { (e.target as HTMLElement).style.width = e.target.getAttribute('data-w') || '0%'; io.unobserve(e.target); } }); }, { threshold: 0.4 }); bars.forEach((b) => io.observe(b)); } }