Skip to main content

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}