Responsive: mobile Off-Canvas-Navigation + Layout-Anpassungen

- Sidebar wird auf <=820px nicht mehr ausgeblendet (kein Nav-Verlust), sondern
  zu einem Off-Canvas-Drawer mit Hamburger-Button + Backdrop (theme.js
  injiziert ihn auf allen .mf-shell-Seiten; Styles in theme.css).
- Topbar stapelt/umbricht auf Mobil (dekorativer Puls + Suche ausgeblendet,
  kleinere Begrüßung), HUD-Karten-Grid 3->2->1, breite mf-Tabellen horizontal
  scrollbar. Schließen per Backdrop, Nav-Link oder Escape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
AliceDarkest
2026-06-29 19:39:33 +02:00
parent 34b050503d
commit 0e4645541d
3 changed files with 57 additions and 1 deletions
+26
View File
@@ -23,6 +23,31 @@
}
window.MindfluxTheme = { toggle: toggle, apply: apply };
// Mobile-Nav: Off-Canvas-Drawer für Seiten mit App-Sidebar (.mf-shell)
function initMobileNav() {
var sidebar = document.querySelector('.mf-sidebar');
if (!sidebar || document.querySelector('.mf-burger')) return;
var burger = document.createElement('button');
burger.className = 'mf-burger';
burger.setAttribute('aria-label', 'Menü öffnen');
burger.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 6h18M3 12h18M3 18h18"/></svg>';
var backdrop = document.createElement('div');
backdrop.className = 'mf-nav-backdrop';
function close() { document.body.classList.remove('mf-nav-open'); }
function toggleNav() { document.body.classList.toggle('mf-nav-open'); }
burger.addEventListener('click', toggleNav);
backdrop.addEventListener('click', close);
sidebar.querySelectorAll('a').forEach(function (a) { a.addEventListener('click', close); });
window.addEventListener('keydown', function (e) { if (e.key === 'Escape') close(); });
document.body.appendChild(backdrop);
document.body.appendChild(burger);
}
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.mf-theme').forEach(function (b) {
b.setAttribute('role', 'button');
@@ -30,5 +55,6 @@
b.addEventListener('click', toggle);
});
paint();
initMobileNav();
});
})();