feat(260924-i8v): Proxmox-Kachel als Durchstich mit Balken und Zusammenfassung

- Typ proxmox am Ende von WIDGET_TYPES, WIDGET_MODULE_SLUGS = { proxmox: 'proxmox' }
- gemeinsame Statusteile (proxmox-status, HealthBar, status-styles) nach components/proxmox/
- HealthBar variant compact: 6 px, ohne Legende, aria-hidden
- Registry 3/4/8/8, Katalog-/Registry-/API-Tests auf die erste Modul-Kachel umgestellt
- ProxmoxWidget liest nur listServers, zeigt Lade-, Leer-, Fehlerzustand

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-24 13:24:51 +02:00
parent 8bfa4fc467
commit a906c6705d
19 changed files with 556 additions and 69 deletions
+5 -6
View File
@@ -23,17 +23,16 @@ import { WIDGET_MODULE_SLUGS } from '@tessera/shared';
* für ein Feld, das derzeit für jede Zeile leer wäre, wiegt schwerer als
* diese Konstante mit identischer Aussagekraft (15-RESEARCH.md Pitfall 5).
*
* Die Tabelle ist bewusst leer: alle neun registrierten Widget-Typen
* (clock/search/calendar/note/calculator/favorites/stopwatch/
* picture-frame/xframe) sind Plattform-Widgets ohne Modulbezug. Die erste
* modulgebundene Kachel trägt ihren Slug in `WIDGET_MODULE_SLUGS` ein.
* Seit quick-260924-i8v steht dort genau ein Eintrag: `proxmox` →
* `proxmox`. Die übrigen neun Widget-Typen (clock/search/calendar/note/
* calculator/favorites/stopwatch/picture-frame/xframe) sind
* Plattform-Widgets ohne Modulbezug.
*/
export const WIDGET_MODULE_MAP: Readonly<Record<string, string>> = WIDGET_MODULE_SLUGS;
/**
* Liefert den Modul-Slug für einen Widget-Typ, oder `undefined`, wenn
* der Typ kein Modul-Widget ist (der heutige Zustand für alle neun
* bestehenden Typen). Einziger Lesezugriff auf die Zuordnungstabelle,
* der Typ kein Modul-Widget ist (alle Typen außer `proxmox`). Einziger Lesezugriff auf die Zuordnungstabelle,
* damit Tests sie gezielt mocken können.
*/
export function getModuleSlugForWidgetType(widgetType: string): string | undefined {