From 1f642839985f8002c441c95aafdede6421c4a312 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sun, 22 Jun 2025 14:10:14 +0300 Subject: [PATCH] refactor: change components structure --- app/Cargo.toml | 3 ++ app/src/components/app.rs | 30 ++++++++++++++++++ app/src/components/home_page.rs | 14 +++++++++ app/src/components/mod.rs | 4 +++ app/src/lib.rs | 56 ++++++--------------------------- 5 files changed, 61 insertions(+), 46 deletions(-) create mode 100644 app/src/components/app.rs create mode 100644 app/src/components/home_page.rs create mode 100644 app/src/components/mod.rs diff --git a/app/Cargo.toml b/app/Cargo.toml index ef9b84f..685299e 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -19,3 +19,6 @@ thiserror.workspace = true default = [] hydrate = ["leptos/hydrate"] ssr = ["leptos/ssr", "leptos_meta/ssr", "leptos_router/ssr", "dep:leptos_axum"] + +[package.metadata.rust-analyzer] +diagnostics.disabled = ["non_snake_case"] diff --git a/app/src/components/app.rs b/app/src/components/app.rs new file mode 100644 index 0000000..6c750cc --- /dev/null +++ b/app/src/components/app.rs @@ -0,0 +1,30 @@ +use leptos::prelude::*; +use leptos_meta::{Stylesheet, Title, provide_meta_context}; +use leptos_router::{ + StaticSegment, + components::{Route, Router, Routes}, +}; + +use crate::components::home_page::HomePage; + +#[component] +pub fn App() -> impl IntoView { + // Provides context that manages stylesheets, titles, meta tags, etc. + provide_meta_context(); + + view! { + + + // sets the document title + + + // content for this welcome page + <Router> + <main> + <Routes fallback=|| "Page not found.".into_view()> + <Route path=StaticSegment("") view=HomePage /> + </Routes> + </main> + </Router> + } +} diff --git a/app/src/components/home_page.rs b/app/src/components/home_page.rs new file mode 100644 index 0000000..140458b --- /dev/null +++ b/app/src/components/home_page.rs @@ -0,0 +1,14 @@ +use leptos::prelude::*; + +/// Renders the home page of your application. +#[component] +pub fn HomePage() -> impl IntoView { + // Creates a reactive value to update the button + let count = RwSignal::new(0); + let on_click = move |_| *count.write() += 1; + + view! { + <h1>"Welcome to Leptos!"</h1> + <button on:click=on_click>"Click Me: " {count}</button> + } +} diff --git a/app/src/components/mod.rs b/app/src/components/mod.rs new file mode 100644 index 0000000..a452869 --- /dev/null +++ b/app/src/components/mod.rs @@ -0,0 +1,4 @@ +pub mod app; +mod home_page; + +pub use app::App; diff --git a/app/src/lib.rs b/app/src/lib.rs index b52a06d..95bd4f2 100644 --- a/app/src/lib.rs +++ b/app/src/lib.rs @@ -1,59 +1,23 @@ +mod components; + +pub use components::App; use leptos::prelude::*; -use leptos_meta::{provide_meta_context, MetaTags, Stylesheet, Title}; -use leptos_router::{ - components::{Route, Router, Routes}, - StaticSegment, -}; +use leptos_meta::MetaTags; pub fn shell(options: LeptosOptions) -> impl IntoView { view! { <!DOCTYPE html> <html lang="en"> <head> - <meta charset="utf-8"/> - <meta name="viewport" content="width=device-width, initial-scale=1"/> - <AutoReload options=options.clone()/> - <HydrationScripts options/> - <MetaTags/> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <AutoReload options=options.clone() /> + <HydrationScripts options /> + <MetaTags /> </head> <body> - <App/> + <App /> </body> </html> } } - -#[component] -pub fn App() -> impl IntoView { - // Provides context that manages stylesheets, titles, meta tags, etc. - provide_meta_context(); - - view! { - <Stylesheet id="leptos" href="/pkg/start-axum-workspace.css"/> - - // sets the document title - <Title text="Welcome to Leptos"/> - - // content for this welcome page - <Router> - <main> - <Routes fallback=|| "Page not found.".into_view()> - <Route path=StaticSegment("") view=HomePage/> - </Routes> - </main> - </Router> - } -} - -/// Renders the home page of your application. -#[component] -fn HomePage() -> impl IntoView { - // Creates a reactive value to update the button - let count = RwSignal::new(0); - let on_click = move |_| *count.write() += 1; - - view! { - <h1>"Welcome to Leptos!"</h1> - <button on:click=on_click>"Click Me: " {count}</button> - } -}