Homepage setup for schleppe lab blog

This commit is contained in:
2023-05-19 18:08:45 +02:00
commit 445e0eb768
50 changed files with 1756 additions and 0 deletions

274
_sass/_base.scss Normal file
View File

@@ -0,0 +1,274 @@
/**
* Reset some basic elements
*/
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
hr,
dl,
dd,
ol,
ul,
figure {
margin: 0;
padding: 0;
}
* {
box-sizing: border-box;
}
/**
* Basic styling
*/
body {
font: $base-font-weight #{$base-font-size}/#{$base-line-height}
$base-font-family;
color: $text-color;
background-color: $background-color;
-webkit-text-size-adjust: 100%;
-webkit-font-feature-settings: "kern" 1;
-moz-font-feature-settings: "kern" 1;
-o-font-feature-settings: "kern" 1;
font-feature-settings: "kern" 1;
font-kerning: normal;
}
/**
* Set `margin-bottom` to maintain vertical rhythm
*/
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
ul,
ol,
dl,
figure,
%vertical-rhythm {
margin-bottom: calc(var(--spacing-unit) / 2);
}
/**
* `main` element
*/
main {
display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */
}
/**
* Images
*/
img {
max-width: 100%;
vertical-align: middle;
}
/**
* Figures
*/
figure > img {
display: block;
}
figcaption {
font-size: $small-font-size;
}
/**
* Lists
*/
ul,
ol {
margin-left: var(--spacing-unit);
}
li {
> ul,
> ol {
margin-bottom: 0;
}
}
/**
* Headings
*/
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: $base-font-weight;
font-weight: bold;
}
/**
* Links
*/
a {
color: $brand-color;
text-decoration: none;
&:hover {
text-decoration: underline;
}
.social-media-list &:hover {
text-decoration: none;
.username {
text-decoration: underline;
}
}
}
/**
* Blockquotes
*/
blockquote {
color: $grey-color;
border-left: 4px solid $grey-color-light;
padding-left: calc(var(--spacing-unit) / 2);
@include relative-font-size(1.125);
letter-spacing: -1px;
font-style: italic;
> :last-child {
margin-bottom: 0;
}
}
/**
* Code formatting
*/
pre,
code {
font-size: 0.9375em;
border: 1px solid hsla(0, 0%, 100%, 0.1);
padding: 3em;
// background-color: var(--background-color);
}
code {
padding: 1px 5px;
background-color: rgba(255, 168, 106, 0.2);
color: var(--brand-color);
margin: 0 2px;
padding: 1px 6px;
border: none;
}
pre {
padding: 8px 12px;
padding: 1.25em;
overflow-x: auto;
> code {
background-color: unset;
border: 0;
padding-right: 0;
padding-left: 0;
}
}
.highlight {
position: relative;
}
.highlight > button {
all: unset;
opacity: 0;
position: absolute;
top: 1rem;
right: 1rem;
z-index: 100;
cursor: pointer;
background: hsla(0, 0%, 87.8%, 0.2) !important;
border-radius: 0 !important;
box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2) !important;
color: #bbb !important;
font-size: 0.8em !important;
margin: 6px !important;
padding: 10px !important;
transition: opacity 0.5s ease;
}
.highlight:hover > button {
opacity: 1;
}
.highlight > button:active,
.highlight > button:focus {
opacity: 1;
}
/**
* Clearfix
*/
%clearfix:after {
content: "";
display: table;
clear: both;
}
/**
* Icons
*/
.svg-icon {
width: 21px;
height: 16px;
display: inline-block;
fill: #{$grey-color};
padding-right: 5px;
vertical-align: middle;
}
.social-media-list {
li + li {
padding-top: 5px;
}
}
/**
* Tables
*/
table {
margin-bottom: var(--spacing-unit);
width: 100%;
text-align: $table-text-align;
color: lighten($text-color, 18%);
border-collapse: collapse;
border: 1px solid $grey-color-light;
tr {
&:nth-child(even) {
background-color: lighten($grey-color-light, 6%);
}
}
th,
td {
padding: calc(var(--spacing-unit) / 3) calc(var(--spacing-unit) / 2);
}
th {
background-color: lighten($grey-color-light, 3%);
border: 1px solid darken($grey-color-light, 4%);
border-bottom-color: darken($grey-color-light, 12%);
}
td {
border: 1px solid $grey-color-light;
}
}

98
_sass/_header.scss Normal file
View File

@@ -0,0 +1,98 @@
/**
* Site header
*/
.site-header {
border-bottom: 3px dashed $grey-color-light;
border-bottom: 3px dashed rgba(254, 168, 106, 0.6);
min-height: calc(var(--spacing-unit) * 1.865);
// Positioning context for the mobile navigation icon
position: relative;
}
.site-title {
@include relative-font-size(1.625);
font-weight: 300;
line-height: $base-line-height * $base-font-size * 2.25;
letter-spacing: -1px;
margin-bottom: 0;
float: left;
}
.site-nav {
float: right;
line-height: $base-line-height * $base-font-size * 2.25;
.nav-trigger {
display: none;
}
.menu-icon {
display: none;
}
.page-link {
color: $text-color;
line-height: $base-line-height;
// Gaps between nav items, but not on the last one
&:not(:last-child) {
margin-right: 20px;
}
}
@include media-query($on-palm) {
position: absolute;
top: 9px;
right: calc(var(--spacing-unit) / 2);
background-color: $background-color;
border: 1px solid $grey-color-light;
border-radius: 5px;
text-align: right;
label[for="nav-trigger"] {
display: block;
float: right;
width: 36px;
height: 36px;
z-index: 2;
cursor: pointer;
}
.menu-icon {
display: block;
float: right;
width: 36px;
height: 26px;
line-height: 0;
padding-top: 10px;
text-align: center;
> svg {
fill: $grey-color-dark;
}
}
input ~ .trigger {
clear: both;
display: none;
}
input:checked ~ .trigger {
display: block;
padding-bottom: 5px;
}
.page-link {
display: block;
padding: 5px 10px;
&:not(:last-child) {
margin-right: 0;
}
margin-left: 20px;
}
}
}

196
_sass/_layout.scss Normal file
View File

@@ -0,0 +1,196 @@
/**
* Site footer
*/
.site-footer {
border-top: 1px solid $grey-color-light;
padding: var(--spacing-unit) 0;
}
.footer-heading {
@include relative-font-size(1.125);
margin-bottom: calc(var(--spacing-unit) / 2);
}
.contact-list,
.social-media-list {
list-style: none;
margin-left: 0;
}
.footer-col-wrapper {
@include relative-font-size(0.9375);
color: $grey-color;
@extend %clearfix;
display: flex;
justify-content: space-between;
@include media-query($on-palm) {
flex-direction: column;
}
}
.container {
display: flex;
flex-direction: column;
width: 100%;
max-width: 864px;
min-height: 100vh;
margin: 0 auto;
padding: var(--spacing-unit);
@include media-query($on-palm) {
padding: 0.7rem;
}
}
.home .intro {
margin-bottom: 5em;
}
/**
* Page content
*/
.page-heading {
margin-top: 1.75em;
@include relative-font-size(2);
}
.post-list-heading {
@include relative-font-size(1.75);
}
.post-list {
margin-left: 0;
list-style: none;
> li {
border-bottom: 1px solid var(--border-color);
margin-bottom: var(--spacing-unit);
padding-bottom: var(--spacing-unit);
}
h3,
h3 > a {
font-size: 1.4em;
margin: 0;
}
}
.post-tags,
.post-tags a {
color: $grey-color;
}
.post-meta {
font-size: $small-font-size;
opacity: 0.8;
color: var(--brand-color);
}
.post-link {
display: block;
font-size: 1.5em;
}
.excerpt {
margin-top: 2em;
}
.read-more {
background: none;
box-shadow: none;
display: inline-flex;
margin: 0;
max-width: 100%;
padding: 0;
opacity: 0.8;
}
figure.fullwidth {
position: relative;
width: 55vw;
left: 50%;
transform: translateX(-50%);
@include media-query($on-laptop) {
width: 95vw;
}
}
/**
* Posts
*/
.post-header {
margin-bottom: var(--spacing-unit);
}
.post-title {
--border: 3px dotted var(--brand-color);
font-size: 2em;
color: var(--brand-color);
border-bottom: var(--border);
letter-spacing: -1px;
margin: 4rem 0 1rem;
padding-bottom: 1rem;
position: relative;
@include media-query($on-laptop) {
@include relative-font-size(2.25);
}
&::after {
border-bottom: var(--border);
bottom: 2px;
content: "";
display: block;
position: absolute;
width: 100%;
}
}
.post-content {
margin-bottom: var(--spacing-unit);
h1,
h2,
h3,
h4 {
a {
opacity: 0;
transition: opacity 0.15s ease;
}
&:hover > a {
opacity: 1;
}
a:hover {
text-decoration: none;
}
}
h2 {
@include relative-font-size(2);
@include media-query($on-laptop) {
@include relative-font-size(1.75);
}
}
h3 {
@include relative-font-size(1.625);
@include media-query($on-laptop) {
@include relative-font-size(1.375);
}
}
h4 {
@include relative-font-size(1.25);
@include media-query($on-laptop) {
@include relative-font-size(1.125);
}
}
}

View File

@@ -0,0 +1,66 @@
/**
* Syntax highlighting styles
*/
.highlight {
@extend %vertical-rhythm;
.c { color: #998; font-style: italic } // Comment
.err { color: #a61717; background-color: #e3d2d2 } // Error
.k { font-weight: bold } // Keyword
.o { font-weight: bold } // Operator
.cm { color: #998; font-style: italic } // Comment.Multiline
.cp { color: #999; font-weight: bold } // Comment.Preproc
.c1 { color: #998; font-style: italic } // Comment.Single
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
.gd { color: #000; background-color: #fdd } // Generic.Deleted
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
.ge { font-style: italic } // Generic.Emph
.gr { color: #a00 } // Generic.Error
.gh { color: #999 } // Generic.Heading
.gi { color: #000; background-color: #dfd } // Generic.Inserted
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
.go { color: #888 } // Generic.Output
.gp { color: #555 } // Generic.Prompt
.gs { font-weight: bold } // Generic.Strong
.gu { color: #aaa } // Generic.Subheading
.gt { color: #a00 } // Generic.Traceback
.kc { font-weight: bold } // Keyword.Constant
.kd { font-weight: bold } // Keyword.Declaration
.kp { font-weight: bold } // Keyword.Pseudo
.kr { font-weight: bold } // Keyword.Reserved
.kt { color: #458; font-weight: bold } // Keyword.Type
.m { color: #099 } // Literal.Number
.s { color: #d14 } // Literal.String
.na { color: #008080 } // Name.Attribute
.nb { color: #0086B3 } // Name.Builtin
.nc { color: #458; font-weight: bold } // Name.Class
.no { color: #008080 } // Name.Constant
.ni { color: #800080 } // Name.Entity
.ne { color: #900; font-weight: bold } // Name.Exception
.nf { color: #900; font-weight: bold } // Name.Function
.nn { color: #555 } // Name.Namespace
.nt { color: #000080 } // Name.Tag
.nv { color: #008080 } // Name.Variable
.ow { font-weight: bold } // Operator.Word
.w { color: #bbb } // Text.Whitespace
.mf { color: #099 } // Literal.Number.Float
.mh { color: #099 } // Literal.Number.Hex
.mi { color: #099 } // Literal.Number.Integer
.mo { color: #099 } // Literal.Number.Oct
.sb { color: #d14 } // Literal.String.Backtick
.sc { color: #d14 } // Literal.String.Char
.sd { color: #d14 } // Literal.String.Doc
.s2 { color: #d14 } // Literal.String.Double
.se { color: #d14 } // Literal.String.Escape
.sh { color: #d14 } // Literal.String.Heredoc
.si { color: #d14 } // Literal.String.Interpol
.sx { color: #d14 } // Literal.String.Other
.sr { color: #009926 } // Literal.String.Regex
.s1 { color: #d14 } // Literal.String.Single
.ss { color: #990073 } // Literal.String.Symbol
.bp { color: #999 } // Name.Builtin.Pseudo
.vc { color: #008080 } // Name.Variable.Class
.vg { color: #008080 } // Name.Variable.Global
.vi { color: #008080 } // Name.Variable.Instance
.il { color: #099 } // Literal.Number.Integer.Long
}

16
_sass/_tags.scss Normal file
View File

@@ -0,0 +1,16 @@
.tags-page {
h1 {
color: var(--brand-color);
}
ul {
margin-left: 1.25em;
color: var(--brand-color);
list-style-type: square;
li a {
color: white;
}
}
}

77
_sass/main.scss Normal file
View File

@@ -0,0 +1,77 @@
@charset "utf-8";
// Define defaults for each variable.
@font-face {
font-family: "Fira Code";
src: url("/assets/fonts/FiraCode-Regular.ttf");
}
@font-face {
font-family: "Fira Code";
font-weight: bold;
src: url("/assets/fonts/FiraCode-Bold.ttf");
}
:root {
--font-family: "Fira Code", Monaco, Consolas, "Ubuntu Mono", monospace;
--font-size: 16px;
--font-weight: 400;
--font-size-small: 14px;
--line-height: 1.5;
--spacing-unit: 2.5em;
--text-color: white;
--background-color: #222129;
--brand-color: #fea86a;
--border-color: hsla(0, 0%, 100%, 0.1);
}
$base-font-family: "Fira Code", Monaco, Consolas, "Ubuntu Mono", monospace !default;
$base-font-size: 16px !default;
$base-font-weight: 400 !default;
$small-font-size: $base-font-size * 0.875 !default;
$base-line-height: 1.5 !default;
$spacing-unit: 2.5em !default;
$text-color: white !default;
$background-color: #222129 !default;
$brand-color: #fea86a !default;
$grey-color: #828282 !default;
$grey-color-light: lighten($grey-color, 40%) !default;
$grey-color-dark: darken($grey-color, 25%) !default;
$table-text-align: left !default;
// Width of the content area
$content-width: 800px !default;
$on-palm: 600px !default;
$on-laptop: 800px !default;
// Use media queries like this:
// @include media-query($on-palm) {
// .wrapper {
// padding-right: $spacing-unit / 2;
// padding-left: $spacing-unit / 2;
// }
// }
@mixin media-query($device) {
@media screen and (max-width: $device) {
@content;
}
}
@mixin relative-font-size($ratio) {
font-size: $base-font-size * $ratio;
}
// Import partials.
// @import "base", "layout", "tags", "syntax-highlighting";
@import "base";
@import "layout";
@import "tags";
@import "syntax-highlighting.scss";
@import "header.scss";