@* EnvelopeInfoCard: Zeigt die Umschlag-Infos oberhalb des PDF-Viewers. Entspricht dem Card-Bereich in ShowEnvelope.cshtml im Web-Projekt. Wird angezeigt wenn der Empfänger erfolgreich authentifiziert ist und das Dokument sehen darf. "Dumme" Komponente: Keine Services, nur Parameter → Anzeige. *@
@* ── Card Header: Logo + Fortschrittsbalken ── Im Web-Projekt gibt es hier das signFLOW-Logo und darunter "2/3 Signatures". Wir zeigen den Fortschritt nur wenn es KEIN ReadOnly-Dokument ist (ReadOnly = nur lesen, nicht signieren). *@
signFLOW @if (!ReadOnly && SignatureTotal > 0) {
@SignaturesDone/@SignatureTotal
} @if (ReadOnly) { Nur Ansicht }
@* ── Card Body: Titel, Nachricht, Sender-Info ── *@
@* Titel des Umschlags *@
@Title
@* Nachricht des Absenders — im Web-Projekt wird das mit Marked.js als Markdown gerendert. Hier erstmal als Plain Text. Markdown-Rendering kommt in Phase 6 (Feinschliff). *@ @if (!string.IsNullOrEmpty(Message)) {

@Message

} @* Sender-Info: Wer hat es gesendet, wann? Im Web-Projekt steht hier: "Gesendet am 15.03.2026 von Max Mustermann (max@firma.de)" *@

@if (!string.IsNullOrEmpty(SenderName) && !string.IsNullOrEmpty(SenderEmail)) { Gesendet @if (SentDate is not null) { am @SentDate.Value.ToString("dd.MM.yyyy") } von @SenderName (@SenderEmail) }

@code { // ── Parameter ── /// Titel des Umschlags (z.B. "Vertragsdokument") [Parameter, EditorRequired] public string Title { get; set; } = string.Empty; /// Nachricht des Absenders [Parameter] public string? Message { get; set; } /// Name des Absenders (z.B. "Max Mustermann") [Parameter] public string? SenderName { get; set; } /// E-Mail des Absenders [Parameter] public string? SenderEmail { get; set; } /// Datum an dem der Umschlag gesendet wurde [Parameter] public DateTime? SentDate { get; set; } /// Ob das Dokument nur zum Lesen ist (kein Signieren) [Parameter] public bool ReadOnly { get; set; } /// Anzahl bereits geleisteter Unterschriften [Parameter] public int SignaturesDone { get; set; } /// Gesamtanzahl benötigter Unterschriften [Parameter] public int SignatureTotal { get; set; } // ── Berechnete Werte ── /// /// Fortschritt in Prozent für den Balken. /// Vermeidet Division durch Null. /// private int ProgressPercent => SignatureTotal > 0 ? (int)((double)SignaturesDone / SignatureTotal * 100) : 0; }