use leptos::prelude::*;
use uuid::Uuid;
#[component]
pub fn Carousel<'a>(#[prop(optional, into)] class: &'a str, children: Children) -> impl IntoView {
let class = format!("carousel slide {}", class);
let id = Uuid::new_v4();
let hash_id = format!("#{}", id);
view! {
<div id=id.to_string() class=class>
<div class="carousel-inner">
{children()}
</div>
<button class="carousel-control-prev" type="button" data-bs-target=hash_id.clone() data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target=hash_id data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
}
}
#[component]
pub fn CarouselItem<'a>(
#[prop(optional)] active: bool,
#[prop(optional, into)] class: &'a str,
children: Children,
) -> impl IntoView {
let mut class = format!("carousel-item {}", class);
if active {
class.push_str(" active");
}
view! {
<div class=class>
{children()}
</div>
}
}