diff --git a/smart-house-web/frontend/Cargo.toml b/smart-house-web/frontend/Cargo.toml index 91f1117..fc2f171 100644 --- a/smart-house-web/frontend/Cargo.toml +++ b/smart-house-web/frontend/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -dioxus = { version = "0.7", features = [] } +dioxus = { version = "0.7", features = ["fullstack", "router"] } reqwest = { version = "0.13", features = ["json"] } serde = { version = "1.0", features = ["derive"] } @@ -13,3 +13,4 @@ default = ["web"] web = ["dioxus/web"] desktop = ["dioxus/desktop"] mobile = ["dioxus/mobile"] +server = ["dioxus/server"] diff --git a/smart-house-web/frontend/src/backend.rs b/smart-house-web/frontend/src/backend.rs new file mode 100644 index 0000000..e69de29 diff --git a/smart-house-web/frontend/src/components/favorites.rs b/smart-house-web/frontend/src/components/favorites.rs new file mode 100644 index 0000000..60bd50b --- /dev/null +++ b/smart-house-web/frontend/src/components/favorites.rs @@ -0,0 +1,6 @@ +use dioxus::prelude::*; + +#[component] +pub fn Favorites() -> Element { + rsx! { "favorites!" } +} diff --git a/smart-house-web/frontend/src/components/mod.rs b/smart-house-web/frontend/src/components/mod.rs new file mode 100644 index 0000000..a3f4b20 --- /dev/null +++ b/smart-house-web/frontend/src/components/mod.rs @@ -0,0 +1,7 @@ +mod favorites; +mod nav; +mod view; + +pub use favorites::*; +pub use nav::*; +pub use view::*; diff --git a/smart-house-web/frontend/src/components/nav.rs b/smart-house-web/frontend/src/components/nav.rs new file mode 100644 index 0000000..5ed7855 --- /dev/null +++ b/smart-house-web/frontend/src/components/nav.rs @@ -0,0 +1,15 @@ +use crate::Route; +use dioxus::prelude::*; + +#[component] +pub fn NavBar() -> Element { + rsx! { + div { id: "title", + Link { to: Route::DogView, + h1 { "🌭 HotDog! " } + } + Link { to: Route::Favorites, id: "heart", "♥️" } + } + Outlet:: {} + } +} diff --git a/smart-house-web/frontend/src/components/view.rs b/smart-house-web/frontend/src/components/view.rs new file mode 100644 index 0000000..e69de29 diff --git a/smart-house-web/frontend/src/main.rs b/smart-house-web/frontend/src/main.rs index 23107f6..7f853bf 100644 --- a/smart-house-web/frontend/src/main.rs +++ b/smart-house-web/frontend/src/main.rs @@ -1,8 +1,13 @@ use dioxus::prelude::*; +use crate::components::{Favorites, NavBar}; + const FAVICON: Asset = asset!("/assets/favicon.ico"); const MAIN_CSS: Asset = asset!("/assets/main.css"); +mod backend; +mod components; + fn main() { dioxus::launch(App); } @@ -16,8 +21,7 @@ fn App() -> Element { rsx! { document::Link { rel: "icon", href: FAVICON } document::Stylesheet { href: MAIN_CSS } - Title { } - DogView { } + Router:: { } } } @@ -58,3 +62,13 @@ fn DogView() -> Element { } } } + +#[derive(Routable, Clone, PartialEq)] +enum Route { + #[layout(NavBar)] + #[route("/")] + DogView, + + #[route("/favorites")] + Favorites, +}