Archived
2.0 site
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Initialize Icons
|
||||
if (typeof lucide !== 'undefined') {
|
||||
lucide.createIcons();
|
||||
}
|
||||
|
||||
// Theme Engine
|
||||
const themeToggle = document.getElementById('theme-toggle');
|
||||
const updateIcons = () => {
|
||||
// Lucide re-rendering if needed
|
||||
lucide.createIcons();
|
||||
};
|
||||
|
||||
themeToggle.addEventListener('click', () => {
|
||||
document.documentElement.classList.toggle('dark');
|
||||
const isDark = document.documentElement.classList.contains('dark');
|
||||
localStorage.setItem('rwn-v2-theme', isDark ? 'dark' : 'light');
|
||||
});
|
||||
|
||||
// Check LocalStorage
|
||||
if (localStorage.getItem('rwn-v2-theme') === 'dark') {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
|
||||
// Scroll Progress
|
||||
window.addEventListener('scroll', () => {
|
||||
const bar = document.getElementById('scroll-progress');
|
||||
const height = document.documentElement.scrollHeight - window.innerHeight;
|
||||
const scrolled = (window.scrollY / height);
|
||||
bar.style.transform = `scaleX(${scrolled})`;
|
||||
});
|
||||
|
||||
// Reveal Animation on Scroll
|
||||
const revealObserver = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('reveal-active');
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.1 });
|
||||
|
||||
document.querySelectorAll('.bento-card, #labs .group').forEach(el => {
|
||||
el.classList.add('reveal-init');
|
||||
revealObserver.observe(el);
|
||||
});
|
||||
|
||||
// Simple Mobile Toggle
|
||||
const mobileBtn = document.getElementById('mobile-toggle');
|
||||
mobileBtn.addEventListener('click', () => {
|
||||
alert("Mobile menu implementation: Add a slide-over panel here.");
|
||||
// Usually you'd toggle a 'hidden' class on a menu div
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user