diff --git a/README.md b/README.md index 5e32390..1e381bb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # perinco Pulse Zeiterfassung für perinco – live unter **https://pulse.perinco.de**. -Stil, Themes und Aufbau folgen dem perinco CRM. +Quellcode: [git.perinco.de/Sascha/perinco-Pulse](https://git.perinco.de/Sascha/perinco-Pulse). +Stil, Themes und Aufbau folgen dem perinco CRM +([git.perinco.de/Sascha/perinco-CRM](https://git.perinco.de/Sascha/perinco-CRM)). | Teil | Technik | Wo | | --- | --- | --- | @@ -60,6 +62,27 @@ Serverseitig erzeugt, alle mit Kopf/Fuß aus *Einstellungen → Export* (Logo, A - **Abgleich**: aktualisiert Name, Mail und Jobtitel der übernommenen Konten; wer im AD gelöscht, deaktiviert oder nicht mehr zulässig ist, wird in Pulse deaktiviert. Legt nie selbst Konten an. Die AD-Liste wird 5 Minuten zwischengespeichert („Neu laden“ holt sofort). - Externe Benutzer bleiben lokale Konten. +## Themes + +Sieben Farbwelten, jede in hell und dunkel, gespeichert am Benutzer +(`pulse_users.theme`, `theme_mode`) und vor dem ersten Bild gesetzt (Inline-Skript +in `index.html`). Sie kommen 1:1 aus dem perinco CRM; drei bringen Bewegung mit: + +| Theme | Bewegung | Wo | +| --- | --- | --- | +| Rainy | Nieselregen mit Aufprall, Wetterleuchten in den Wolken der Kopfleiste | `src/components/layout/RainyWeather.tsx`, `.rainy-flash` | +| Snow | Schneefall, der sich unten zu einer Decke sammelt; alle 4 Minuten fährt ein Räumfahrzeug durch | `src/components/layout/SnowWeather.tsx` | +| Aura | hell: Sonnenstrahlen, dunkel: Mond mit Sternen; ziehende Wolken und **schaukelnde Hügel in der Seitenleiste** (`@keyframes aura-hills`, nur hell) | `src/components/layout/AuraSky.tsx`, `src/index.css` | + +Die Animationen hängen am `ThemeProvider`, liegen über der Oberfläche, fangen +keine Klicks ab und bleiben unter Dialogen. Bei „Bewegung reduzieren“ im +Betriebssystem bleiben sie alle aus. + +Ein neues Theme braucht vier Stellen: Farbblock in `src/index.css`, Eintrag in +`THEME_PALETTES` samt Beschriftung (`src/types.ts`), die Freigabeliste im +Inline-Skript von `index.html` und die Prüfung in `server/src/routes/auth.js` +(`PATCH /api/auth/me`) – fehlt die letzte, lässt sich die Wahl nicht speichern. + ## Entwicklung ```bash