diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/layout/layout.module.css | 50 | ||||
-rw-r--r-- | src/components/layout/mod.rs | 8 |
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> } } |