From 2bf70606fc62c989973f84f2961df2d42d7f9c04 Mon Sep 17 00:00:00 2001 From: Ashelyn Rose Date: Sat, 22 Mar 2025 16:24:41 -0600 Subject: Better layout styling --- .gitignore | 2 +- Cargo.toml | 9 +++--- develop-watch.sh | 2 +- global.scss | 13 +++++++++ src/components/layout/layout.module.css | 50 ++++++++++++++++++++++++--------- src/components/layout/mod.rs | 8 +++--- 6 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 global.scss diff --git a/.gitignore b/.gitignore index 17945a2..2ddc3a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /target -/style.css +/.generated-style.scss diff --git a/Cargo.toml b/Cargo.toml index f589bb8..1ffc006 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,8 +46,7 @@ output-name = "stormscribe" site-root = "target/stormscribe" site-pkg-dir = "pkg" assets-dir = "public" -style-file = "style.css" -# watch-additional-files = ["style.css"] +style-file = ".generated-style.scss" site-addr = "127.0.0.1:3000" reload-port = 3001 browserquery = "defaults" @@ -60,5 +59,7 @@ lib-default-features = false lib-profile-release = "wasm-release" [package.metadata.stylance] - - +output_file="./.generated-style.scss" +folders = ["./src/"] +extensions = [".module.css"] +scss_prelude = "@import './global.scss';" diff --git a/develop-watch.sh b/develop-watch.sh index 0b93216..bea5d6a 100755 --- a/develop-watch.sh +++ b/develop-watch.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash tmux \ new-session 'cargo leptos watch' \; \ - split-window -h 'stylance --watch --output-file ./style.css .' + split-window -h 'stylance --watch .' diff --git a/global.scss b/global.scss new file mode 100644 index 0000000..f8ef821 --- /dev/null +++ b/global.scss @@ -0,0 +1,13 @@ +html { + margin: 0; + padding: 0; + background: linear-gradient(to bottom, #444, #222); + min-height: 100vh; +} + +body { + min-height: 100vh; + margin: 0 auto; + box-sizing: border-box; +} + diff --git a/src/components/layout/layout.module.css b/src/components/layout/layout.module.css index 5b9ccc2..abcf876 100644 --- a/src/components/layout/layout.module.css +++ b/src/components/layout/layout.module.css @@ -1,16 +1,36 @@ -main.layout { - min-height: 100vh; - display: grid; - max-width: 1000px; +.layout { + --max-content-width: 800px; + --min-content-width: 550px; + --nav-width: 200px; + --content-margin: 16px; + --container-padding: 12px; + + --grid-gutter: calc(var(--content-margin) + var(--container-padding)); + --grid-min-center-width: calc(var(--min-content-width) + 2 * var(--grid-gutter)); + --grid-max-center-width: calc(var(--max-content-width) + 2 * var(--grid-gutter)); + + --grid-left: min(var(--nav-width), calc(.2 * 100vw)); + --grid-right: min(var(--nav-width), calc(100vw - 2 * var(--container-padding) - var(--nav-width) - var(--grid-min-center-width))); + + max-width: calc(2 * var(--nav-width) + var(--grid-max-center-width)); + width: calc(100vw - 2 * var(--container-padding)); margin: 0 auto; - grid-template-columns: 200px 1fr; - grid-template-rows: 200px 1fr 100px auto; + display: grid; + grid-template-columns: var(--grid-left) 1fr var(--grid-right); + grid-template-rows: repeat(3, auto); + column-gap: var(--grid-gutter); + row-gap: var(--grid-gutter); +} + +.layout > *:not(main) { + color: white; } .layout header { display: flex; grid-row: 1 / 2; - grid-column: 1 / 3; + grid-column: 2 / 3; + padding: var(--container-padding) 0; } .layout nav { @@ -18,17 +38,19 @@ main.layout { grid-column: 1 / 2; } -.layout article { +.layout main { grid-row: 2 / 3; grid-column: 2 / 3; + padding: var(--container-padding); + margin: 0 -16px; + background: white; + box-shadow: 0px 0px 8px #00000066; + border: solid 12px #ffffffcc; + background-clip: padding-box; } .layout footer { - grid-column: 1 / 3; + grid-column: 2 / 3; grid-row: 3 / 4; -} - -.layout::after { - grid-column: 1 / 3; - grid-row: 4 / 5; + padding: var(--container-padding) 0; } diff --git a/src/components/layout/mod.rs b/src/components/layout/mod.rs index 6ec37da..4b8061e 100644 --- a/src/components/layout/mod.rs +++ b/src/components/layout/mod.rs @@ -7,20 +7,20 @@ stylance::import_crate_style!(styles, "src/components/layout/layout.module.css") #[component] pub fn Layout() -> impl IntoView { view! { -
+

Site Title

-
+

Article

-
+
- + } } -- cgit 1.4.1