2023-06-13 12:43:15 +08:00
|
|
|
use crate::pages::*;
|
|
|
|
use leptos::*;
|
2023-11-13 16:17:45 +08:00
|
|
|
use leptos_meta::provide_meta_context;
|
2023-06-13 12:43:15 +08:00
|
|
|
use leptos_router::*;
|
2024-07-02 07:18:40 +00:00
|
|
|
use leptos_use::{
|
|
|
|
storage::use_local_storage,
|
|
|
|
utils::{FromToStringCodec, StringCodec},
|
|
|
|
};
|
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-19 14:06:23 +08:00
|
|
|
let is_routing = create_rw_signal(false);
|
|
|
|
let set_is_routing = SignalSetter::map(move |is_routing_data| {
|
|
|
|
is_routing.set(is_routing_data);
|
2023-11-01 14:04:12 +08:00
|
|
|
});
|
2023-11-13 16:17:45 +08:00
|
|
|
provide_meta_context();
|
2023-11-19 14:06:23 +08:00
|
|
|
|
2023-08-29 09:11:22 +08:00
|
|
|
view! {
|
2024-01-17 16:53:28 +08:00
|
|
|
<Router set_is_routing>
|
2023-11-19 14:06:23 +08:00
|
|
|
<TheProvider>
|
|
|
|
<TheRouter is_routing/>
|
|
|
|
</TheProvider>
|
|
|
|
</Router>
|
2023-06-13 12:43:15 +08:00
|
|
|
}
|
|
|
|
}
|
2023-10-24 21:49:36 +08:00
|
|
|
|
2023-11-06 23:35:30 +08:00
|
|
|
#[component]
|
2023-11-19 14:06:23 +08:00
|
|
|
fn TheRouter(is_routing: RwSignal<bool>) -> impl IntoView {
|
2023-11-07 11:02:48 +08:00
|
|
|
let loading_bar = use_loading_bar();
|
2023-11-19 14:06:23 +08:00
|
|
|
_ = is_routing.watch(move |is_routing| {
|
|
|
|
if *is_routing {
|
2023-11-07 11:02:48 +08:00
|
|
|
loading_bar.start();
|
|
|
|
} else {
|
|
|
|
loading_bar.finish();
|
|
|
|
}
|
|
|
|
});
|
2023-11-19 14:06:23 +08:00
|
|
|
|
2023-11-06 23:35:30 +08:00
|
|
|
view! {
|
2024-01-17 16:53:28 +08:00
|
|
|
<Routes>
|
2023-11-19 14:06:23 +08:00
|
|
|
<Route path="/" view=Home/>
|
2024-06-03 11:27:29 +08:00
|
|
|
<Route path="/guide" view=ComponentsPage>
|
2024-01-03 20:52:56 +08:00
|
|
|
<Route path="/installation" view=InstallationMdPage/>
|
|
|
|
<Route path="/usage" view=UsageMdPage/>
|
|
|
|
<Route path="/server-sider-rendering" view=ServerSiderRenderingMdPage/>
|
2024-03-14 20:16:09 +08:00
|
|
|
<Route path="/development/guide" view=DevelopmentGuideMdPage/>
|
|
|
|
<Route path="/development/components" view=DevelopmentComponentsMdPage/>
|
2023-11-19 14:06:23 +08:00
|
|
|
</Route>
|
|
|
|
<Route path="/components" view=ComponentsPage>
|
2024-06-26 22:32:13 +08:00
|
|
|
// <Route path="/tabbar" view=TabbarPage/>
|
|
|
|
// <Route path="/nav-bar" view=NavBarPage/>
|
|
|
|
// <Route path="/toast" view=ToastPage/>
|
2024-05-15 23:03:35 +08:00
|
|
|
<Route path="/accordion" view=AccordionMdPage/>
|
2024-04-19 14:42:30 +08:00
|
|
|
<Route path="/anchor" view=AnchorMdPage/>
|
2024-01-03 20:52:56 +08:00
|
|
|
<Route path="/auto-complete" view=AutoCompleteMdPage/>
|
|
|
|
<Route path="/avatar" view=AvatarMdPage/>
|
2024-04-16 23:00:01 +08:00
|
|
|
<Route path="/back-top" view=BackTopMdPage/>
|
2024-01-03 20:52:56 +08:00
|
|
|
<Route path="/badge" view=BadgeMdPage/>
|
|
|
|
<Route path="/breadcrumb" view=BreadcrumbMdPage/>
|
|
|
|
<Route path="/button" view=ButtonMdPage/>
|
|
|
|
<Route path="/calendar" view=CalendarMdPage/>
|
|
|
|
<Route path="/card" view=CardMdPage/>
|
|
|
|
<Route path="/checkbox" view=CheckboxMdPage/>
|
|
|
|
<Route path="/color-picker" view=ColorPickerMdPage/>
|
2024-06-27 14:51:36 +08:00
|
|
|
<Route path="/combobox" view=ComboboxMdPage/>
|
2024-05-24 10:05:54 +08:00
|
|
|
<Route path="/config-provider" view=ConfigProviderMdPage/>
|
2024-01-03 20:52:56 +08:00
|
|
|
<Route path="/date-picker" view=DatePickerMdPage/>
|
2024-06-28 15:54:20 +08:00
|
|
|
<Route path="/dialog" view=DialogMdPage/>
|
2024-01-03 20:52:56 +08:00
|
|
|
<Route path="/divider" view=DividerMdPage/>
|
2024-01-07 19:20:08 +08:00
|
|
|
<Route path="/drawer" view=DrawerMdPage/>
|
2024-01-03 20:52:56 +08:00
|
|
|
<Route path="/grid" view=GridMdPage/>
|
|
|
|
<Route path="/icon" view=IconMdPage/>
|
|
|
|
<Route path="/image" view=ImageMdPage/>
|
2024-01-02 21:08:21 +08:00
|
|
|
<Route path="/input" view=InputMdPage/>
|
|
|
|
<Route path="/layout" view=LayoutMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/loading-bar" view=LoadingBarMdPage/>
|
2024-06-27 22:28:10 +08:00
|
|
|
// <Route path="/message" view=MessageMdPage/>
|
|
|
|
<Route path="/message-bar" view=MessageBarMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/popover" view=PopoverMdPage/>
|
2024-06-28 10:48:40 +08:00
|
|
|
<Route path="/progress-bar" view=ProgressBarMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/radio" view=RadioMdPage/>
|
2024-04-05 17:04:50 +08:00
|
|
|
<Route path="/scrollbar" view=ScrollbarMdPage/>
|
2024-06-27 20:28:55 +08:00
|
|
|
// <Route path="/select" view=SelectMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/skeleton" view=SkeletonMdPage/>
|
|
|
|
<Route path="/slider" view=SliderMdPage/>
|
|
|
|
<Route path="/space" view=SpaceMdPage/>
|
2024-05-22 17:28:20 +08:00
|
|
|
<Route path="/spin-button" view=SpinButtonMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/spinner" view=SpinnerMdPage/>
|
|
|
|
<Route path="/switch" view=SwitchMdPage/>
|
2024-06-05 10:04:34 +08:00
|
|
|
<Route path="/tab-list" view=TabListMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/table" view=TableMdPage/>
|
|
|
|
<Route path="/tag" view=TagMdPage/>
|
2024-06-03 16:31:32 +08:00
|
|
|
<Route path="/text" view=TextMdPage/>
|
2024-06-23 23:33:09 +08:00
|
|
|
<Route path="/textarea" view=TextareaMdPage/>
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/time-picker" view=TimePickerMdPage/>
|
2024-07-02 17:20:58 +08:00
|
|
|
<Route path="/toast" view=ToastMdPage />
|
2023-12-31 23:33:05 +08:00
|
|
|
<Route path="/upload" view=UploadMdPage/>
|
2023-11-19 14:06:23 +08:00
|
|
|
</Route>
|
2024-06-26 22:32:13 +08:00
|
|
|
// <Route path="/mobile/tabbar" view=TabbarDemoPage/>
|
|
|
|
// <Route path="/mobile/nav-bar" view=NavBarDemoPage/>
|
|
|
|
// <Route path="/mobile/toast" view=ToastDemoPage/>
|
2023-11-19 14:06:23 +08:00
|
|
|
</Routes>
|
2023-11-06 23:35:30 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-10-24 21:49:36 +08:00
|
|
|
#[component]
|
2023-11-19 14:06:23 +08:00
|
|
|
fn TheProvider(children: Children) -> impl IntoView {
|
2024-07-02 07:18:40 +00:00
|
|
|
let (read_theme, _, _) = use_local_storage::<String, FromToStringCodec>("theme");
|
|
|
|
let theme = RwSignal::new(Theme::from(read_theme.get_untracked()));
|
2023-11-19 14:06:23 +08:00
|
|
|
|
2023-10-24 21:49:36 +08:00
|
|
|
view! {
|
2024-05-01 20:26:17 +08:00
|
|
|
<ConfigProvider theme>
|
2024-07-03 17:27:29 +08:00
|
|
|
<ToasterProvider>
|
|
|
|
<LoadingBarProvider>{children()}</LoadingBarProvider>
|
|
|
|
</ToasterProvider>
|
2024-05-01 20:26:17 +08:00
|
|
|
</ConfigProvider>
|
2023-10-24 21:49:36 +08:00
|
|
|
}
|
|
|
|
}
|