use crate::locales::init_locales; use crate::pages::home_page::HomePage; use crate::pages::settings::Settings; use leptos::*; use leptos_meta::*; use leptos_router::*; use crate::components::admin_portal::AdminPortal; use crate::components::header::Header; use crate::components::user_menu::MenuOpener; use crate::pages::login::Login; use crate::pages::public::Public; #[derive(Clone, Copy)] pub struct MenuHelper { opened: RwSignal } impl MenuHelper { pub fn new() -> Self { let opened = create_rw_signal(MenuOpener::new()); Self { opened } } pub fn set_opened(&self, opened: MenuOpener) { self.opened.set(opened); } pub fn close(&self) { self.opened.get().close(); } pub fn reset(&self) { self.opened.set(MenuOpener::new()); } } #[derive(Clone, Copy)] pub struct DialogHelper { opened: RwSignal } impl DialogHelper { pub fn new() -> Self { let opened = create_rw_signal(false); Self { opened } } pub fn set_opened(&self, opened: bool) { self.opened.set(opened); } pub fn is_open(&self) -> bool { self.opened.get() } } #[component] pub fn App() -> impl IntoView { // Provides context that manages stylesheets, titles, meta tags, etc. provide_meta_context(); init_locales(); provide_context(MenuHelper::new()); provide_context(MenuOpener::new()); provide_context(DialogHelper::new()); view! {
}/> }/> }/> }/>
} }