mirror of
https://github.com/Shik3i/KoalaSync.git
synced 2026-08-31 13:08:15 +00:00
feat(website): SEO, a11y, and build pipeline overhaul
- SEO: per-locale og:locale, Organization+WebSite schema, FAQPage replacing ItemList - SEO: BreadcrumbList on legal pages, site.webmanifest, expanded sitemap - a11y: hamburger ARIA+ESC, skip-to-content, aria-hidden on step-num - a11y: focus-visible states, prefers-reduced-motion, emoji→SVG icons - CSS: extract .mock-section-label, replace transition:all, will-change hints - Build: esbuild JS minifier (-46%), sharp AVIF conversion (26 files, quality 70) - Build: content hashing (style.XXXX.min.css), SVG minification, picture injection - Cleanup: remove lightningcss (caused CSS merging bugs)
This commit is contained in:
+17
-7
@@ -433,15 +433,25 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
|
||||
// Mobile Hamburger Menu Toggle
|
||||
const hamburger = document.querySelector('.hamburger');
|
||||
const navLinks = document.querySelector('.nav-links');
|
||||
const navLinks = document.querySelector('#primary-nav');
|
||||
if (hamburger && navLinks) {
|
||||
// Initialize accessibility attribute
|
||||
hamburger.setAttribute('aria-expanded', 'false');
|
||||
|
||||
hamburger.addEventListener('click', () => {
|
||||
const isOpen = navLinks.classList.toggle('open');
|
||||
hamburger.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
|
||||
});
|
||||
|
||||
const open = () => {
|
||||
navLinks.classList.add('open');
|
||||
hamburger.setAttribute('aria-expanded', 'true');
|
||||
document.addEventListener('keydown', onEsc);
|
||||
};
|
||||
const close = () => {
|
||||
navLinks.classList.remove('open');
|
||||
hamburger.setAttribute('aria-expanded', 'false');
|
||||
document.removeEventListener('keydown', onEsc);
|
||||
};
|
||||
const toggle = () => navLinks.classList.contains('open') ? close() : open();
|
||||
const onEsc = (e) => { if (e.key === 'Escape') close(); };
|
||||
|
||||
hamburger.addEventListener('click', toggle);
|
||||
navLinks.querySelectorAll('a').forEach(a => a.addEventListener('click', close));
|
||||
}
|
||||
|
||||
// Dynamically localize home links on root dynamic pages (impressum, datenschutz, join)
|
||||
|
||||
Reference in New Issue
Block a user