thaw/gh-pages/src/pages/components.rs

66 lines
2.5 KiB
Rust
Raw Normal View History

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::*;
use regex::Regex;
#[component]
2023-08-29 09:11:22 +08:00
pub fn ComponentsPage() -> impl IntoView {
let loaction = use_location();
let navigate = use_navigate();
let selected = create_rw_signal(String::from(""));
create_effect(move |_| {
2023-06-13 12:43:15 +08:00
let pathname = loaction.pathname.get();
2023-06-18 22:13:32 +08:00
let re = Regex::new(r"^/melt-ui/components/(.+)$").unwrap();
2023-06-13 12:43:15 +08:00
let Some(caps) = re.captures(&pathname) else {
return;
};
let Some(path) = caps.get(1) else {
return;
};
let path = path.as_str().to_string();
selected.set(path);
});
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>
<Menu 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-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-09-17 22:19:54 +08:00
<Layout style="padding: 8px 12px 28px; overflow-y: scroll;">
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
}
}