Live-Chat

Akademie · Webcast

Live-Chat

Live-Chat unter dem Mux-Player auf der Webcast-Seite. Pure-UI-Bausteine aus dem UI-Paket — Wiring + Realtime-State liegen im Akademie-Frontend.

Volle KompositionWIP

@repo/ui/LiveChat

Wie sich Container, Tabs, Message-Liste, Reactions und Composer im Akademie-Frontend zusammenfügen. State (aktiver Tab, Composer-Wert, Reactions pro Message) ist hier lokal — in der echten Anwendung kommt das von LiveChatClient.

  1. Dr. med. Anke WeberModeration

    Herzlich willkommen zur Live-Fortbildung. Der Chat ist freigeschaltet — bitte beachten Sie die Verhaltensregeln.

  2. Prof. Dr. med. Martin HossReferent

    Schön, dass Sie alle dabei sind. Wir starten gleich mit den aktuellen Leitlinien­änderungen zur Lysetherapie.

  3. Dr. Lena Krüger

    Funktioniert der Ton bei allen?

  4. Diese Nachricht wurde von der Moderation entfernt.
  5. Dr. med. Anke WeberModeration

    Erinnerung: Für die CME-Punkte bitte am Ende die Lernerfolgs­kontrolle ausfüllen.

  6. Sie

    Danke für den Hinweis — wann genau wird die LEK freigeschaltet?

Enter zum Senden · Shift + Enter für neue Zeile

ChatCardWIP

@repo/ui/LiveChat

Outer container. Höhe via clamp(480px, 60vh, 720px), eigene Border + Shadow. Optional `locked`-Mode mit Blur + pointer-events-off — sichtbares Wrapper für die LockGate-Surface oben drauf.

Inhalt der Karte — bei locked=true wird er per CSS unscharf dargestellt und pointer-events deaktiviert, damit eine darüber gerenderte Overlay-Surface (LockGate / Onboarding) sauber den Vordergrund einnimmt.

ChatTabsWIP

@repo/ui/LiveChat

Tab-Shell: Chat (default) → Fragen → Polls. Count-Badges am aktiven Tab heben sich farblich ab. Polls bekommt einen Dot-Indicator wenn aktiv (statt Count, weil max. 1 aktiver Poll). Tastatur-Navigation: ← / → / Home / End.

Aktiver Tab: chat

ChatMessageItemWIP

@repo/ui/LiveChat

Einzelne Message-Row: Avatar, Name, optionale Rollen-Badge, Zeit, Body. Avatar-Variante pro Rolle: Moderator brand-primary, Referent brand-accent, Teilnehmer neutral. Eigene Nachrichten (isOwn=true) bekommen einen dezenten Hintergrund-Tint.

Dr. Lena Krüger

Funktioniert der Ton bei allen?

Prof. Dr. med. Martin HossReferent

Schön, dass Sie alle dabei sind.

Dr. med. Anke WeberModeration

Erinnerung: bitte am Ende die LEK ausfüllen.

Sie

Danke für den Hinweis.

EM

Frage zur Aktendokumentation: dürfen Folien anonymisiert geteilt werden?

ChatReactionBarWIP

@repo/ui/LiveChat

Emoji-Reaktionsleiste unter jeder Message. Sechs erlaubte Reaktionen aus dem Backend-Allowlist (Daumen hoch, Klatschen, Treffer, Herz, Idee, Erledigt) als Lucide-Icons. Hover-revealed Picker-Trigger auf Desktop, permanent sichtbar auf Touch. Bereits gewählte Reaktionen sind als brand-getönte Chips hervorgehoben.

Vielen Dank für den anregenden Vortrag — eine kurze Rückfrage zur Dosistitration.

Noch keine Reaktion auf diese Nachricht — der Picker-Trigger ist auf Touch permanent sichtbar.

Disabled-State (z. B. während ein Toggle-RPC läuft) — Chips und Trigger reagieren nicht.

ChatMessageDeletedPlaceholderWIP

@repo/ui/LiveChat

Ersetzt eine von der Moderation entfernte Nachricht in der Liste. Bleibt sichtbar, damit Teilnehmer nicht verwirrt sind. Die Identität des Moderators wird hier bewusst nicht gezeigt — nur das Audit-Log enthält sie.

Diese Nachricht wurde von der Moderation entfernt.

ChatMessageListWIP

@repo/ui/LiveChat

Scroll-Container für die Message-Liste. Auto-Scroll-Heuristik im Twitch-Stil: wenn der User nahe am unteren Ende ist, scrollen neue Nachrichten automatisch nach unten; wenn er nach oben gescrollt hat, bleibt seine Position erhalten.

  1. Dr. med. Anke WeberModeration

    Herzlich willkommen zur Live-Fortbildung. Der Chat ist freigeschaltet — bitte beachten Sie die Verhaltensregeln.

  2. Prof. Dr. med. Martin HossReferent

    Schön, dass Sie alle dabei sind. Wir starten gleich mit den aktuellen Leitlinien­änderungen zur Lysetherapie.

  3. Dr. Lena Krüger

    Funktioniert der Ton bei allen?

  4. Diese Nachricht wurde von der Moderation entfernt.
  5. Dr. med. Anke WeberModeration

    Erinnerung: Für die CME-Punkte bitte am Ende die Lernerfolgs­kontrolle ausfüllen.

  6. Sie

    Danke für den Hinweis — wann genau wird die LEK freigeschaltet?

ChatComposerWIP

@repo/ui/LiveChat

Textarea + Send-Button mit Auto-Grow (max. ~6 Zeilen). Enter sendet, Shift+Enter erzeugt einen Zeilenumbruch. Der `rateLimitNotice`-Prop ersetzt den Standard-Hinweis durch eine Cooldown-Meldung.

Enter zum Senden · Shift + Enter für neue Zeile

Mit mehreren Zeilen (Auto-Grow):

Enter zum Senden · Shift + Enter für neue Zeile

Mit Rate-Limit-Hinweis:

ChatQuestionItemWIP

@repo/ui/LiveChat

Einzelne Frage-Karte. Drei Spalten: Upvote-Stack links, Avatar in der Mitte, Header + Body + optionale Actions rechts. Antwortet-Badge taucht im Header auf, wenn `answeredAt` gesetzt ist. Visuell konsistent zur ChatMessageItem (gleiche Avatar-Größe, gleicher Hover-Time-Trick, gleiche Action-Slot-Mechanik).

Dr. Sebastian Vogel

Gibt es bei der neuen Leitlinie konkrete Empfehlungen zur Lyse-Therapie bei Patienten mit Vorhofflimmern und gleichzeitiger Antikoagulation?

Dr. Lena KrügerBeantwortet

Welche Bildgebung wird vor Lyse-Start empfohlen?

Sie

Wie sieht die Empfehlung bei Patienten über 80 mit gleichzeitiger Niereninsuffizienz aus?

ChatQuestionListWIP

@repo/ui/LiveChat

Scrollbare Liste aller Fragen. Sortierung kommt vom Caller — Standard: unbeantwortet zuerst nach Upvotes absteigend, dann beantwortet nach Zeit. DeletedPlaceholder-Rows wandern dazwischen, wenn eine Frage soft-gelöscht wurde.

  1. Dr. Sebastian Vogel

    Gibt es bei der neuen Leitlinie konkrete Empfehlungen zur Lyse-Therapie bei Patienten mit Vorhofflimmern und gleichzeitiger Antikoagulation?

  2. Sie

    Wie sieht die Empfehlung bei Patienten über 80 mit gleichzeitiger Niereninsuffizienz aus?

  3. Diese Frage wurde entfernt.
  4. Dr. Lena KrügerBeantwortet

    Welche Bildgebung wird vor Lyse-Start empfohlen?

  5. Prof. Dr. med. Martin HossReferentBeantwortet

    Eine Verständnisfrage aus dem Backstage — kommt der Q&A-Block am Ende oder zwischendurch?

ChatQuestionFormWIP

@repo/ui/LiveChat

Eingabe einer neuen Frage. 500-Zeichen-Limit (= DB-CHECK), Auto-Grow bis ~6 Zeilen, Enter sendet · Shift+Enter neue Zeile. Char-Counter rechts unten. Pendant zum ChatComposer.

Enter zum Stellen · Shift + Enter für neue Zeile

ChatPollCreateFormWIP

@repo/ui/LiveChat

Inline-Formular zur Poll-Erstellung. Titel max. 200 Zeichen, 2–6 Optionen (je max. 120 Zeichen), Single- oder Multi-Choice, drei Reveal-Modi. Validiert clientseitig + erwartet Re-Validierung in der Server-Action.

Neue Umfrage

Antwortoptionen (2–6)
Teilnehmer sehen die Live-Auswertung in Echtzeit.

ChatPollCardWIP

@repo/ui/LiveChat

Live-Poll-Anzeige im Polls-Tab. Drei Render-States: offen + kann voten (Buttons / Checkboxen), offen + bereits gevoted (gesperrt, Hinweis), geschlossen (finale Bars). Reveal-Mode steuert ob Counts und Prozente sichtbar sind. Multi-Choice fügt einen Submit-Button hinzu.

Live

Welche Aussage zur Lyse-Therapie trifft am ehesten zu?

ChatEmptyStateWIP

@repo/ui/LiveChat

Leerzustände im Message-Listen-Bereich. Drei Varianten je Anwendungsfall.

Chat öffnet bei Streamstart

Der Live-Chat wird verfügbar, sobald der Stream beginnt.

Noch keine Nachrichten

Schreiben Sie als Erste:r — Ihr Beitrag ist für alle Teilnehmer sichtbar.

Chat pausiert

Der Chat wurde im Hintergrund pausiert, um Ressourcen zu sparen.

ChatLockGateWIP

@repo/ui/LiveChat

Centered Card mit Lock-Icon und CTA. Liegt absolut über dem ChatCard-Inhalt — dieser ist via `locked` blurred. Klick auf den CTA öffnet die In-Card-Onboarding-Surface.

(Chat-Inhalt unscharf, damit Lock-Gate visuell trägt.)

Live-Chat ist gesperrt

Bitte bestätigen Sie kurz die Teilnahmebedingungen, um dem Chat beizutreten.

ChatOnboardingSurfaceWIP

@repo/ui/LiveChat

In-Card-Overlay (kein Modal), das nach Klick auf das LockGate erscheint. Zwei Schritte: (1) Sichtbarkeits-Wahl mit Live-Avatar-Preview, (2) Verhaltensregeln mit Checkbox-Bestätigung. Der Consumer (LiveChatClient) hält Step + Visibility + Checkbox-State und bekommt onSubmit für die Join-Chat-RPC.

(Chat-Inhalt unscharf, damit Onboarding-Surface visuell trägt.)

ChatPausedOverlayWIP

@repo/ui/LiveChat

Card-deckendes Overlay für den `paused`-State (Tab > 30 s im Hintergrund → unsubscribed). Auto-Resume bei Tab-Focus; der CTA erlaubt manuelles Wiederverbinden.

Chat pausiert

Der Chat wurde im Hintergrund pausiert, um Ressourcen zu sparen. Klicken Sie auf Wiederverbinden, um fortzufahren.