summary refs log tree commit diff
path: root/src/components/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/layout')
-rw-r--r--src/components/layout/layout.module.css34
-rw-r--r--src/components/layout/mod.rs26
2 files changed, 60 insertions, 0 deletions
diff --git a/src/components/layout/layout.module.css b/src/components/layout/layout.module.css
new file mode 100644
index 0000000..5b9ccc2
--- /dev/null
+++ b/src/components/layout/layout.module.css
@@ -0,0 +1,34 @@
+main.layout {
+  min-height: 100vh;
+  display: grid;
+  max-width: 1000px;
+  margin: 0 auto;
+  grid-template-columns: 200px 1fr;
+  grid-template-rows: 200px 1fr 100px auto;
+}
+
+.layout header {
+  display: flex;
+  grid-row: 1 / 2;
+  grid-column: 1 / 3;
+}
+
+.layout nav {
+  grid-row: 2 / 3;
+  grid-column: 1 / 2;
+}
+
+.layout article {
+  grid-row: 2 / 3;
+  grid-column: 2 / 3;
+}
+
+.layout footer {
+  grid-column: 1 / 3;
+  grid-row: 3 / 4;
+}
+
+.layout::after {
+  grid-column: 1 / 3;
+  grid-row: 4 / 5;
+}
diff --git a/src/components/layout/mod.rs b/src/components/layout/mod.rs
new file mode 100644
index 0000000..6ec37da
--- /dev/null
+++ b/src/components/layout/mod.rs
@@ -0,0 +1,26 @@
+use leptos::prelude::*;
+use leptos::component;
+use leptos_router::components::Outlet;
+
+stylance::import_crate_style!(styles, "src/components/layout/layout.module.css");
+
+#[component]
+pub fn Layout() -> impl IntoView {
+    view! {
+        <main class=styles::layout>
+            <header>
+                <h1>Site Title</h1>
+            </header>
+            <nav>
+                <p>Nav</p>
+            </nav>
+            <article>
+                <p>Article</p>
+                <Outlet/>
+            </article>
+            <footer>
+                <p>Footer</p>
+            </footer>
+        </main>
+    }
+}