namespace IBKRTrader.Core.Modularity;
///
/// Eine vom Core oder einem Modul beigesteuerte Fenster-Ansicht. Die Shell zeigt je View höchstens
/// eine Instanz und holt ein offenes Fenster wieder nach vorne.
///
/// Bewusst toolkit-neutral: liefert ein ,
/// keinen konkreten Fenstertyp, und ist ein Schlüssel statt eines Bildes.
/// Dadurch trägt der Core keine UI-Abhängigkeit und bleibt plattformneutral – Voraussetzung für den
/// kopflosen Linux-Betrieb. Insbesondere hängt hier kein System.Drawing.Image mehr:
/// System.Drawing.Common ist seit .NET 7 Windows-only und wirft auf Linux. Die jeweilige
/// Shell kennt ihr Toolkit und castet – die WinForms-Shell auf Form, die Avalonia-Shell
/// auf Window.
///
public sealed class ModuleView
{
/// Stabile ID für Einzelinstanz-Handling (nur ein Fenster je View).
public string Id { get; init; } = Guid.NewGuid().ToString();
/// Titel (Fallback-Fenstertitel, falls das Fenster keinen eigenen setzt).
public string Title { get; init; } = "Fenster";
/// Optionale Gruppierung (z. B. "Core", "CongressTrading").
public string? Group { get; init; }
/// Optionale Sortierreihenfolge in Menü/Buttons.
public int Order { get; init; } = 0;
///
/// Logischer Schlüssel des Symbols für Menü/Buttons (z. B. "dashboard", "logs"). Die Shell löst
/// ihn gegen ihre eigenen Bildressourcen auf. Settable, damit die Shell den von Modulen
/// registrierten Views zentral ein Symbol zuweisen kann – Module kennen die Shell-Ressourcen nicht.
///
public string? IconKey { get; set; }
///
/// Erzeugt das anzuzeigende Fenster (frische Instanz je Öffnung). Rückgabetyp ist
/// – siehe Klassen-Doku zur Toolkit-Neutralität.
///
public Func