iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
179 lines (135 loc) • 7.08 kB
Markdown
# Themes anpassen (Frontend-Update 2026)
Mit dem Frontend-Update wurde die Theme-Engine von Home Assistant grundlegend
überarbeitet. **Bestehende Themes funktionieren weiterhin** – die alten Variablen
bleiben erhalten. Es gibt aber ein paar Änderungen, die zu sichtbaren Problemen
führen können. Das häufigste: **weiße Hintergründe bei Eingabefeldern**.
## Inhalt
* [Das Problem: weiße Eingabefelder](#das-problem-weiße-eingabefelder)
* [Schnelle Lösung](#schnelle-lösung)
* [Empfohlene Theme-Vorlage (hell + dunkel)](#empfohlene-theme-vorlage-hell--dunkel)
* [Was hat sich geändert?](#was-hat-sich-geändert)
* [Häufige Fragen](#häufige-fragen)
## Das Problem: weiße Eingabefelder
Mehrere Eingabe-Elemente (Textfelder, Auswahllisten, Schieberegler, Schalter,
Checkboxen, Zeit-Eingaben …) verwenden jetzt neue Komponenten. Diese holen ihre
Hintergrundfarbe **nicht mehr** aus den alten Variablen
`--mdc-text-field-fill-color` / `--input-fill-color`, sondern aus einer **neuen
Variable**:
```
--ha-color-form-background
```
Deren Standardwerte sind:
| Modus | Standard | Ergebnis |
|-------|----------|----------|
| Hell | `--ha-color-neutral-95` | ≈ `#f3f3f3` (fast weiß) |
| Dunkel | `--ha-color-neutral-20` | ≈ `#363636` (dunkel) |
**Wichtig:** Der dunkle Wert greift **nur, wenn der Dunkelmodus aktiv ist**.
`--ha-color-form-background` folgt **nicht** automatisch `--card-background-color`.
Wenn dein Theme also nur `card-background-color` und die alten
`--mdc-text-field-*`-Variablen setzt (wie z. B. das klassische *synthwave*-Theme),
bleibt `--ha-color-form-background` auf dem hellen Standard → **weiße Felder**,
auch in einem ansonsten dunklen Theme.
## Schnelle Lösung
Setze in deinem Theme die neue Variable `--ha-color-form-background` (plus die
beiden Varianten für Hover und deaktiviert):
```yaml
mein_theme:
ha-color-form-background: 'var(--card-background-color)' # Feld-Hintergrund
ha-color-form-background-hover: 'var(--light-primary-color)' # beim Überfahren
ha-color-form-background-disabled: 'var(--primary-background-color)' # deaktiviert
```
Du kannst statt der `var(...)` auch direkt feste Farben angeben, z. B.
`ha-color-form-background: '#34294f'`.
### Verwandt: weiße Accordions / Ausklapp-Bereiche
Dieselbe Art neuer Variable betrifft aufgeklappte **Accordions / Ausklapp-Bereiche**
(z. B. im Browser-Mod-Einstellungsbereich). Deren Kopfzeilen-Hintergrund nutzt
`--ha-color-fill-neutral-normal-active`, das ebenfalls hell voreingestellt ist.
Bei weißen Accordion-Kopfzeilen ergänze:
```yaml
mein_theme:
ha-color-fill-neutral-normal-active: 'var(--card-background-color)'
ha-color-fill-neutral-normal-hover: 'var(--light-primary-color)'
```
Die Regel ist überall dieselbe: Themes, die nur alte Variablen setzen,
überschreiben die neuen `--ha-color-*`-Variablen nicht – außer der Dunkelmodus
ist aktiv (siehe unten).
> Beim *synthwave*-Theme reicht es genau, diese drei Zeilen zu ergänzen –
> es hat `card-background-color` bereits gesetzt, aber nicht
> `ha-color-form-background`. Die aktuelle Upstream-Version des Themes setzt diese
> Variable bereits selbst.
## Empfohlene Theme-Vorlage (hell + dunkel)
Damit helle und dunkle Darstellung beide korrekt aussehen, benutze den
`modes`-Block. Home Assistant wählt dann automatisch den passenden Satz:
```yaml
mein_theme:
# für beide Modi
primary-color: "#18bcf2"
accent-color: "#f36d00"
modes:
light:
primary-background-color: "#fafafa"
card-background-color: "#ffffff"
secondary-background-color: "#e5e5e5"
primary-text-color: "#212121"
secondary-text-color: "#727272"
dark:
primary-background-color: "#111111"
card-background-color: "#1c1c1c"
secondary-background-color: "#282828"
primary-text-color: "#e1e1e1"
secondary-text-color: "#9b9b9b"
ha-color-form-background: "#1c1c1c"
ha-color-form-background-hover: "#282828"
ha-color-form-background-disabled: "#111111"
```
`--ha-color-form-background` pro Modus zu setzen ist genau das, was die neuen
Eingabefelder korrekt einfärbt. Im Hellmodus brauchst du es meist nicht, weil der
helle Standard dort passt – im Dunkelmodus (oder bei dunklen Themes ohne `modes`)
ist es nötig.
## Was hat sich geändert?
### 1. Neues mehrschichtiges Farb-System
Es gibt jetzt drei Ebenen von Farb-Variablen:
| Ebene | Beispiele | Zweck |
|-------|-----------|-------|
| **Kern** | `--ha-color-primary-50`, `--ha-color-neutral-90` … | Rohe Farbpalette. Nicht direkt verwenden. |
| **Semantisch** | `--ha-color-text-primary`, `--ha-color-fill-neutral-normal-resting`, `--ha-color-surface-*` | Zweckgebundene Farben, abgeleitet aus der Kern-Ebene. |
| **Alt (Kompatibilität)** | `--card-background-color`, `--primary-text-color`, `--primary-color` … | Bleiben vorhanden und funktionieren weiter. |
Themes, die die alten Variablen setzen, laufen weiter. Neue Komponenten lesen
aber teils die semantischen oder `--wa-*`-Variablen – die ein Theme, das nur
alte Variablen setzt, nicht überschreibt.
### 2. `primary-color` erzeugt automatisch eine Palette
Wenn ein Theme `primary-color` setzt, erzeugt das Frontend daraus automatisch
die komplette `--ha-color-primary-*`-Palette. Eine einzelne `primary-color`
wirkt sich also auf die neuen Variablen aus. **Hintergründe/Oberflächen werden
nicht automatisch abgeleitet** – die musst du selbst setzen.
### 3. Dunkelmodus
Der Dunkelmodus setzt die dunklen Werte der neuen Farb-Ebenen **nur, wenn der
Dunkelmodus auch wirklich aktiv ist**. Ein "dunkel aussehendes" Theme, das im
Hellmodus angewendet wird (ohne `modes`), startet von den **hellen** Standard-
Farben → weiße Felder. Deshalb: `modes`-Block verwenden.
### 4. Entfernte interne Dateien
Intern wurden alte Style-Dateien entfernt und durch ein neues Theme-System
ersetzt. Themes, die nur dokumentierte HA-Variablen nutzen, sind nicht betroffen.
Themes, die interne Variablennamen kopiert hatten, können kaputtgehen.
## Häufige Fragen
**Muss ich mein Theme komplett neu schreiben?**
Nein. In den meisten Fällen reicht es, `ha-color-form-background` (plus `-hover`
und `-disabled`) zu ergänzen.
**Mein Theme war nur für Dunkel gedacht und sieht jetzt teils hell aus
(weiße Felder).**
Das ist der häufigste Fall. Setze `ha-color-form-background` auf eine dunkle
Farbe (z. B. `var(--card-background-color)`). Optional: die Werte in einen
`modes: dark:`-Block verschieben und den Dunkelmodus aktivieren, dann greifen auch
die dunklen Standardwerte der neuen Variablen automatisch.
**Wo trage ich das Theme ein?**
Wie bisher in den Adapter-Einstellungen unter "Themes" (YAML). Der Adapter liefert
diese Themes unverändert an das Frontend.
**Brauche ich die neuen `--ha-color-*`-Variablen?**
Für die meisten Themes reicht es, **`ha-color-form-background`** zu ergänzen –
das ist die einzige neue Variable, die fast alle betrifft (weiße Eingabefelder).
Die übrigen `--ha-color-*`-Variablen sind nur für Feinabstimmung nötig.