use leptos::prelude::*;
use orbital_macros::component_doc;
use super::styles::{card_bleed_styles, card_media_styles};
#[component_doc(
category = "Surfaces",
preview_slug = "card-media",
preview_label = "Card Media",
preview_icon = icondata::AiLayoutOutlined,
)]
#[component]
pub fn CardMedia(
#[prop(optional, into)]
class: MaybeProp<String>,
#[prop(into)]
src: String,
#[prop(into)]
alt: String,
#[prop(optional, default = 140)]
height: u32,
) -> impl IntoView {
let bleed_sheet = card_bleed_styles();
let media_sheet = card_media_styles();
let media_height = move || format!("{height}px");
let root_class = Memo::new(move |_| {
let extra = class.get().unwrap_or_default();
if extra.is_empty() {
"orbital-card-media orbital-card-bleed".to_string()
} else {
format!("orbital-card-media orbital-card-bleed {extra}")
}
});
view! {
<style>{bleed_sheet}</style>
<style>{media_sheet}</style>
<img
class=root_class
src=src
alt=alt
style=move || format!("--orbital-card-media-height: {}", media_height())
/>
}
}