added begin of new exercise page

This commit is contained in:
2025-07-08 20:27:47 +02:00
parent 72c3d91c7e
commit 24c784e434
9 changed files with 923 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
pub mod empty;
mod desktop;
mod empty;
pub use desktop::desktop;
pub use empty::empty;

46
src/layouts/desktop.rs Normal file
View File

@@ -0,0 +1,46 @@
use maud::{Markup, html};
use super::empty;
pub fn desktop_minimal(content: Markup, name: &str) -> Markup {
let content = html! {
div class="w-full h-screen flex" {
div class="w-56" {
(sidebar())
}
div class="w-full" {
(content)
}
}
};
empty(content, name)
}
pub fn desktop(content: Markup, name: &str) -> Markup {
let content = html! {
div class="p-10" {
(content)
}
};
desktop_minimal(content, name)
}
fn sidebar() -> Markup {
html! {
ul class="menu bg-base-200 rounded-box w-full h-full" {
li {
a href="/" {
"Overview"
}
a href="/workouts" {
"Workouts"
}
a href="/exercises" {
"Exercises"
}
}
}
}
}

View File

@@ -11,7 +11,7 @@ pub fn empty(content: Markup, name: &str) -> Markup {
(name) " - Timo's Workouts"
}
}
body {
body hx-boost="true" {
(content)
}
}

View File

@@ -1,7 +1,10 @@
use axum::Router;
mod exercises;
mod index;
pub fn routes() -> Router {
Router::new().merge(index::routes())
Router::new()
.merge(index::routes())
.nest("/exercises", exercises::routes())
}

20
src/pages/exercises.rs Normal file
View File

@@ -0,0 +1,20 @@
use crate::layouts;
use axum::{Router, routing::get};
use maud::{Markup, html};
mod new;
pub fn routes() -> Router {
Router::new()
.route("/", get(page))
.nest("/new", new::routes())
}
async fn page() -> Markup {
let content = html! {
h1 { "Exercises" }
a href="/exercises/new" { "new exercise +" }
};
layouts::desktop(content, "Exercises")
}

View File

@@ -0,0 +1,55 @@
use crate::layouts;
use axum::{Router, routing::get};
use maud::{Markup, html};
pub fn routes() -> Router {
Router::new().route("/", get(page))
}
async fn page() -> Markup {
let content = html! {
h1 class="mb-5" { "New Exercise" }
forum class="space-y-1" {
fieldset class="fieldset" {
legend class="fieldset-legend" { "Name" }
input class="input" {}
}
fieldset class="fieldset" {
legend class="fieldset-legend" { "Description" }
textarea class="textarea" {}
}
fieldset class="fieldset" {
legend class="fieldset-legend" { "Muscle Group" }
label class="label" {
input type="checkbox" checked="checked" class="checkbox" {}
"Chest"
}
label class="label" {
input type="checkbox" checked="checked" class="checkbox" {}
"Body"
}
}
fieldset class="fieldset" {
legend class="fieldset-legend" { "Equipment" }
label class="label" {
input type="checkbox" checked="checked" class="checkbox" {}
"Weigted plates"
}
label class="label" {
input type="checkbox" checked="checked" class="checkbox" {}
"Jump Rope"
}
}
input type="submit" class="btn" value="save" { }
}
};
layouts::desktop(content, "New Exercise")
}

View File

@@ -9,5 +9,5 @@ pub fn routes() -> Router {
async fn page() -> Markup {
let content = html! {};
layouts::empty(content, "Login")
layouts::desktop(content, "Home")
}