Schulportal-Konventionen übernommen: Dark Mode (ThemeToggle), beispieldaten.py + generated.json, kimi.md, mail-server (Postfix-Relay + API), Deploy-Workflow (pscp/plink, npm_default), Screenshots in preview/

This commit is contained in:
2026-10-02 10:46:10 +02:00
parent ca97ea028f
commit b3dfb8ab7c
27 changed files with 7284 additions and 163 deletions
+29
View File
@@ -0,0 +1,29 @@
/** Dark-Mode-Helfer: Klasse auf <html>, Präferenz in localStorage. */
export const THEME_KEY = 'mp-theme'
export function initTheme() {
let dunkel = false
try {
const gespeichert = localStorage.getItem(THEME_KEY)
dunkel = gespeichert
? gespeichert === 'dark'
: window.matchMedia('(prefers-color-scheme: dark)').matches
} catch {
dunkel = false
}
document.documentElement.classList.toggle('dark', dunkel)
}
export function istDunkel(): boolean {
return document.documentElement.classList.contains('dark')
}
export function setzeTheme(dunkel: boolean) {
document.documentElement.classList.toggle('dark', dunkel)
try {
localStorage.setItem(THEME_KEY, dunkel ? 'dark' : 'light')
} catch {
// Speicher nicht verfügbar – Theme gilt nur für diese Sitzung
}
}