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,

    Upload a Demo

    Select File to upload

    } } #[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::>() }
    } }