2023-06-13 12:43:15 +08:00
|
|
|
use crate::pages::*;
|
|
|
|
use leptos::*;
|
|
|
|
use leptos_router::*;
|
2023-11-05 16:03:58 +08:00
|
|
|
use thaw::*;
|
2023-06-13 12:43:15 +08:00
|
|
|
|
|
|
|
#[component]
|
2023-08-29 09:11:22 +08:00
|
|
|
pub fn App() -> impl IntoView {
|
2023-11-01 14:04:12 +08:00
|
|
|
fn use_query_value(key: &str) -> Option<String> {
|
|
|
|
let href = window().location().href().ok()?;
|
|
|
|
let url = Url::try_from(href.as_str()).ok()?;
|
|
|
|
url.search_params.get(key).cloned()
|
|
|
|
}
|
|
|
|
let theme = use_query_value("theme").map_or_else(Theme::light, |name| {
|
|
|
|
if name == "light" {
|
|
|
|
Theme::light()
|
|
|
|
} else if name == "dark" {
|
|
|
|
Theme::dark()
|
|
|
|
} else {
|
|
|
|
Theme::light()
|
|
|
|
}
|
|
|
|
});
|
|
|
|
let theme = create_rw_signal(theme);
|
|
|
|
|
2023-10-24 21:49:36 +08:00
|
|
|
provide_context(theme);
|
2023-08-29 09:11:22 +08:00
|
|
|
view! {
|
2023-10-25 11:25:31 +08:00
|
|
|
<Provider theme>
|
2023-11-05 16:03:58 +08:00
|
|
|
<Router base="/thaw">
|
|
|
|
<Routes base="/thaw".to_string()>
|
2023-10-19 17:16:57 +08:00
|
|
|
<Route path="/" view=Home/>
|
|
|
|
<Route path="/components" view=ComponentsPage>
|
|
|
|
<Route path="/menu" view=MenuPage/>
|
|
|
|
<Route path="/slider" view=SliderPage/>
|
|
|
|
<Route path="/tabbar" view=TabbarPage/>
|
|
|
|
<Route path="/nav-bar" view=NavBarPage/>
|
|
|
|
<Route path="/input" view=InputPage/>
|
|
|
|
<Route path="/image" view=ImagePage/>
|
|
|
|
<Route path="/modal" view=ModalPage/>
|
|
|
|
<Route path="/button" view=ButtonPage/>
|
|
|
|
<Route path="/checkbox" view=CheckboxPage/>
|
|
|
|
<Route path="/toast" view=ToastPage/>
|
|
|
|
<Route path="/tabs" view=TabsPage/>
|
|
|
|
<Route path="/select" view=SelectPage/>
|
|
|
|
<Route path="/space" view=SpacePage/>
|
|
|
|
<Route path="/table" view=TablePage/>
|
|
|
|
<Route path="/color-picker" view=ColorPickerPage/>
|
|
|
|
<Route path="/alert" view=AlertPage/>
|
|
|
|
<Route path="/grid" view=GridPage/>
|
|
|
|
<Route path="/auto-complete" view=AutoCompletePage/>
|
|
|
|
<Route path="/avatar" view=AvatarPage/>
|
|
|
|
<Route path="/badge" view=BadgePage/>
|
|
|
|
<Route path="/card" view=CardPage/>
|
|
|
|
<Route path="/divider" view=DividerPage/>
|
|
|
|
<Route path="/input-number" view=InputNumberPage/>
|
|
|
|
<Route path="/icon" view=IconPage/>
|
|
|
|
<Route path="/message" view=MessagePage/>
|
2023-10-19 22:31:14 +08:00
|
|
|
<Route path="/radio" view=RadioPage/>
|
2023-10-20 23:42:08 +08:00
|
|
|
<Route path="/skeleton" view=SkeletonPage/>
|
|
|
|
<Route path="/switch" view=SwitchPage/>
|
2023-10-21 17:37:53 +08:00
|
|
|
<Route path="/tag" view=TagPage/>
|
2023-10-22 22:48:17 +08:00
|
|
|
<Route path="/upload" view=UploadPage/>
|
2023-10-19 17:16:57 +08:00
|
|
|
</Route>
|
|
|
|
<Route path="/mobile/tabbar" view=TabbarDemoPage/>
|
|
|
|
<Route path="/mobile/nav-bar" view=NavBarDemoPage/>
|
|
|
|
<Route path="/mobile/toast" view=ToastDemoPage/>
|
|
|
|
</Routes>
|
|
|
|
</Router>
|
2023-10-24 21:49:36 +08:00
|
|
|
</Provider>
|
2023-06-13 12:43:15 +08:00
|
|
|
}
|
|
|
|
}
|
2023-10-24 21:49:36 +08:00
|
|
|
|
|
|
|
#[component]
|
2023-10-25 11:25:31 +08:00
|
|
|
fn Provider(theme: RwSignal<Theme>, children: Children) -> impl IntoView {
|
2023-10-24 21:49:36 +08:00
|
|
|
view! {
|
|
|
|
<ThemeProvider theme>
|
2023-10-25 11:25:31 +08:00
|
|
|
<GlobalStyle />
|
2023-10-24 21:49:36 +08:00
|
|
|
<MessageProvider>
|
|
|
|
{children()}
|
|
|
|
</MessageProvider>
|
|
|
|
</ThemeProvider>
|
|
|
|
}
|
|
|
|
}
|