Spaces:
Running
Running
// Generate navigation items | |
const sections = [ | |
{ id: 'endpoints', title: 'Endpoints' }, | |
{ id: 'register', title: 'Register' }, | |
{ id: 'login', title: 'Login' }, | |
{ id: 'refresh', title: 'Refresh Token' }, | |
{ id: 'generate', title: 'Generate' }, | |
{ id: 'workflow', title: 'Workflow Example' } | |
]; | |
const navItems = document.querySelector('.nav-items'); | |
sections.forEach(section => { | |
const item = document.createElement('div'); | |
item.className = 'nav-item'; | |
item.textContent = section.title; | |
item.setAttribute('data-section', section.id); | |
item.addEventListener('click', () => { | |
document.getElementById(section.id).scrollIntoView({ behavior: 'smooth' }); | |
}); | |
navItems.appendChild(item); | |
}); | |
// Highlight current section in navigation | |
const observerCallback = (entries) => { | |
entries.forEach(entry => { | |
if (entry.isIntersecting) { | |
const currentNav = document.querySelector(`.nav-item[data-section="${entry.target.id}"]`); | |
if (currentNav) { | |
document.querySelectorAll('.nav-item').forEach(item => { | |
item.style.backgroundColor = ''; | |
}); | |
currentNav.style.backgroundColor = '#f3f4f6'; | |
} | |
} | |
}); | |
}; | |
const observer = new IntersectionObserver(observerCallback, { | |
threshold: 0.2 | |
}); | |
document.querySelectorAll('section').forEach(section => { | |
observer.observe(section); | |
}); |