diff options
author | Ashelyn Rose <git@ashen.earth> | 2025-03-22 16:24:41 -0600 |
---|---|---|
committer | Ashelyn Rose <git@ashen.earth> | 2025-03-22 16:24:41 -0600 |
commit | 2bf70606fc62c989973f84f2961df2d42d7f9c04 (patch) | |
tree | 8758d4ec6b9688b1fb150a05b95ff7f3932d3c53 | |
parent | 63e2395caf4ae93ebde96d97e12fc946af1e9ac9 (diff) |
Better layout styling
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Cargo.toml | 9 | ||||
-rwxr-xr-x | develop-watch.sh | 2 | ||||
-rw-r--r-- | global.scss | 13 | ||||
-rw-r--r-- | src/components/layout/layout.module.css | 50 | ||||
-rw-r--r-- | src/components/layout/mod.rs | 8 |
6 files changed, 60 insertions, 24 deletions
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! { - <main class=styles::layout> + <div class=styles::layout> <header> <h1>Site Title</h1> </header> <nav> <p>Nav</p> </nav> - <article> + <main> <p>Article</p> <Outlet/> - </article> + </main> <footer> <p>Footer</p> </footer> - </main> + </div> } } |