synpad 0.1.0

A full-featured Matrix chat client built with Dioxus
use dioxus::prelude::*;

/// Reply bar shown above the composer when replying to a message.
#[component]
pub fn ReplyBar(
    sender_name: Option<String>,
    body: Option<String>,
    on_cancel: EventHandler<()>,
) -> Element {
    let sender = sender_name.unwrap_or_else(|| "someone".to_string());
    let preview = body.unwrap_or_else(|| "...".to_string());
    // Truncate long previews
    let preview_short = if preview.len() > 120 {
        format!("{}...", &preview[..117])
    } else {
        preview
    };

    rsx! {
        div {
            class: "reply-bar",
            div {
                class: "reply-bar__indicator",
            }
            div {
                class: "reply-bar__content",
                span { class: "reply-bar__sender", "{sender}" }
                span { class: "reply-bar__body", "{preview_short}" }
            }
            button {
                class: "reply-bar__cancel",
                title: "Cancel reply",
                onclick: move |_| on_cancel.call(()),
                ""
            }
        }
    }
}