use dioxus::prelude::*;
use crate::state::room_state::PresenceStatus;
#[component]
pub fn PresenceIndicator(
status: PresenceStatus,
size: Option<u32>,
custom_status: Option<String>,
) -> Element {
let dot_size = size.unwrap_or(10);
let dot_class = match status {
PresenceStatus::Online => "presence-indicator presence-indicator--online",
PresenceStatus::Unavailable => "presence-indicator presence-indicator--unavailable",
PresenceStatus::Offline => "presence-indicator presence-indicator--offline",
};
let title = match status {
PresenceStatus::Online => "Online",
PresenceStatus::Unavailable => "Away",
PresenceStatus::Offline => "Offline",
};
let has_status = custom_status.is_some();
let status_text = custom_status.unwrap_or_default();
if has_status {
rsx! {
span {
class: "presence-indicator-wrapper",
span {
class: dot_class,
title: title,
width: "{dot_size}px",
height: "{dot_size}px",
}
span {
class: "presence-indicator__status-text",
"{status_text}"
}
}
}
} else {
rsx! {
span {
class: dot_class,
title: title,
width: "{dot_size}px",
height: "{dot_size}px",
}
}
}
}