// Schwebender Dialog zum Bearbeiten des strukturierten Raum-Stempels (Feldmodell): // Raumnummer, Raumname (+ Zeile 2), Bodenfläche (mit Präfix) und Nutzung. Ersetzt // für neue Räume den freien Text-Editor. Kontrolliert (value/onApply/onCancel); // arbeitet auf einem lokalen Entwurf, erst „Übernehmen" schreibt zurück. // Bezeichner englisch, UI-Text über t(). // // Folge-Arbeit: Zeilen-Layout-Editor (welches Feld auf welche Zeile), // Per-Feld-Typografie, Fensterfläche. import { useState } from "react"; import { t } from "../i18n"; import type { RoomStamp } from "../model/types"; export interface RoomStampEditorProps { /** Ausgangsstempel (wird beim Öffnen kopiert; Editor arbeitet lokal). */ value: RoomStamp; /** „Übernehmen" — den bearbeiteten Stempel zurückschreiben. */ onApply: (stamp: RoomStamp) => void; /** „Abbrechen"/Schliessen — ohne Übernahme. */ onCancel: () => void; } export function RoomStampEditor({ value, onApply, onCancel }: RoomStampEditorProps) { const [draft, setDraft] = useState(value); const patch = (p: Partial) => setDraft((d) => ({ ...d, ...p })); return (
{ if (e.target === e.currentTarget) onCancel(); }} onKeyDown={(e) => { if (e.key === "Escape") onCancel(); }} >
{t("roomStamp.title")}
); } export default RoomStampEditor;