1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mod menu_group;
mod menu_item;
mod theme;

use crate::utils::Provider;
use leptos::*;
pub use menu_group::MenuGroup;
pub use menu_item::*;
pub use theme::MenuTheme;

#[component]
pub fn Menu(#[prop(optional, into)] value: RwSignal<String>, children: Children) -> impl IntoView {
    view! {
        <Provider value=MenuInjection(value)>
            <div class="thaw-menu">{children()}</div>
        </Provider>
    }
}

#[derive(Clone)]
pub(crate) struct MenuInjection(pub RwSignal<String>);

pub(crate) fn use_menu() -> MenuInjection {
    expect_context()
}