46 lines
1.1 KiB
Rust
46 lines
1.1 KiB
Rust
use crate::components::websocket::*;
|
|
use leptos::prelude::*;
|
|
use leptos_meta::*;
|
|
use leptos_router::{
|
|
components::{Route, Router, Routes},
|
|
StaticSegment,
|
|
};
|
|
use leptos_use::use_media_query;
|
|
use thaw::*;
|
|
|
|
// Modules
|
|
mod components;
|
|
mod pages;
|
|
|
|
// Top-Level pages
|
|
use crate::pages::home::Home;
|
|
|
|
/// An app router which renders the homepage and handles 404's
|
|
#[component]
|
|
pub fn App() -> impl IntoView {
|
|
let theme = RwSignal::new(Theme::light());
|
|
let prefers_dark = use_media_query("(prefers-color-scheme: dark)");
|
|
Effect::new(move |_| {
|
|
if prefers_dark() {
|
|
theme.set(Theme::dark());
|
|
} else {
|
|
theme.set(Theme::light());
|
|
}
|
|
});
|
|
|
|
provide_context(theme);
|
|
|
|
provide_meta_context();
|
|
view! {
|
|
<Websocket />
|
|
<ConfigProvider theme>
|
|
<main class="min-h-screen">
|
|
<Router>
|
|
<Routes fallback=|| "Not found.".into_view()>
|
|
<Route path=StaticSegment("") view=Home />
|
|
</Routes>
|
|
</Router>
|
|
</main>
|
|
</ConfigProvider>
|
|
}
|
|
}
|