logicaffeine_web/ui/components/chat.rs
1//! Chat message display component.
2//!
3//! Renders a list of chat messages with role-based styling (user, system, error).
4//! Used on the landing page REPL interface.
5//!
6//! # Props
7//!
8//! - `messages` - List of chat messages to display
9
10use dioxus::prelude::*;
11use crate::ui::state::{ChatMessage, Role};
12
13#[component]
14pub fn ChatDisplay(messages: Vec<ChatMessage>) -> Element {
15 rsx! {
16 div { class: "chat-area",
17 for (i, msg) in messages.iter().enumerate() {
18 div {
19 key: "{i}",
20 class: match msg.role {
21 Role::User => "message user",
22 Role::System => "message system",
23 Role::Error => "message error",
24 },
25 "{msg.content}"
26 }
27 }
28 }
29 }
30}