Skip to main content

dioxus_docs_kit/components/blog/
author_info.rs

1use dioxus::prelude::*;
2
3use crate::blog::registry::BlogRegistry;
4
5/// Author info display (avatar + name).
6#[component]
7pub fn AuthorInfo(author_id: String) -> Element {
8    let registry = use_context::<&'static BlogRegistry>();
9
10    let Some(author) = registry.get_author(&author_id) else {
11        return rsx! { span { class: "text-sm text-base-content/50", "{author_id}" } };
12    };
13
14    let inner = rsx! {
15        div { class: "flex items-center gap-2",
16            if let Some(ref avatar) = author.avatar {
17                img {
18                    src: "{avatar}",
19                    alt: "{author.name}",
20                    class: "size-6 rounded-full",
21                }
22            }
23            span { class: "font-medium", "{author.name}" }
24        }
25    };
26
27    if let Some(ref url) = author.url {
28        rsx! {
29            a {
30                href: "{url}",
31                target: "_blank",
32                rel: "noopener noreferrer",
33                class: "hover:text-primary transition-colors",
34                {inner}
35            }
36        }
37    } else {
38        rsx! { {inner} }
39    }
40}