2023-06-18 19:40:23 +08:00
|
|
|
use crate::components::SiteHeader;
|
2023-06-13 12:43:15 +08:00
|
|
|
use leptos::*;
|
|
|
|
use leptos_router::{use_location, use_navigate, Outlet};
|
|
|
|
use melt_ui::*;
|
|
|
|
|
|
|
|
#[component]
|
2023-08-29 09:11:22 +08:00
|
|
|
pub fn ComponentsPage() -> impl IntoView {
|
|
|
|
let navigate = use_navigate();
|
2023-10-11 21:12:45 +08:00
|
|
|
let selected = create_rw_signal({
|
|
|
|
let loaction = use_location();
|
|
|
|
let mut pathname = loaction.pathname.get_untracked();
|
2023-06-13 12:43:15 +08:00
|
|
|
|
2023-10-11 21:12:45 +08:00
|
|
|
if pathname.starts_with("/melt-ui/components/") {
|
|
|
|
pathname.drain(20..).collect()
|
|
|
|
} else {
|
|
|
|
String::new()
|
|
|
|
}
|
2023-06-13 12:43:15 +08:00
|
|
|
});
|
|
|
|
|
2023-08-29 09:11:22 +08:00
|
|
|
create_effect(move |value| {
|
2023-06-13 12:43:15 +08:00
|
|
|
let selected = selected.get();
|
|
|
|
if value.is_some() {
|
2023-08-29 09:11:22 +08:00
|
|
|
navigate(&format!("/components/{selected}"), Default::default());
|
2023-06-13 12:43:15 +08:00
|
|
|
}
|
|
|
|
selected
|
|
|
|
});
|
2023-08-29 09:11:22 +08:00
|
|
|
view! {
|
2023-06-18 19:40:23 +08:00
|
|
|
<Layout position=LayoutPosition::ABSOLUTE>
|
2023-10-08 09:28:13 +08:00
|
|
|
<SiteHeader/>
|
2023-06-18 19:40:23 +08:00
|
|
|
<Layout has_sider=true position=LayoutPosition::ABSOLUTE style="top: 54px;">
|
|
|
|
<LayoutSider>
|
2023-10-11 21:25:11 +08:00
|
|
|
<Menu value=selected>
|
2023-10-05 00:58:53 +08:00
|
|
|
<MenuGroup label="Common Components">
|
2023-10-08 09:28:13 +08:00
|
|
|
<MenuItem key="menu" label="Menu"/>
|
|
|
|
<MenuItem key="slider" label="Slider"/>
|
|
|
|
<MenuItem key="input" label="Input"/>
|
|
|
|
<MenuItem key="image" label="Image"/>
|
|
|
|
<MenuItem key="modal" label="Modal"/>
|
|
|
|
<MenuItem key="button" label="Button"/>
|
|
|
|
<MenuItem key="checkbox" label="Checkbox"/>
|
|
|
|
<MenuItem key="tabs" label="Tabs"/>
|
|
|
|
<MenuItem key="select" label="Select"/>
|
|
|
|
<MenuItem key="space" label="Space"/>
|
2023-10-08 11:18:17 +08:00
|
|
|
<MenuItem key="table" label="Table"/>
|
2023-10-08 22:45:29 +08:00
|
|
|
<MenuItem key="color-picker" label="Color Picker"/>
|
2023-10-05 00:58:53 +08:00
|
|
|
</MenuGroup>
|
|
|
|
<MenuGroup label="Mobile Components">
|
2023-10-08 09:28:13 +08:00
|
|
|
<MenuItem key="tabbar" label="Tabbar"/>
|
|
|
|
<MenuItem key="nav-bar" label="Nav Bar"/>
|
|
|
|
<MenuItem key="toast" label="Toast"/>
|
2023-10-05 00:58:53 +08:00
|
|
|
</MenuGroup>
|
2023-06-18 19:40:23 +08:00
|
|
|
</Menu>
|
|
|
|
</LayoutSider>
|
2023-10-11 13:37:39 +08:00
|
|
|
<Layout style="padding: 8px 12px 28px; overflow-y: auto;">
|
2023-10-08 09:28:13 +08:00
|
|
|
<Outlet/>
|
2023-06-18 19:40:23 +08:00
|
|
|
</Layout>
|
|
|
|
</Layout>
|
|
|
|
</Layout>
|
2023-06-13 12:43:15 +08:00
|
|
|
}
|
|
|
|
}
|