summary refs log tree commit diff
diff options
context:
space:
mode:
authorAshelyn Rose <git@ashen.earth>2025-03-22 16:24:41 -0600
committerAshelyn Rose <git@ashen.earth>2025-03-22 16:24:41 -0600
commit2bf70606fc62c989973f84f2961df2d42d7f9c04 (patch)
tree8758d4ec6b9688b1fb150a05b95ff7f3932d3c53
parent63e2395caf4ae93ebde96d97e12fc946af1e9ac9 (diff)
Better layout styling
-rw-r--r--.gitignore2
-rw-r--r--Cargo.toml9
-rwxr-xr-xdevelop-watch.sh2
-rw-r--r--global.scss13
-rw-r--r--src/components/layout/layout.module.css50
-rw-r--r--src/components/layout/mod.rs8
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>
     }
 }