import type { ReactNode } from "react" import { cn } from "cn" import { Geraetesymbol } from "@/components/cockpit/Geraetesymbol" import type { Geraetebild, Punktzustand } from "@/lib/geraetebild" import type { LampenZustand } from "@/lib/typen" // Der Kopf beider Cockpits (Design v5, 25.09.2026): links der Statusblock mit Schein in der Farbe der Lage — drücken // führt dorthin, wo etwas zu tun ist —, rechts die Kacheln der Geräte bzw. Dienste. Zustand immer auch in Worten. export type Lageart = "ok" | "info" | "gelb" | "rot" | "stumm" const ART: Record = { ok: { block: "bg-gruen/[0.07] ring-gruen/30", glut: "var(--gruen)", text: "text-gruen" }, info: { block: "bg-cyan/[0.07] ring-cyan/30", glut: "var(--cyan)", text: "text-cyan-text" }, gelb: { block: "bg-bernstein/[0.08] ring-bernstein/35", glut: "var(--bernstein)", text: "text-bernstein" }, rot: { block: "bg-rot/10 ring-rot/40", glut: "var(--rot)", text: "text-rot-text" }, stumm: { block: "bg-white/[0.04] ring-white/15", glut: "var(--text-3)", text: "text-text-2" }, } export function Lagekopf({ art, oben, mitte, unten, aktiv, onAnsehen, label, children }: { art: Lageart oben: string mitte: string unten: string aktiv: boolean onAnsehen: () => void /** Name des Abschnitts für Screenreader („Lage im Homelab“). */ label: string /** Die Kacheln rechts (eine Liste von
  • ). */ children: ReactNode }) { const a = ART[art] return (
      {children}
    ) } const LAMPE_PUNKT: Record = { ok: "ok", aus: "aus", warn: "warn", info: "info", fehler: "rot" } const WERT: Record = { ok: "text-text-3", aus: "text-text-3", warn: "text-bernstein", info: "text-cyan-text", fehler: "text-rot-text", } const ZUSTAND_TEXT: Record = { ok: "in Ordnung", aus: "aus", warn: "braucht Aufmerksamkeit", info: "Info", fehler: "Störung", } /** Eine Kachel im Lagekopf: Bild mit Zustandspunkt, Name, darunter der Wert in der Farbe des Zustands. */ export function Lagekachel({ bild, name, wert, zustand, onClick }: { bild: Geraetebild name: string wert: string zustand: LampenZustand onClick?: () => void }) { const inhalt = ( <> {name} {wert} {ZUSTAND_TEXT[zustand]} ) const stil = "flaeche-innen flex h-full w-full min-w-0 items-center gap-3 rounded-xl px-3 py-2.5 text-left" return (
  • {onClick ? ( ) : (
    {inhalt}
    )}
  • ) }