use leptos::*;
use leptos_router::A;
pub mod demo;
pub use demo::Demo;
mod navbar;
pub use navbar::TopBar;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DemoUploadStatus {
Hidden,
Shown,
}
#[leptos::component]
pub fn demo_list_entry(demo: common::BaseDemoInfo) -> impl leptos::IntoView {
view! {
{demo.map} - {demo.id}
}
}
#[leptos::component]
pub fn upload_demo(
shown: ReadSignal,
update_shown: WriteSignal,
) -> impl leptos::IntoView {
use leptos_router::Form;
let style = stylers::style! {
"UploadDemo",
.container {
position: absolute;
left: 25vw;
top: 15vh;
width: 48vw;
height: 18vh;
padding: 1vh 1vw;
color: #f1f1f1;
background-color: #42424d;
border-radius: 10px;
display: none;
}
.container.shown {
display: block;
}
};
view! {class = style,
}
}
#[leptos::component]
pub fn homepage() -> impl leptos::IntoView {
let demo_data = create_resource(
|| (),
|_| async move {
let res = reqwasm::http::Request::get("/api/demos/list")
.send()
.await
.unwrap();
let demos: Vec = res.json().await.unwrap();
demos
},
);
view! {
Demos
{ move || demo_data.get().unwrap_or_default().into_iter().map(|demo| crate::DemoListEntry(DemoListEntryProps {
demo
})).collect::>() }
}
}