first commit
This commit is contained in:
commit
d575f4b9da
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
.hugo_build.lock
|
||||
resources/_gen/**
|
6
archetypes/default.md
Normal file
6
archetypes/default.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
BIN
assets/images/test.png
Normal file
BIN
assets/images/test.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 258 KiB |
13
assets/scripts/main.js
Normal file
13
assets/scripts/main.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
Use a window's inner dimensions for viewport units.
|
||||
This fixes some mobile bugs
|
||||
*/
|
||||
var root = document.documentElement;
|
||||
let vh = window.innerHeight * 0.01;
|
||||
root.style.setProperty('--vh', `${vh}px`);
|
||||
// We listen to the resize event
|
||||
window.addEventListener('resize', () => {
|
||||
// We execute the same script as before
|
||||
let vh = window.innerHeight * 0.01;
|
||||
root.style.setProperty('--vh', `${vh}px`);
|
||||
});
|
55
assets/styles/common/base.scss
Normal file
55
assets/styles/common/base.scss
Normal file
|
@ -0,0 +1,55 @@
|
|||
$site-max-width: 100rem;
|
||||
|
||||
:root {
|
||||
--site-max-width: #{$site-max-width};
|
||||
--nav-height: 4rem;
|
||||
--header-height: 4.5rem;
|
||||
--footer-height: 3rem;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
scroll-behavior: smooth;
|
||||
background: var(--ui-background);
|
||||
color: var(--ui-text);
|
||||
}
|
||||
|
||||
/* Single column layout, where main content stretches to fill. */
|
||||
body {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
min-height: calc(var(--vh, 1vh) * 100);
|
||||
max-width: 100vw;
|
||||
margin: auto;
|
||||
}
|
||||
main {flex-grow: 1;}
|
||||
|
||||
/*
|
||||
Sections are primary block units, usually of type <section>.
|
||||
Containers are an immediate child <div>, purely for constraining width.
|
||||
*/
|
||||
.section {
|
||||
padding: 2em 0; /* we apply a vertical padding only to sections */
|
||||
}
|
||||
.container {
|
||||
width: 100%;
|
||||
max-width: var(--site-max-width);
|
||||
margin: 0 auto;
|
||||
padding: 0 1em; /* and we apply a horizontal padding only to containers */
|
||||
}
|
||||
|
||||
/* Ensure consistent colors for text selection */
|
||||
::selection {
|
||||
background: var(--primary-accent);
|
||||
color: var(--primary-accent-text);
|
||||
}
|
||||
/* */
|
||||
.heading {
|
||||
font-size: 1.8em;
|
||||
font-weight: 700;
|
||||
line-height: 2em;
|
||||
}
|
||||
.subheading {
|
||||
font-size: 1.4em;
|
||||
margin-bottom: 1em;
|
||||
}
|
13
assets/styles/common/colors.scss
Normal file
13
assets/styles/common/colors.scss
Normal file
|
@ -0,0 +1,13 @@
|
|||
:root {
|
||||
--link-color: #4ca6f6;
|
||||
--link-visited: #d76ff3;
|
||||
--primary-accent: #deceed;
|
||||
--primary-accent-transparent: #DECEED3D;
|
||||
--primary-accent-text: #6E23B8;
|
||||
--ui-background: #472C1B;
|
||||
--ui-text: #F4EABD;
|
||||
--ui-text-muted: #9b9371;
|
||||
--ui-text-bold: #F4EABD;
|
||||
--ui-overlay: #deceed;
|
||||
--ui-overlay-text: #141112;
|
||||
}
|
187
assets/styles/common/content.scss
Normal file
187
assets/styles/common/content.scss
Normal file
|
@ -0,0 +1,187 @@
|
|||
.content {
|
||||
/* text */
|
||||
h1 {font-size: 1.8em}
|
||||
h2 {font-size: 1.6em}
|
||||
h3 {font-size: 1.423em}
|
||||
h4 {font-size: 1.265em}
|
||||
h5 {font-size: 1.125em}
|
||||
h6 {font-size: 1em}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
line-height: 1.2;
|
||||
margin-bottom: 1rem;
|
||||
margin-top: 2rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
p {
|
||||
line-height: 1.5;
|
||||
margin-bottom: 1em;
|
||||
max-width: 80ch;
|
||||
}
|
||||
a {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
/* semantics */
|
||||
em {font-style: italic}
|
||||
strong {font-weight: 700}
|
||||
/* text formatting */
|
||||
--script-size: 0.65em;
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: var(--script-size);
|
||||
top: -1em;
|
||||
}
|
||||
sub {
|
||||
position: relative;
|
||||
font-size: var(--script-size);
|
||||
}
|
||||
@supports #{'selector\(:has(kbd))'} {
|
||||
/* style individual keys only (for the innermost <kbd> element) */
|
||||
kbd kbd,
|
||||
kbd:not(:has(kbd)) {
|
||||
font-family: monospace;
|
||||
padding: 0.25em;
|
||||
background: var(--ui-overlay);
|
||||
color: var(--ui-overlay-text);
|
||||
}
|
||||
}
|
||||
@supports not #{'selector\(:has(kbd))'} {
|
||||
/* style the entire key sequence */
|
||||
kbd {
|
||||
font-family: monospace;
|
||||
padding: 0.25em;
|
||||
background: var(--ui-overlay);
|
||||
color: var(--ui-overlay-text);
|
||||
}
|
||||
/* and prevent double-styling for nested keys */
|
||||
kbd kbd {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
mark {
|
||||
background: var(--primary-accent-transparent);
|
||||
color: var(--ui-text);
|
||||
--pad-x-highlight: 0.125em;
|
||||
padding-left: var(--pad-x-highlight);
|
||||
padding-right: var(--pad-x-highlight);
|
||||
}
|
||||
abbr[title]:after {
|
||||
content: '?';
|
||||
font-size: var(--script-size);
|
||||
color: var(--ui-text-muted);
|
||||
}
|
||||
/* lists */
|
||||
ul {list-style: disc; margin: 1em 0;}
|
||||
li {margin-bottom: 1em; line-height: 1.4; margin-left: 1em;}
|
||||
ol {list-style: decimal; margin: 1em 0;}
|
||||
dl {margin: 1em 0; line-height: 1.4;}
|
||||
dt {font-weight: 700;}
|
||||
dd {margin-left: 1em;}
|
||||
/* block elements */
|
||||
img {
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
font-size: 1em;
|
||||
margin: 1em 0;
|
||||
border-left: 0.25rem solid var(--ui-text-bold);
|
||||
padding-left: 0.75em;
|
||||
line-height: 1.4;
|
||||
}
|
||||
pre {
|
||||
font-family: monospace;
|
||||
background: var(--ui-overlay);
|
||||
color: var(--ui-overlay-text);
|
||||
padding: 1em;
|
||||
line-height: 2;
|
||||
overflow-x: auto;
|
||||
white-space: pre;
|
||||
display: grid;
|
||||
tab-size: 3;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
code {
|
||||
font-family: monospace;
|
||||
background: var(--ui-overlay);
|
||||
color: var(--ui-overlay-text);
|
||||
padding: 0.25rem;
|
||||
}
|
||||
:not(.highlight) > pre {
|
||||
line-height: 1.5;
|
||||
background: var(--ui-overlay);
|
||||
padding: 1em;
|
||||
}
|
||||
pre code {
|
||||
background: inherit;
|
||||
padding: 0;
|
||||
}
|
||||
pre code > span {
|
||||
padding: 0 1em;
|
||||
}
|
||||
.highlight pre {
|
||||
padding: 1em 0;
|
||||
}
|
||||
/* figures */
|
||||
figure {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
figure img {
|
||||
width: 100%;
|
||||
margin-bottom: -0.125em;
|
||||
}
|
||||
figcaption {
|
||||
background: #212121;
|
||||
color: white;
|
||||
font-style: italic;
|
||||
padding: 1em;
|
||||
font-size: 0.8em;
|
||||
line-height: 1.2;
|
||||
}
|
||||
/* tables */
|
||||
table {text-align: center;}
|
||||
thead {
|
||||
font-weight: 700;
|
||||
background: var(--ui-overlay);
|
||||
color: var(--ui-overlay-text);
|
||||
}
|
||||
th, td {
|
||||
border: 1px solid var(--ui-text);
|
||||
padding: 0.5em;
|
||||
}
|
||||
/* hugo-specific citation footnote */
|
||||
cite sup {
|
||||
position: inherit;
|
||||
font-size: inherit;
|
||||
a {
|
||||
padding: 0.25em;
|
||||
}
|
||||
&:before {
|
||||
content: ' [';
|
||||
}
|
||||
&:after {
|
||||
content: ']';
|
||||
}
|
||||
}
|
||||
/* the actual footnotes section */
|
||||
.footnotes {
|
||||
hr {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border: 0;
|
||||
&:before {
|
||||
content: 'Footnotes';
|
||||
color: var(--ui-text);
|
||||
text-transform: uppercase;
|
||||
font-weight: 900;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
&:after {
|
||||
content: '';
|
||||
width: 100%;
|
||||
margin-left: 1rem;
|
||||
border-bottom: 1px solid var(--ui-text-muted);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
9
assets/styles/common/fonts.scss
Normal file
9
assets/styles/common/fonts.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
@import url('https://fonts.googleapis.com/css2?family=Crafty+Girls&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Cousine:ital,wght@0,400;0,700;1,400;1,700&family=Crafty+Girls&display=swap');
|
||||
|
||||
* {
|
||||
font-family: 'Cousine', monospace;
|
||||
}
|
||||
.site-title {
|
||||
font-family: 'Crafty Girls', cursive;
|
||||
}
|
43
assets/styles/common/reset.scss
Normal file
43
assets/styles/common/reset.scss
Normal file
|
@ -0,0 +1,43 @@
|
|||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
20
assets/styles/components/breadcrumbs.scss
Normal file
20
assets/styles/components/breadcrumbs.scss
Normal file
|
@ -0,0 +1,20 @@
|
|||
.breadcrumbs {
|
||||
display: flex;
|
||||
li {
|
||||
margin-right: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
a {
|
||||
color: var(--ui-text-muted);
|
||||
}
|
||||
li:first-child {
|
||||
display: none;
|
||||
}
|
||||
li:last-child {
|
||||
display: none;
|
||||
}
|
||||
li:after {
|
||||
content: ' > ';
|
||||
color: var(--ui-text-muted);
|
||||
}
|
||||
}
|
85
assets/styles/components/h-card.scss
Normal file
85
assets/styles/components/h-card.scss
Normal file
|
@ -0,0 +1,85 @@
|
|||
.h-card {
|
||||
margin: 1em auto;
|
||||
--icon-size: 4em;
|
||||
display: grid;
|
||||
grid-template-columns: var(--icon-size) auto;
|
||||
grid-template-rows: auto auto;
|
||||
grid-gap: 1em;
|
||||
|
||||
.name-and-domain {
|
||||
grid-column: 2;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.icon {
|
||||
grid-column: 1;
|
||||
grid-row: 1;
|
||||
}
|
||||
.bio {
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
.display-name {
|
||||
display: inline-flex;
|
||||
flex-flow: row wrap;
|
||||
align-items: center;
|
||||
gap: 0.5em;
|
||||
}
|
||||
.p-name {
|
||||
font-weight: 700;
|
||||
font-size: 1.25em;
|
||||
display: inline-block;
|
||||
}
|
||||
.pronouns {
|
||||
display: inline-flex;
|
||||
flex-flow: row wrap;
|
||||
gap: 0.5em;
|
||||
font-size: 0.75em;
|
||||
}
|
||||
.p-gender-identity {
|
||||
background: var(--ui-overlay);
|
||||
color: var(--ui-overlay-text);
|
||||
padding: 0.25em;
|
||||
}
|
||||
|
||||
.u-url {
|
||||
&:after {display: none}
|
||||
&:focus {
|
||||
background: unset;
|
||||
padding: unset;
|
||||
border-radius: unset;
|
||||
}
|
||||
color: var(--ui-text);
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
line-height: 2;
|
||||
}
|
||||
|
||||
.p-note {
|
||||
max-width: 55ch;
|
||||
}
|
||||
|
||||
.u-logo {
|
||||
width: 100%;
|
||||
aspect-ratio: 1;
|
||||
object-fit: cover;
|
||||
border-radius: 100em;
|
||||
}
|
||||
|
||||
.external-links {
|
||||
margin-top: 1em;
|
||||
li {
|
||||
margin: 0;
|
||||
}
|
||||
a {
|
||||
line-height: 1.25;
|
||||
}
|
||||
.pre {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
.post {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
}
|
||||
}
|
23
assets/styles/components/site-header.scss
Normal file
23
assets/styles/components/site-header.scss
Normal file
|
@ -0,0 +1,23 @@
|
|||
.site-header {
|
||||
background: var(--primary-accent);
|
||||
height: var(--header-height);
|
||||
.container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.site-masthead {
|
||||
text-decoration: none;
|
||||
}
|
||||
.site-title {
|
||||
font-size: 1.5em;
|
||||
color: var(--primary-accent-text);
|
||||
span {
|
||||
font-weight: 700;
|
||||
color: var(--ui-background);
|
||||
}
|
||||
}
|
||||
.site-icon {
|
||||
height: var(--header-height);
|
||||
}
|
||||
}
|
25
assets/styles/features/links.scss
Normal file
25
assets/styles/features/links.scss
Normal file
|
@ -0,0 +1,25 @@
|
|||
a:link {
|
||||
transition: all 0.1s ease-out;
|
||||
color: var(--link-color);
|
||||
text-decoration-thickness: .0625rem;
|
||||
text-underline-offset: 0.125em;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
a:visited {
|
||||
color: var(--link-visited);
|
||||
}
|
||||
a:focus {
|
||||
outline: none;
|
||||
background: var(--primary-accent);
|
||||
color: var(--primary-accent-text);
|
||||
border-radius: 2px;
|
||||
text-decoration: none;
|
||||
padding: 4px;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration-thickness: 0.125em;
|
||||
text-underline-offset: 0.25em;
|
||||
}
|
||||
@media (prefers-reduced-motion) {
|
||||
a:link {transition: none}
|
||||
}
|
42
assets/styles/layouts/index.scss
Normal file
42
assets/styles/layouts/index.scss
Normal file
|
@ -0,0 +1,42 @@
|
|||
.project {
|
||||
&__container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
|
||||
grid-gap: 1em;
|
||||
}
|
||||
display: inline-grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: auto 1fr auto;
|
||||
grid-template-areas:
|
||||
"thumbnail"
|
||||
"body"
|
||||
"readmore";
|
||||
&__thumbnail {
|
||||
aspect-ratio: 16/9;
|
||||
background: var(--primary-accent-transparent);
|
||||
color: var(--ui-text-muted) !important;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
text-decoration: none;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
&__body {
|
||||
grid-area: body;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: start;
|
||||
}
|
||||
&__title {
|
||||
font-size: 1.4em;
|
||||
line-height: 2;
|
||||
}
|
||||
&__summary {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.4;
|
||||
}
|
||||
&__cover {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
}
|
12
assets/styles/layouts/single.scss
Normal file
12
assets/styles/layouts/single.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
.page-title {
|
||||
font-size: 2em;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.page-summary {
|
||||
font-style: italic;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.page-date {
|
||||
color: var(--ui-text-muted);
|
||||
}
|
0
assets/styles/print.scss
Normal file
0
assets/styles/print.scss
Normal file
14
assets/styles/screen.scss
Normal file
14
assets/styles/screen.scss
Normal file
|
@ -0,0 +1,14 @@
|
|||
@import "common/reset.scss";
|
||||
@import "common/fonts.scss";
|
||||
@import "common/colors.scss";
|
||||
@import "common/base.scss";
|
||||
@import "common/content.scss";
|
||||
|
||||
@import "features/links.scss";
|
||||
|
||||
@import "components/site-header.scss";
|
||||
@import "components/h-card.scss";
|
||||
@import "components/breadcrumbs.scss";
|
||||
|
||||
@import "layouts/index.scss";
|
||||
@import "layouts/single.scss";
|
26
config.toml
Normal file
26
config.toml
Normal file
|
@ -0,0 +1,26 @@
|
|||
baseURL = 'https://cathyissleepy.com/'
|
||||
languageCode = 'en-us'
|
||||
title = 'cathyissleepy.com'
|
||||
|
||||
[params]
|
||||
icon = "images/test.png"
|
||||
author = "Cathy"
|
||||
|
||||
[params.hcard]
|
||||
name = "Cathy"
|
||||
domain = "cathyissleepy.com"
|
||||
url = "https://cathyissleepy.com"
|
||||
pronouns = ["they", "she"]
|
||||
note = "Music production and robotics."
|
||||
icon = "/images/burger.png"
|
||||
iconAlt = "A bat eating a burger"
|
||||
|
||||
[[params.hcard.me]]
|
||||
pre = '<i class="fa fa-mastodon"></i>'
|
||||
name = "mas.to/@CathyIsSleepy"
|
||||
href = "https://mas.to/@CathyisSleepy"
|
||||
|
||||
[[params.hcard.me]]
|
||||
pre = '<i class="fa fa-twitter"></i>'
|
||||
name = "@CathyIsSleepy"
|
||||
href = "https://twitter.com/CathyisSleepy"
|
10
content/_index.md
Normal file
10
content/_index.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "hi i'm cathy :3"
|
||||
description = "music production and robotics."
|
||||
+++
|
||||
|
||||
Labore incididunt nulla non irure pariatur nulla esse magna occaecat anim id ex ad. Voluptate aliquip culpa exercitation adipisicing consequat aliquip adipisicing proident aute non excepteur laboris. Ex nulla reprehenderit amet officia Lorem laboris non in ea reprehenderit velit ut.
|
||||
|
||||
Deserunt amet est incididunt laboris ex excepteur tempor pariatur commodo incididunt fugiat occaecat. Mollit ipsum mollit sunt eiusmod voluptate consectetur eiusmod ex incididunt in qui. Eiusmod aliqua deserunt non cillum consectetur et. Pariatur sit mollit dolor labore exercitation commodo esse.
|
||||
|
||||
Ut irure nisi ullamco aute labore. Elit enim amet sit ex ullamco ex incididunt laborum pariatur veniam. Ut voluptate exercitation esse incididunt exercitation qui. Dolor nostrud commodo mollit eu nisi enim magna.
|
3
content/projects/_index.md
Normal file
3
content/projects/_index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
+++
|
||||
title = "Projects"
|
||||
+++
|
5
content/projects/example-project-2/index.md
Normal file
5
content/projects/example-project-2/index.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
+++
|
||||
title = "Example Project 2"
|
||||
summary = "That other time that I did something, but with more details in the summary so that I can test how it reacts to longer layouts."
|
||||
date = "2022-10-25"
|
||||
+++
|
BIN
content/projects/example-project/cover.png
Normal file
BIN
content/projects/example-project/cover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 676 KiB |
5
content/projects/example-project/index.md
Normal file
5
content/projects/example-project/index.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
+++
|
||||
title = "Example Project"
|
||||
summary = "That one time that I did something."
|
||||
date = "2022-10-25"
|
||||
+++
|
43
layouts/_default/baseof.html
Normal file
43
layouts/_default/baseof.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{.Site.Language.Lang }}" xml:lang="{{.Site.Language.Lang }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
{{ "<!-- generated stylesheets and scripts -->" | safeHTML }}
|
||||
{{ $screen := resources.Get "styles/screen.scss" | toCSS | minify | fingerprint -}}
|
||||
<link rel="stylesheet"
|
||||
href="{{ $screen.Permalink }}"
|
||||
integrity="{{ $screen.Data.Integrity }}"
|
||||
media="screen" />
|
||||
{{- $print := resources.Get "styles/print.scss" | toCSS | minify | fingerprint }}
|
||||
<link rel="stylesheet"
|
||||
href="{{ $print.Permalink }}"
|
||||
integrity="{{ $print.Data.Integrity }}"
|
||||
media="print" />
|
||||
{{- $script := resources.Get "scripts/main.js" | js.Build "script.js" | minify | fingerprint }}
|
||||
<script type="text/javascript"
|
||||
src="{{ $script.Permalink }}"
|
||||
integrity="{{ $script.Data.Integrity }}">
|
||||
</script>
|
||||
{{ "<!-- add arrows to external links -->" | safeHTML }}
|
||||
{{ partial "styles/external-links.html" . }}
|
||||
{{ "<!-- external dependencies -->" | safeHTML }}
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
|
||||
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
|
||||
crossorigin="anonymous" />
|
||||
{{ "<!-- SEO and metadata -->" | safeHTML }}
|
||||
{{ partial "seo.html" . -}}
|
||||
{{- block "head" . }}
|
||||
{{ end -}}
|
||||
</head>
|
||||
<body>
|
||||
{{ partial "site-header.html" . }}
|
||||
{{ block "main" . }}
|
||||
{{ end }}
|
||||
{{ partial "site-footer.html" . }}
|
||||
</body>
|
||||
</html>
|
25
layouts/_default/list.html
Normal file
25
layouts/_default/list.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
{{ define "main" }}
|
||||
<main>
|
||||
<header class="section page-header">
|
||||
<div class="container">
|
||||
<h1 class="page-title">{{ .Title }}</h1>
|
||||
</div>
|
||||
</header>
|
||||
<section class="section list">
|
||||
<div class="container">
|
||||
{{ range .Pages }}
|
||||
<article class="list-item">
|
||||
<a class="list-item__link" href="{{ .Permalink }}">
|
||||
{{ with .Params.cover }}
|
||||
<img class="list-item__image" src="{{.}}">
|
||||
{{end}}
|
||||
<h2 class="list-item__title">{{ .Title }}</h2>
|
||||
</a>
|
||||
<p class="list-item__summary">{{.Summary}}</p>
|
||||
<datetime class="list-item__date">{{ .Date.Format "January 2, 2006" }}</datetime>
|
||||
</article>
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
{{ end }}
|
30
layouts/_default/single.html
Normal file
30
layouts/_default/single.html
Normal file
|
@ -0,0 +1,30 @@
|
|||
{{ define "main" }}
|
||||
<main>
|
||||
<article class="page"{{- if .Param "autonumbering" }} autonumbering {{- end }}>
|
||||
<header class="section page-header">
|
||||
<div class="container">
|
||||
{{ partial "breadcrumbs.html" . }}
|
||||
<h1 class="page-title">{{ .Title }}</h1>
|
||||
<p class="page-summary">{{.Page.Summary | plainify}}</p>
|
||||
<p class="page-date"><datetime class="timestamp">{{ .Date.Format "Mon Jan 2, 2006" }}</datetime></p>
|
||||
</div>
|
||||
</header>
|
||||
<!-- <aside class="toc section">
|
||||
<div class="container">
|
||||
<p class="toc-title">Page outline</p>
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
</aside> -->
|
||||
<section class="content section">
|
||||
<div class="container">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</section>
|
||||
<footer class="section page-footer">
|
||||
<div class="container">
|
||||
{{ partial "page-footer.html" . }}
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
{{ end }}
|
41
layouts/index.html
Normal file
41
layouts/index.html
Normal file
|
@ -0,0 +1,41 @@
|
|||
{{ define "main" }}
|
||||
<main>
|
||||
<header class="section">
|
||||
<div class="container">
|
||||
<h1 class="heading">{{ .Page.Title }}</h1>
|
||||
{{ partial "h-card.html" . }}
|
||||
</div>
|
||||
</header>
|
||||
<section class="content section">
|
||||
<div class="container">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</section>
|
||||
<section class="projects section">
|
||||
<div class="container">
|
||||
<header>
|
||||
<h2 class="heading">latest projects</h2>
|
||||
<p class="subheading">this is some of the stuff i've worked on.</p>
|
||||
</header>
|
||||
<ul class="project__container">
|
||||
{{ range where .Site.RegularPages "Section" "projects" }}
|
||||
<li class="project">
|
||||
<div class="project__body">
|
||||
<h3 class="project__title"><a href="{{.Permalink}}">{{.Title}}</a></h3>
|
||||
<p class="project__summary">{{.Summary}}</p>
|
||||
</div>
|
||||
<a class="project__thumbnail" href="{{.Permalink}}">
|
||||
{{- $cover := (.Resources.ByType "image").GetMatch "{*cover*,*thumbnail*,*featured*}" -}}
|
||||
{{ with or .Params.cover $cover }}
|
||||
<img src="{{.Permalink}}" alt="cover image" class="project__cover">
|
||||
{{ else }}
|
||||
<img src="" alt="{{.Title}}">
|
||||
{{ end }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
{{ end }}
|
14
layouts/partials/breadcrumbs.html
Normal file
14
layouts/partials/breadcrumbs.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<ul class="breadcrumbs">
|
||||
{{ template "breadcrumb" (dict "p1" . "p2" .) }}
|
||||
</ul>
|
||||
|
||||
{{ define "breadcrumb" }}
|
||||
{{ if .p1.Parent }}
|
||||
{{ template "breadcrumb" (dict "p1" .p1.Parent "p2" .p2 ) }}
|
||||
{{ else if not .p1.IsHome }}
|
||||
{{ template "breadcrumb" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
|
||||
{{ end }}
|
||||
<li{{ if eq .p1 .p2 }} class="active"{{ end }}>
|
||||
<a href="{{ .p1.RelPermalink }}">{{ .p1.Title }}</a>
|
||||
</li>
|
||||
{{ end }}
|
32
layouts/partials/h-card.html
Normal file
32
layouts/partials/h-card.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
<article class="h-card vcard">
|
||||
<header class="name-and-domain">
|
||||
<div class="display-name">
|
||||
<p class="p-name fn">{{.Site.Params.hcard.name}}</p>
|
||||
{{ with .Site.Params.hcard.pronouns }}
|
||||
<ul class="pronouns">
|
||||
{{ range . }}
|
||||
<li class="p-gender-identity">{{.}}</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="domain">
|
||||
<a href="{{.Site.Params.hcard.url}}" class="u-url u-uid url uid">{{.Site.Params.hcard.domain}}</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="bio">
|
||||
{{ with .Site.Params.hcard.note }}
|
||||
<p class="p-note note">{{.}}</p>
|
||||
{{ end }}
|
||||
{{ with .Site.Params.hcard.me }}
|
||||
<ul class="external-links">
|
||||
{{ range . }}
|
||||
<li><a href="{{.href}}" class="u-url url" rel="me"><span class="pre">{{.pre | safeHTML}}</span><span class="text">{{.name}}</span><span class="post">{{.post | safeHTML}}</span></a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="icon">
|
||||
<img src="{{.Site.Params.hcard.icon}}" alt="{{.Site.Params.hcard.iconAlt}}" class="u-logo u-photo logo">
|
||||
</div>
|
||||
</article>
|
15
layouts/partials/nav-footer.html
Normal file
15
layouts/partials/nav-footer.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<nav class="footer-nav">
|
||||
<ul class="menu">
|
||||
{{ $currentPage := . }}
|
||||
{{ range .Site.Menus.footer }}
|
||||
<li
|
||||
class='{{ .Identifier }}{{ if or ($currentPage.IsMenuCurrent "footer" .) (eq $currentPage.Section .Identifier) }} active{{ end }}'>
|
||||
<a href="{{ .URL | relLangURL }}">
|
||||
{{ .Pre }}
|
||||
<span>{{ .Name }}</span>
|
||||
{{ .Post }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
15
layouts/partials/nav-header.html
Normal file
15
layouts/partials/nav-header.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<nav class="header-nav">
|
||||
<ul class="menu">
|
||||
{{ $currentPage := . }}
|
||||
{{ range .Site.Menus.main }}
|
||||
<li
|
||||
class='{{ .Identifier }}{{ if or ($currentPage.IsMenuCurrent "main" .) (eq $currentPage.Section .Identifier) }}active{{ end }}'>
|
||||
<a href="{{ .URL | relLangURL }}">
|
||||
{{ .Pre }}
|
||||
<span>{{ .Name }}</span>
|
||||
{{ .Post }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
13
layouts/partials/nav-social.html
Normal file
13
layouts/partials/nav-social.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<nav class="social-nav">
|
||||
<ul class="menu">
|
||||
{{ $currentPage := . }}
|
||||
{{ range .Site.Menus.social }}
|
||||
<li
|
||||
class='{{ .Identifier }}'>
|
||||
<a href="{{ .URL }}">
|
||||
{{ .Pre }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
4
layouts/partials/page-footer.html
Normal file
4
layouts/partials/page-footer.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
{{/*
|
||||
Override this partial if you want stuff
|
||||
to show up at the bottom of each page
|
||||
*/}}
|
132
layouts/partials/seo.html
Normal file
132
layouts/partials/seo.html
Normal file
|
@ -0,0 +1,132 @@
|
|||
{{ "<!-- title -->" | safeHTML }}
|
||||
<title itemprop="name">{{ .Title }} | {{ .Site.Title }}</title>
|
||||
<meta property="og:title" content="{{ .Title }}" />
|
||||
<meta name="twitter:title" content="{{ .Title }}" />
|
||||
<meta name="application-name" content="{{ .Site.Title }}" />
|
||||
<meta property="og:site_name" content="{{ .Site.Title }}" />
|
||||
|
||||
{{- with or .Description .Summary .Site.Params.description }}
|
||||
{{ "<!-- description -->" | safeHTML }}
|
||||
<meta name="description" content="{{.}}">
|
||||
<meta itemprop="description" content="{{.}}" />
|
||||
<meta property="og:description" content="{{.}}" />
|
||||
<meta name="twitter:description" content="{{.}}" />
|
||||
{{ end -}}
|
||||
{{ "<!-- url -->" | safeHTML }}
|
||||
<base href="{{ .Permalink | absURL }}">
|
||||
<link rel="canonical" href="{{ .Permalink | absURL }}" itemprop="url" />
|
||||
<meta name="url" content="{{ .Permalink | absURL }}" />
|
||||
<meta name="twitter:url" content="{{ .Permalink | absURL }}" />
|
||||
<meta property="og:url" content="{{ .Permalink | absURL }}" />
|
||||
|
||||
{{- $cover := ($.Resources.ByType "image").GetMatch "{*cover*,*thumbnail*,*featured*}" -}}
|
||||
{{ $icon := resources.GetMatch (default "" .Site.Params.icon) -}}
|
||||
{{- $staticIcon := "icon.png" | absURL -}}
|
||||
{{- with or .Params.cover $cover $icon }}
|
||||
{{ "<!-- image -->" | safeHTML }}
|
||||
<meta itemprop="image" content='{{ .Permalink | absURL }}' />
|
||||
<meta property="og:image" content='{{ .Permalink | absURL }}' />
|
||||
{{- with .Width }}
|
||||
<meta property="og:image:width" content='{{ . }}' />
|
||||
{{- end }}
|
||||
{{- with .Height }}
|
||||
<meta property="og:image:height" content='{{ . }}' />
|
||||
{{- end }}
|
||||
<meta name="twitter:image" content='{{ .Permalink | absURL }}' />
|
||||
<meta name="twitter:image:src" content='{{ .Permalink | absURL }}' />
|
||||
{{- else }}
|
||||
{{ "<!-- image -->" | safeHTML }}
|
||||
<meta itemprop="image" content='{{ $staticIcon }}' />
|
||||
<meta property="og:image" content='{{ $staticIcon }}' />
|
||||
<meta name="twitter:image" content='{{ $staticIcon }}' />
|
||||
<meta name="twitter:image:src" content='{{ $staticIcon }}' />
|
||||
{{- end -}}
|
||||
|
||||
{{/*=== author ===*/}}
|
||||
{{ with or .Params.author .Site.Params.author -}}
|
||||
{{ "<!-- author -->" | safeHTML }}
|
||||
<meta property="article:publisher" content="{{ . }}" />
|
||||
<meta property="og:article:author" content="{{ . }}" />
|
||||
<meta property="article:author" content="{{ . }}" />
|
||||
<meta name="author" content="{{ . }}" />
|
||||
{{- end -}}
|
||||
|
||||
{{/*=== published and updated ===*/}}
|
||||
{{ "<!-- time -->" | safeHTML }}
|
||||
{{- with .Date }}
|
||||
<meta property="og:article:published_time" content={{ .Format "2006-01-02T15:04:05Z0700" | safeHTML }} />
|
||||
<meta property="article:published_time" content={{ .Format "2006-01-02T15:04:05Z0700" | safeHTML }} />
|
||||
{{ end -}}
|
||||
{{ with .Lastmod -}}
|
||||
<meta property="og:updated_time" content={{ .Format "2006-01-02T15:04:05Z0700" | safeHTML }} />
|
||||
{{ end -}}
|
||||
|
||||
{{/*=== section and keywords ===*/}}
|
||||
{{- with.Params.category -}}
|
||||
<meta name="news_keywords" content="{{ . }}" />
|
||||
<meta property="article:section" content="{{ . }}" />
|
||||
{{- end -}}
|
||||
{{- with .Params.tags }}
|
||||
<meta name="keywords" content='{{ delimit . " "}}'>
|
||||
{{- end -}}
|
||||
|
||||
{{- if isset .Params "date" -}}
|
||||
{{ "<!-- article metadata -->" | safeHTML }}
|
||||
<meta property="og:type" content="article" />
|
||||
<script defer type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": {{ .Title }},
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "{{ or .Params.author .Site.Params.author }}"
|
||||
},
|
||||
"datePublished": "{{ .Date.Format "2006-01-02" }}",
|
||||
"description": {{ or .Description .Summary }},
|
||||
"wordCount": {{ .WordCount }},
|
||||
"mainEntityOfPage": "True",
|
||||
"dateModified": "{{ .Lastmod.Format "2006-01-02" }}",
|
||||
"image": {
|
||||
"@type": "imageObject",
|
||||
"url": "{{ with or .Params.cover $cover $icon }}{{ .Permalink | absURL }}{{ end }}"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Person",
|
||||
"name": "{{ or .Params.author .Site.Params.author .Site.Title }}",
|
||||
"logo": {
|
||||
"@type": "imageObject",
|
||||
"url": {{with $icon}}{{.Permalink}}{{else}}{{$staticIcon}}{{end}}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{{- else -}}
|
||||
{{ "<!-- webpage metadata -->" | safeHTML }}
|
||||
<meta property="og:type" content="website" />
|
||||
<script defer type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebSite",
|
||||
"url": {{ .Permalink }},
|
||||
"name": "{{ .Site.Title }}",
|
||||
"logo": {{with $icon}}{{.Permalink}}{{else}}{{$staticIcon}}{{end}}
|
||||
}
|
||||
</script>
|
||||
{{- end -}}
|
||||
|
||||
{{/* auxiliary info */}}
|
||||
{{ "<!-- site presentation -->" | safeHTML }}
|
||||
{{- with $icon }}
|
||||
<link rel="shortcut icon" href='{{ .Permalink }}' sizes="{{.Width}}x{{.Height}}">
|
||||
{{- else -}}
|
||||
<link rel="shortcut icon" href='{{ $staticIcon }}' sizes="512x512">
|
||||
{{- end }}
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||
<link rel="sitemap" type="application/xml" title="Sitemap" href="{{ .Site.BaseURL }}sitemap.xml" />
|
||||
{{ with .OutputFormats.Get "RSS" -}}
|
||||
<link href="{{ .Permalink }}" rel="feed alternate" type="application/rss+xml" title="{{ $.Site.Title }}" />
|
||||
{{- end }}
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="googlebot" content="index,follow" />
|
8
layouts/partials/site-footer.html
Normal file
8
layouts/partials/site-footer.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<footer class="site-footer">
|
||||
<hr>
|
||||
<div class="container">
|
||||
{{ partial "nav-footer.html" . }}
|
||||
{{ partial "nav-social.html" . }}
|
||||
<a href="#top">back to top</a>
|
||||
</div>
|
||||
</footer>
|
12
layouts/partials/site-header.html
Normal file
12
layouts/partials/site-header.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<header class="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="site-masthead">
|
||||
<p class="site-title">cathy<span>is</span>sleepy.</p>
|
||||
</a>
|
||||
{{ partial "nav-header.html" . }}
|
||||
<img src="/images/burger.png" alt="" class="site-icon">
|
||||
</div>
|
||||
</header>
|
||||
<div class="scroll-margin" style="position: relative;">
|
||||
<div id="top" style="scroll-margin-top: var(--header-height);"></div>
|
||||
</div>
|
13
layouts/partials/styles/external-links.html
Normal file
13
layouts/partials/styles/external-links.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<style>
|
||||
a[href^="http"]:after {
|
||||
content: "🡕";
|
||||
}
|
||||
a[href^="{{.Site.BaseURL}}"]:after
|
||||
{
|
||||
display: none !important;
|
||||
}
|
||||
a[href^="http://localhost"]:after
|
||||
{
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
11
layouts/partials/webapp.html
Normal file
11
layouts/partials/webapp.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{ "<!-- webapp -->" | safeHTML }}
|
||||
<link rel="manifest" href="{{ .Site.BaseURL }}manifest.json" />
|
||||
<meta name="imagemode" content="force" />
|
||||
<meta name="coverage" content="Worldwide" />
|
||||
<meta name="distribution" content="Global" />
|
||||
<meta name="HandheldFriendly" content="True" />
|
||||
<meta name="msapplication-tap-highlight" content="no" />
|
||||
<meta name="apple-mobile-web-app-title" content="{{ .Site.Title }}" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-touch-fullscreen" content="yes" />
|
BIN
static/icon.png
Normal file
BIN
static/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 258 KiB |
BIN
static/images/burger.png
Normal file
BIN
static/images/burger.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 676 KiB |
Loading…
Reference in a new issue