56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
const toggle = document.getElementById('theme-toggle');
|
|
const root = document.documentElement;
|
|
const stored = localStorage.getItem('theme');
|
|
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
const isLight = stored ? stored === 'light' : !prefersDark;
|
|
|
|
if (isLight) {
|
|
root.classList.add('light');
|
|
}
|
|
toggle.textContent = isLight ? 'DARK' : 'LIGHT';
|
|
|
|
toggle.addEventListener('click', () => {
|
|
root.classList.toggle('light');
|
|
const light = root.classList.contains('light');
|
|
toggle.textContent = light ? 'DARK' : 'LIGHT';
|
|
localStorage.setItem('theme', light ? 'light' : 'dark');
|
|
});
|
|
|
|
document.querySelectorAll('.example-cell').forEach(cell => {
|
|
cell.addEventListener('click', () => {
|
|
const video = cell.querySelector('video');
|
|
const wasExpanded = cell.classList.contains('expanded');
|
|
document.querySelectorAll('.example-cell.expanded').forEach(c => {
|
|
c.classList.remove('expanded');
|
|
c.querySelector('video').pause();
|
|
});
|
|
if (!wasExpanded) {
|
|
cell.classList.add('expanded');
|
|
video.play();
|
|
}
|
|
});
|
|
});
|
|
|
|
const featureDesc = document.getElementById('feature-desc');
|
|
document.querySelectorAll('.feature-tags button').forEach(btn => {
|
|
btn.addEventListener('click', () => {
|
|
const wasActive = btn.classList.contains('active');
|
|
document.querySelectorAll('.feature-tags button.active').forEach(b => b.classList.remove('active'));
|
|
if (wasActive) {
|
|
featureDesc.textContent = '';
|
|
} else {
|
|
btn.classList.add('active');
|
|
featureDesc.textContent = btn.dataset.desc;
|
|
}
|
|
});
|
|
});
|
|
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.key === 'Escape') {
|
|
document.querySelectorAll('.example-cell.expanded').forEach(c => {
|
|
c.classList.remove('expanded');
|
|
c.querySelector('video').pause();
|
|
});
|
|
}
|
|
});
|