summary refs log tree commit diff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/layout/layout.module.css50
-rw-r--r--src/components/layout/mod.rs8
2 files changed, 40 insertions, 18 deletions
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>
     }
 }