use leptos::prelude::*;
use orbital_base_components::{BaseList, BaseListItem, ListNavigationMode, ListSelectionMode};
use orbital_macros::component_doc;
use orbital_style::inject_style;
use super::styles::list_styles;
#[component_doc(
category = "Data Display",
preview_slug = "list",
preview_label = "List",
preview_icon = icondata::AiUnorderedListOutlined,
)]
#[component]
pub fn List(
#[prop(optional, into)]
class: MaybeProp<String>,
#[prop(optional, into)]
navigation_mode: Signal<Option<ListNavigationMode>>,
#[prop(optional, into)]
selection_mode: Signal<Option<ListSelectionMode>>,
children: Children,
) -> impl IntoView {
inject_style("orbital-list", list_styles());
view! {
<BaseList class=class navigation_mode=navigation_mode selection_mode=selection_mode>
{children()}
</BaseList>
}
}
#[component]
pub fn ListItem(
#[prop(optional, into)]
class: MaybeProp<String>,
#[prop(optional, into)]
selected: Signal<bool>,
#[prop(optional)]
on_click: Option<Callback<()>>,
children: Children,
) -> impl IntoView {
view! {
<BaseListItem class=class selected=selected nostrip:on_click=on_click>
{children()}
</BaseListItem>
}
}