First commit

The basic parts of the layouts/theme should work. I have only populated 2 albums so far.
This commit is contained in:
a 2024-05-17 21:14:05 -05:00
commit 9aa43df629
66 changed files with 1692 additions and 0 deletions

7
.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
/public/
/resources/_gen/
/assets/jsconfig.json
hugo_stats.json
/.hugo_build.lock
/assets/originals/

View file

@ -0,0 +1,16 @@
body {
background: #212121;
color: white;
}
a:link {
color: hsl(210, 100%, 50%)
}
a:visited {
color: hsl(270, 100%, 75%)
}
.photo-details {
background: #111;
}

View file

@ -0,0 +1,44 @@
.development-info {
display: none;
}
* {
margin: 0;
padding: 0;
}
.section {
margin-block: 2rem;
}
.container {
padding-inline: 1rem;
}
body {
width: 100vw;
max-width: var(--site-max-width, 120rem);
margin-inline: auto;
@media (min-width: 40rem) {
display: grid;
grid-template-areas:
"head main"
"foot main";
grid-template-columns: 20em 1fr;
grid-template-rows: 1fr auto;
> main {
grid-area: main;
height: 100vh;
overflow-y: auto;
}
.site-header {
grid-area: head;
}
.site-footer {
grid-area: foot;
}
}
}

View file

@ -0,0 +1,21 @@
@import "hugo:vars";
html {
--site-max-width: #{$site-max-width};
--list-max-width: #{$list-max-width};
}
.favorites-reel {
--photo-grid-item-size: 15rem;
--photo-grid-gap: 0.5em;
}
.all-photos {
--photo-grid-item-size: 9rem;
--photo-grid-gap: 0.5em;
}
.event-page {
--photo-grid-item-size: 15rem;
--photo-grid-gap: 0.5em;
}

View file

View file

@ -0,0 +1,110 @@
.event-title {
font-size: 1.4em;
margin-block-end: 1rem;
}
.event-subtitle {
font-size: 1em;
font-weight: normal;
font-variant: small-caps;
font-weight: bold;
}
.event-header svg {
width: 1.5em;
height: 1.5em;
}
.event-header span {
font-size: 1em;
line-height: 1.5;
}
.event-header p, .event-header li {
display: flex;
align-items: center;
span {
margin-inline-start: 0.25em;
margin-inline-end: 2em;
}
}
.event-content {
h2 {
font-size: 1em;
font-variant: small-caps;
}
}
.event-tags {
list-style: none;
display: flex;
flex-flow: row wrap;
gap: 1em;
a {
color: #777;
}
}
.event-photos {
list-style: none;
a {
text-decoration: none;
color: inherit;
}
display: grid;
gap: 1em;
}
.event-photo {
img {
display: block;
max-width: 100%;
}
figcaption {
background: #111;
text-align: center;
padding-block: 1em;
.photo-title {
text-align: center;
margin-block-end: 1em;
}
.photo-summary {
font-family: monospace;
}
}
}
.event-page .photos .event-subtitle {
margin-block: 2rem;
}
@media (min-width: 100rem) {
.event-page {
display: grid;
grid-template-columns: 1fr 20rem;
grid-template-areas:
"photos info";
height: 100vh;
}
.event-page .info {
grid-area: info;
height: 100vh;
overflow-y: scroll;
}
.event-page .photos {
grid-area: photos;
height: 100vh;
overflow-y: scroll;
margin: 0;
.photos-list {
max-width: 40rem;
margin-inline: auto;
}
}
}

View file

@ -0,0 +1,73 @@
.photo-page .photo {
display: grid;
grid-template-areas:
"image"
"title"
"caption"
"meta"
"footer";
@media (min-width: 80rem) {
grid-template-areas:
"image title"
"image caption"
"image meta"
"image footer";
grid-template-columns: 1fr 20em;
grid-template-rows: auto auto auto 1fr;
min-height: 100vh;
}
}
.photo-page picture, .photo-page source {
display: contents;
}
.photo-page .photo .title {
grid-area: title;
text-align: center;
font-weight: normal;
margin-block-start: 2rem;
margin-block-end: 1rem;
}
.photo-page .photo .caption {
grid-area: caption;
font-style: italic;
font-family: monospace;
margin-block-end: 2rem;
max-width: 90%;
margin-inline: auto;
}
.photo-page .photo img {
grid-area: image;
display: block;
max-width: 100%;
place-self: center;
}
.photo-page .photo .metadata {
grid-area: meta;
text-align: center;
dt {
font-weight: bold;
font-variant: small-caps;
}
}
.photo-page footer {
text-align: center;
h2 {
font-size: 1em;
}
}
.photo-page .tags {
list-style: none;
display: flex;
flex-flow: row wrap;
gap: 1em;
a {
color: #777;
}
}

View file

@ -0,0 +1,10 @@
.content {
max-width: 80ch;
h2 {
margin-block: 1rem;
}
p {
line-height: 1.6;
margin-block: 1rem;
}
}

View file

@ -0,0 +1,8 @@
.tag-page-title {
font-size: 1.4em;
}
.tag-page-subtitle {
font-size: 1em;
margin-block: 1em;
}

View file

@ -0,0 +1,26 @@
.list-of-all-tags {
list-style: none;
display: grid;
gap: 1em;
li {
display: grid;
grid-template-columns: 1fr 5ch;
grid-template-areas: "tag num";
gap: 1em;
max-width: 30ch;
a {
grid-area: tag;
justify-self: start;
}
span {
grid-area: num;
justify-self: end;
}
}
a:before {
content: '#';
}
a {
color: #777;
}
}

View file

@ -0,0 +1,43 @@
.albums-list {
list-style: none;
a {
color: inherit;
text-decoration: none;
}
max-width: var(--list-max-width, 60rem);
}
.album {
a {display: contents;}
@media (min-width: 60rem) {
display: grid;
grid-template-areas: "cover details";
grid-template-columns: 1fr 1fr;
gap: 1em;
}
margin-block: 2rem;
}
.album-cover {
display: block;
max-width: 100%;
max-height: 80vh;
margin-inline: auto;
grid-area: cover;
}
.album-details {
grid-area: details;
}
.album-title {
margin-block-start: 1em;
margin-block-end: 0.5em;
font-weight: bold;
text-align: center;
}
.album-summary {
font-style: italic;
text-align: center;
}

View file

@ -0,0 +1,21 @@
.photos-grid {
list-style: none;
a {
color: inherit;
text-decoration: none;
display: contents;
}
max-width: var(--list-max-width, 60rem);
display: grid;
grid-template-columns: repeat(auto-fill, minmax(var(--photo-grid-item-size, 20rem), 1fr));
gap: var(--photo-grid-gap, 1em);
}
.photos-grid .photo-asset {
display: block;
width: 100%;
height: 100%;
aspect-ratio: 1;
object-fit: cover;
object-position: center;
}

View file

@ -0,0 +1,38 @@
.photos-list {
list-style: none;
a {
color: inherit;
text-decoration: none;
}
max-width: var(--photos-list-max-width, 28rem);
.photo {
text-align: center;
@media (min-width: 60rem) {
display: grid;
grid-template-areas: "photo" "details";
grid-template-columns: 1fr;
grid-template-rows: auto auto;
}
margin-block: 1rem;
}
.photo-asset {
grid-area: photo;
display: block;
max-width: 100%;
}
.photo-details {
grid-area: details;
padding: 1rem;
}
.photo-title {
margin-block-end: 1rem;
}
.photo-summary {
font-family: monospace;
}
}

View file

@ -0,0 +1,4 @@
.site-footer {
padding-block: 2rem;
text-align: center;
}

View file

@ -0,0 +1,84 @@
.site-header {
display: flex;
flex-flow: column;
align-items: center;
gap: 1em;
padding-block: 1em;
}
.site-header .masthead {
margin-block-start: 1rem;
}
.site-header nav {
margin-block: 3rem;
}
.site-header ul {
list-style: none;
display: flex;
flex-flow: column;
align-items: center;
gap: 1em;
li.active {
color: gold;
font-weight: bold;
}
}
.site-header nav a {
color: inherit;
text-decoration: none;
svg {
width: 0.75em;
height: 0.75em;
margin-inline-start: 0.5rem;
}
}
.site-header input, .site-header label {
display: none;
}
@media (max-width: 40rem) {
.site-header label {
display: unset;
svg {
width: 2rem;
height: 2rem;
}
}
.site-header {
display: grid;
grid-template-areas:
"menu logo ."
"navs navs navs";
grid-template-columns: 1fr auto 1fr;
.menu-icon {
grid-area: menu;
margin-left: 2rem;
margin-top: 1rem;
}
.masthead {
grid-area: logo;
}
.navs {
grid-area: navs;
}
}
.site-header .navs {
display: none;
}
.menu-btn:checked ~ .navs {
display: unset;
}
}

20
assets/scss/main.scss Normal file
View file

@ -0,0 +1,20 @@
@import "base/variables.scss";
@import "base/layout.scss";
@import "base/colors.scss";
@import "layouts/partials/site-header.scss";
@import "layouts/partials/site-footer.scss";
@import "layouts/_default/single.scss";
@import "layouts/_default/all-photos.scss";
@import "layouts/_default/albums.scss";
@import "layouts/_default/tags.scss";
@import "layouts/_default/tag.scss";
@import "layouts/_default/event.scss";
@import "layouts/_default/photo.scss";
@import "layouts/partials/albums-list.scss";
@import "layouts/partials/photos-list.scss";
@import "layouts/partials/photos-grid.scss";

3
content/_index.md Normal file
View file

@ -0,0 +1,3 @@
+++
title = "Home"
+++

View file

@ -0,0 +1,51 @@
+++
# Internal stuff
layout = "event"
aliases = [
"/albums/balancebirmingham",
]
featured_asset = "**/IMAG0045.jpg"
# Basic metadata
title = "The Things We Think We're Missing"
summary = "Balance and Composure (w/ CREEPOID, Seahaven) - 2014/09/16 @ Zydeco, Birmingham, AL"
# Taxonomy
categories = ["Concert"]
tags = [
"balancebirmingham",
"zydeco",
"birmingham al",
"balance and composure",
"seahaven",
"creepoid",
]
# Event metadata
date = "2014-09-16T19:00:00-0500"
[location]
name = "Zydeco"
url = "https://zydecobirmingham.com"
latitude = "33.4973328"
longitude = "-86.7930727"
altitude = "15"
street-address = "2001 15th Ave S"
locality = "Birmingham, Alabama"
postal-code = "35205"
country-name = "USA"
[[openers]]
name = "CREEPOID"
url = "https://creepoid.bandcamp.com"
[[openers]]
name = "Seahaven"
url = "https://www.facebook.com/welcometoseahaven"
[[headliners]]
name = "Balance & Composure"
url = "https://www.balanceandcomp.com"
+++
my first concert.

View file

@ -0,0 +1,49 @@
+++
# Internal stuff
layout = "event"
aliases = [
"/albums/sumus-ubique",
]
featured_asset = "**/IMG-1594.jpg"
# Basic metadata
title = "Sumus Ubique"
summary = "Brand New (w/ Foxing, Cymbals Eat Guitars) - 2014/10/21 @ Iron City, Birmingham, AL"
# Taxonomy
categories = ["Concert"]
tags = [
"sumus ubique",
"iron city",
"birmingham al",
"brand new",
"foxing",
"cymbals eat guitars",
]
# Event metadata
date = "2014-10-21T19:00:00-0500"
[location]
name = "Iron City"
url = "https://ironcitybham.com"
latitude = "33.5088971"
longitude = "-86.7980653"
altitude = "15"
street-address = "513 22nd St S"
locality = "Birmingham, Alabama"
postal-code = "35233"
country-name = "USA"
[[openers]]
name = "Foxing"
url = "https://foxingtheband.com"
[[openers]]
name = "Cymbals Eat Guitars"
url = "https://cymbalseatguitars.bandcamp.com"
[[headliners]]
name = "Brand New"
url = "https://www.fightoffyourdemons.com"
+++

4
content/albums/_index.md Normal file
View file

@ -0,0 +1,4 @@
+++
layout = "albums"
title = "concerts i've been to, in chronological order"
+++

View file

@ -0,0 +1,4 @@
+++
title = "Categories of photos"
summary = "Different types of photos I've taken"
+++

View file

@ -0,0 +1,5 @@
+++
layout = "favorites"
title = "favorites"
summary = "some of the best photos i've taken"
+++

24
content/info.md Normal file
View file

@ -0,0 +1,24 @@
+++
title = "info"
summary = "birdsounds.media is the creative arm of trwnh and an archive of concert media for general appreciation."
+++
birdsounds.media is the creative arm of trwnh and an archive of concert media for general appreciation.
## support
if you appreciate any of what you see here, you can show your appreciation by backing me as a patron on [liberapay.com/trwnh](https://liberapay.com/trwnh) or on [patreon.com/trwnh](https://patreon.com/trwnh).
or you can donate directly via paypal (tarawneh.abdullah@gmail.com, friends and family -- maybe via [paypal/me/obvious_humor](https://paypal.me/obvious_humor)).
or if you shop via amazon, then you can use my affiliate link so that i get paid a small fraction of anything you buy: [https://amzn.to/2rydvvC](https://amzn.to/2rydvvC)
## booking
if you would like to book my services to photograph a concert, event, or miscellaneous subject, please contact me at **a@trwnh.com**
i am available in the birmingham, al area, but am willing to travel to other areas if travel costs are covered.
## prints and merch
you can buy prints of select photos as wall art, apparel, and much more via [society6.com/trwnh](https://society6.com/trwnh) -- however, if you would like to order a print of a photo that is not available on society6, please contact me at **a@trwnh.com** and i can add your requested photo to society6 for on-demand ordering.

View file

@ -0,0 +1,27 @@
+++
# Internal stuff
layout = "photo"
aliases = [
"/albums/balancebirmingham/content/galena",
"/content/galena",
]
photo_asset = "**/IMG-1311.jpg"
date = "2014-09-16T21:50:06-0500"
# Basic metadata
title = "galena"
summary = "your breathing gets shorter, your hands are getting cold, but you can't die here; you're only nineteen years old."
alt = "jon simmons is swinging a guitar and singing into a microphone, his mouth open wide as if out of breath. the picture is edited to be grainy and slightly washed out, with a cooler color temperature."
# Taxonomy
albums = ["2014-09-16"]
categories = ["Concert"]
tags = [
"balance and composure",
"balancebirmingham",
"birmingham al",
"zydeco",
"jon simmons",
]
reels = []
+++

View file

@ -0,0 +1,28 @@
+++
# Internal stuff
layout = "photo"
aliases = [
"/albums/balancebirmingham/content/keepsake",
"/content/keepsake",
"/favorites/keepsake",
]
photo_asset = "**/IMAG0045.jpg"
date = "2014-09-16T22:02:35-0500"
# Basic metadata
title = "keepsake"
summary = "paint a portrait of this scene that is acting out a dream"
alt = "a mobile photo of a band playing music, where bright blue floodlights are peaking the image to give it a dreamy blurry watercolor look. the edges of the photo are faded to white to give the appearance of a picture frame."
# Taxonomy
albums = ["2014-09-16"]
categories = ["Concert"]
tags = [
"balance and composure",
"balancebirmingham",
"birmingham al",
"zydeco",
"jon simmons",
]
reels = ["favorites"]
+++

View file

@ -0,0 +1,26 @@
+++
# Internal stuff
layout = "photo"
aliases = [
"/albums/sumus-ubique/content/inuit",
"/content/inuit",
]
photo_asset = "**/IMG-1434.jpg"
date = "2014-10-21T21:02:53-0500"
# Basic metadata
title = "inuit"
summary = "my brightest love it was more than i shared, it was more than you cared"
alt = ""
# Taxonomy
albums = ["2014-10-21"]
categories = ["Concert"]
tags = [
"birmingham al",
"iron city",
"foxing",
"conor murphy",
]
reels = []
+++

View file

@ -0,0 +1,26 @@
+++
# Internal stuff
layout = "photo"
aliases = [
"/albums/sumus-ubique/content/rory",
"/content/rory",
]
photo_asset = "**/IMG-1503.jpg"
date = "2014-10-21T21:19:11-0500"
# Basic metadata
title = "rory"
summary = "i swear i'm a good man, so why don't you love me back?"
alt = ""
# Taxonomy
albums = ["2014-10-21"]
categories = ["Concert"]
tags = [
"birmingham al",
"iron city",
"foxing",
"conor murphy",
]
reels = []
+++

View file

@ -0,0 +1,25 @@
+++
# Internal stuff
layout = "photo"
aliases = [
"/albums/sumus-ubique/content/cymbals-eat-guitars",
"/content/cymbals-eat-guitars",
]
photo_asset = "**/IMG-1523.jpg"
date = "2014-10-21T21:44:26-0500"
# Basic metadata
title = "cymbals eat guitars"
summary = ""
alt = ""
# Taxonomy
albums = ["2014-10-21"]
categories = ["Concert"]
tags = [
"birmingham al",
"iron city",
"cymbals eat guitars",
]
reels = []
+++

View file

@ -0,0 +1,27 @@
+++
# Internal stuff
layout = "photo"
aliases = [
"/albums/sumus-ubique/content/sowing-season",
"/content/sowing-season",
"/favorites/sowing-season",
]
photo_asset = "**/IMG-1594.jpg"
date = "2014-10-21T23:20:53-0500"
# Basic metadata
title = "sowing season"
summary = "before you put my body in the cold ground, take some time to warm it with your hand"
alt = "jesse lacey with his head bowed forward, looking at the ground. a bright orange light flares from behind his hands, illuminating the outline of a guitar and the flower wreath on the microphone stand."
# Taxonomy
albums = ["2014-10-21"]
categories = ["Concert"]
tags = [
"birmingham al",
"iron city",
"brand new",
"jesse lacey",
]
reels = ["favorites"]
+++

8
content/photos/_index.md Normal file
View file

@ -0,0 +1,8 @@
+++
layout = "all-photos"
title = "all photos"
url = "/"
aliases = [
"/photos",
]
+++

4
content/tags/_index.md Normal file
View file

@ -0,0 +1,4 @@
+++
layout = "tags"
title = "index of tags"
+++

75
hugo.toml Normal file
View file

@ -0,0 +1,75 @@
baseURL = 'https://birdsounds.media/'
languageCode = 'en-us'
title = 'birdsounds.media'
summary = "you're not awake at all"
capitalizeListTitles = false
[imaging]
quality = 80
[markup.goldmark.renderer]
unsafe = true
[[menus.main]]
name = "albums"
pageRef = "/albums"
weight = 30
[[menus.main]]
name = "all photos"
pageRef = "/"
weight = 10
[[menus.main]]
name = "favorites"
pageRef = "/favorites"
weight = 20
[[menus.main]]
name = "tags"
pageRef = "/tags"
weight = 40
[[menus.second]]
name = "info"
pageRef = "/info"
weight = 10
[[menus.second]]
name = "prints/merch"
url = "https://society6.com/trwnh"
weight = 20
[[menus.third]]
name = "trwnh.com"
url = "https://trwnh.com"
weight = 10
[[menus.third]]
name = "social"
url = "https://mastodon.social/@trwnh"
weight = 20
[params.style]
site-max-width = "120rem"
list-max-width = "60rem"
[taxonomies]
album = "albums"
category = "categories"
tag = "tags"
reel = "reels"

View file

@ -0,0 +1,21 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: albums.html</p>
<p>{{debug.Dump .}}</p>
<p><br></p>
</aside>
{{ end }}
<main>
<header class="section">
<div class="container">
<h1>{{ .Title }}</h1>
</div>
</header>
<section class="section">
<div class="container">
{{ partial "albums-list.html" .Data.Pages.Reverse }}
</div>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,18 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: all-photos.html</p>
{{debug.Dump .}}
</aside>
{{ end }}
<main>
<header class="section">
<div class="container">
</div>
</header>
<section class="all-photos">
{{ $photos := where .RegularPages "Type" "photos" }}
{{ partial "photos-grid.html" $photos }}
</section>
</main>
{{ end }}

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html
lang="{{.Site.Language.Lang }}"
xml:lang="{{.Site.Language.Lang }}"
prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#"
>
<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" />
{{ with resources.Get "scss/main.scss" }}
{{ $options := dict
"targetPath" "css/style.css"
"transpiler" "libsass"
"vars" site.Params.style
}}
{{ $style := . | toCSS $options | minify | fingerprint }}
<link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}">
{{ end }}
{{ with resources.Get "js/main.js" }}
{{ $js := . | minify | minify | fingerprint }}
<script type="text/javascript" src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}"></script>
{{ end }}
{{ partial "seo.html" . }}
{{ block "head" . }}
{{ end }}
</head>
<body>
{{ block "body" . }}
{{ partial "site-header.html" . }}
{{ block "main" . }}
{{ end }}
{{ partial "site-footer.html" . }}
{{ end }}
</body>
</html>

125
layouts/_default/event.html Normal file
View file

@ -0,0 +1,125 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: event.html</p>
{{debug.Dump .}}
</aside>
{{ end }}
<main class="event-page">
<div class="info">
<header class="section event-header">
<div class="container">
<h1 class="event-title">{{ .Title }}</h1>
{{ with .Params.location }}
<h2 class="event-subtitle">Venue</h2>
<p class="event-location">
{{ partial "svg/mdi.map-marker.html" . }}
{{ if .url }}
<a href="{{ .url }}">
<span>
{{ .name }}
</span>
</a>
{{ else }} {{/* no url */}}
<span>
{{ .name }}
</span>
{{ end }} {{/* url check */}}
</p>
<p class="event-locality">
{{ partial "svg/mdi.map.html" . }}
<span>
{{ .locality }}, {{ index . "country-name" }}
</span>
</p>
{{ end }} {{/* with location */}}
{{ if and .Params.location .Date }}
{{ with .Date }}
<p class="event-date">
{{ partial "svg/mdi.calendar-time.html" . }}
<span>
<time datetime="{{ .Format " 2006-01-02T15:04:05-0700" }}">{{ .Format "2006-01-02 3:04 PM" }}</time>
</span>
</p>
{{ end }} {{/* with date */}}
{{ end }} {{/* event check */}}
{{ with .Params.openers }}
<h2 class="event-subtitle">Openers</h2>
<ul class="event-openers">
{{ range . }}
<li>
{{ partial "svg/mdi.artist.html" . }}
{{ if .url }}
<a href="{{ .url }}">
<span>
{{ .name }}
</span>
</a>
{{ else }} {{/* no url */}}
<span>
{{ .name }}
</span>
{{ end }} {{/* url */}}
</li>
{{ end }} {{/* range */}}
</ul>
{{ end }} {{/* with openers */}}
{{ with .Params.headliners }}
<h2 class="event-subtitle">Headliners</h2>
<ul class="event-headliners">
{{ range . }}
<li>
{{ partial "svg/mdi.artist.html" . }}
{{ partial "svg/mdi.star.html" . }}
{{ if .url }}
<a href="{{ .url }}">
<span>
{{ .name }}
</span>
</a>
{{ else }} {{/* no url */}}
<span>
{{ .name }}
</span>
{{ end }} {{/* url */}}
</li>
{{ end }} {{/* range */}}
</ul>
{{ end }} {{/* with headliners */}}
</div>
</header>
{{ with .Content }}
<section class="section">
<div class="container">
<h2 class="event-subtitle">Notes</h2>
<div class="event-content">
{{ . }}
</div>
</div>
</section>
{{ end }}
{{ with .Params.tags }}
<section class="section">
<div class="container">
<h2 class="event-subtitle">Tagged with</h2>
<ul class="event-tags">
{{ range . }}
<li>
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">
#{{.}}
</a>
</li>
{{ end }} {{/* range */}}
</ul>
</div>
</section>
{{ end }} {{/* with tags */}}
</div>
<section class="section photos">
<div class="container">
<h2 class="event-subtitle">Photos ({{ .Pages.Len }})</h2>
{{ partial "photos-grid.html" .Pages.Reverse }}
</div>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,17 @@
{{ define "main" }}
<main>
<header class="section">
<div class="container">
<h1>{{.Title}}</h1>
<p>{{.Summary}}</p>
</div>
</header>
<section class="section favorites-reel">
<div class="container">
{{ $reels := index .Site.Taxonomies "reels" }}
{{ $favorites := index $reels "favorites" }}
{{ partial "photos-grid.html" $favorites }}
</div>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,26 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: list.html</p>
{{debug.Dump .}}
</aside>
{{ end }}
<main>
<header>
<div class="container">
<h1>{{ .Title }}</h1>
</div>
</header>
<section>
<div class="container">
<ul>
{{ range .Pages }}
<li>
<a href="{{ .Permalink }}">{{ .Title }}</a>
</li>
{{ end }}
</ul>
</div>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,34 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: photo.html</p>
{{debug.Dump .}}
</aside>
{{ end }}
<main class="photo-page">
<article class="h-entry photo">
<h1 class="p-name title">{{ .Title }}</h1>
<p class="p-summary caption">{{ .Summary | markdownify }}</p>
{{ partial "photo_asset.html" .}}
{{ partial "photo_asset.exif.html" .}}
<footer class="section">
{{ partial "next-prev-photo-in-album.html" . }}
{{ with .Params.tags }}
<section class="section">
<div class="container">
<ul class="tags">
{{ range . }}
<li>
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">
#{{.}}
</a>
</li>
{{ end }} {{/* range */}}
</ul>
</div>
</section>
{{ end }} {{/* with tags */}}
</footer>
</article>
</main>
{{ end }}

View file

@ -0,0 +1,20 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: single.html</p>
{{debug.Dump .}}
</aside>
{{ end }}
<main>
<header class="section">
<div class="container">
<h1>{{.Title}}</h1>
</div>
</header>
<section class="content section">
<div class="container">
{{ .Content }}
</div>
</section>
</main>
{{ end }}

29
layouts/_default/tag.html Normal file
View file

@ -0,0 +1,29 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: tag.html</p>
{{ debug.Dump . }}
</aside>
{{ end }}
<main>
<header class="section">
<div class="container">
<h1 class="tag-page-title">tagged with #{{ .Title }}</h1>
</div>
</header>
<section class="section">
<div class="container">
{{ $album_pages := where .Pages "Type" "albums" }}
<h2 class="tag-page-subtitle">Albums ({{ $album_pages.Len }})</h2>
{{ partial "albums-list.html" $album_pages}}
</div>
</section>
<section class="section">
<div class="container">
{{ $photo_pages := where .Pages "Type" "photos"}}
<h2 class="tag-page-subtitle">Photos ({{ $photo_pages.Len }})</h2>
{{ partial "photos-list.html" $photo_pages }}
</div>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,28 @@
{{ define "main" }}
{{ if not hugo.IsProduction }}
<aside class="development-info">
<p>template: tags.html</p>
<p>{{debug.Dump .}}</p>
<p><br></p>
</aside>
{{ end }}
<main>
<header class="page-header section">
<div class="container">
<h1>{{ .Title }}</h1>
</div>
</header>
<section class="section">
<div class="container">
<ul class="list-of-all-tags">
{{ range .Data.Terms.ByCount }}
<li>
<a href="{{ .Page.Permalink }}">{{ .Name }}</a>
<span>{{ .Count }}</span>
</li>
{{end}}
</ul>
</div>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,32 @@
<ul class="albums-list">
{{ range . }}
<li>
{{ $album_title := .Title }}
{{ $album_permalink := .Permalink }}
{{ $page := . }}
<figure class="album">
{{ with resources.GetMatch .Params.featured_asset }}
{{/*
1280px (80rem) = 640
*/}}
{{ $smallw := default "640x webp Lanczos" }}
{{ $page.Scratch.Set "small" (.Resize $smallw) }}
{{ $small := $page.Scratch.Get "small" }}
<a href="{{ $album_permalink }}">
<img class="album-cover" src="{{ $small.Permalink }}" alt="{{ $album_title }}" title="{{ $album_title }}">
</a>
{{ end }}
<figcaption class="album-details">
<p class="album-title"><a href="{{ .Permalink }}">{{ .Title }}</a></p>
<p class="album-summary">{{ .Summary }}</p>
</figcaption>
</figure>
</li>
{{end}}
</ul>

View file

@ -0,0 +1,16 @@
{{ $firstH1 :=
(
substr
(
delimit
(
findRE
"^#{1} ([^{\n]+)"
.RawContent
1
)
""
)
2
)
}}

View file

@ -0,0 +1,43 @@
{{ range (.GetTerms "albums") }}
<!-- Get next page -->
{{ $pageReached := false }}
{{ $next := false }}
{{ range .Pages.Reverse }}
{{ if not $next}}
{{ if $pageReached }}
{{ $next = . }}
{{ else if eq .Permalink $.Permalink }}
{{ $pageReached = true}}
{{ end }}
{{ end }}
{{ end }}
<!-- Get previous page -->
{{ $pageReached = false }}
{{ $prev := false }}
{{ range .Pages }}
{{ if not $prev}}
{{ if $pageReached }}
{{ $prev = . }}
{{ else if eq .Permalink $.Permalink }}
{{ $pageReached = true}}
{{ end }}
{{ end }}
{{ end }}
<!-- Print album info -->
<nav class="album-nav">
<header>
<h2>Part of an album:</h2>
<a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
</header>
<div class="nav-buttons">
{{ if $prev }}
<a href="{{ $prev.Permalink }}">← previous</a>
{{ end }}
{{ if $next }}
<a href="{{ $next.Permalink }}">next →</a>
{{ end }}
</div>
</nav>
{{ end }}

View file

@ -0,0 +1,30 @@
{{ with resources.GetMatch .Params.photo_asset }}
{{ with .Exif }}
<dl class="exif metadata">
{{ with .Date }}
<dt class="date">Captured</dt>
<dd class=""><time datetime="{{ .Format "2006-01-02T15:04:05-0700" }}">{{ . | time.Format ":date_full" }}<br>{{ . | time.Format ":time_full" }}</time></dd>
{{ end }}
{{ with .Tags }}
{{ with .FNumber }}
<dt>Aperture</dt>
<dd>f/{{ . }}</dd>
{{ end }}
{{ with .ExposureTime }}
<dt>Exposure</dt>
<dd>{{ . }} s</dd>
{{ end }}
{{ with .ISOSpeedRatings }}
<dt>ISO</dt>
<dd>{{ . }}</dd>
{{ end }}
{{ with .Model }}
<dt>Model</dt>
<dd>{{ . }}</dd>
{{ end }}
{{ end }}
</dl>
{{ end }}
{{ end }} {{/* with asset */}}

View file

@ -0,0 +1,29 @@
{{ $alt := or .Params.alt .Title "image" }}
{{ with resources.GetMatch .Params.photo_asset }}
{{/*
1280px (80rem) = 640,
1600px (100rem) = 960,
1920px (120rem) = 1280
*/}}
{{ $smallw := default "640x webp Lanczos" }}
{{ $mediumw := default "960x webp Lanczos" }}
{{ $largew := default "1280x webp Lanczos" }}
{{ $.Scratch.Set "small" (.Resize $smallw) }}
{{ $.Scratch.Set "medium" (.Resize $mediumw) }}
{{ $.Scratch.Set "large" (.Resize $largew) }}
{{ $small := $.Scratch.Get "small" }}
{{ $medium := $.Scratch.Get "medium" }}
{{ $large := $.Scratch.Get "large" }}
<picture>
<source media="(max-width: 80rem)" srcset="{{ $small.Permalink }}" />
<source media="(max-width: 100rem)" srcset="{{ $medium.Permalink }}" />
<img src="{{ $large.Permalink }}" alt="{{ $alt }}" title="{{ $alt }}">
</picture>
{{ end }} {{/* with asset */}}

View file

@ -0,0 +1,21 @@
<ul class="photos-grid">
{{ range . }}
<li>
<a href="{{ .Permalink }}">
{{ $page := . }}
{{ $alt := or .Title "image" }}
{{ with resources.GetMatch .Params.photo_asset}}
{{ $tinyw := default "480x webp Lanczos" }}
{{ $page.Scratch.Set "tiny" (.Resize $tinyw) }}
{{ $tiny := $page.Scratch.Get "tiny" }}
<img class="photo-asset" src="{{ $tiny.Permalink }}" alt="{{ $alt }}" title="{{ $alt }}">
{{ end }}
</a>
</li>
{{end}}
</ul>

View file

@ -0,0 +1,36 @@
<ul class="photos-list">
{{ range . }}
<li>
<a href="{{ .Permalink }}">
{{ $page := . }}
{{ $alt := or .Title "image" }}
<figure class="photo">
{{ with resources.GetMatch .Params.photo_asset}}
{{ $smallw := default "640x webp Lanczos" }}
{{ $mediumw := default "960x webp Lanczos" }}
{{ $largew := default "1280x webp Lanczos" }}
{{ $page.Scratch.Set "small" (.Resize $smallw) }}
{{ $page.Scratch.Set "medium" (.Resize $mediumw) }}
{{ $page.Scratch.Set "large" (.Resize $largew) }}
{{ $small := $page.Scratch.Get "small" }}
{{ $medium := $page.Scratch.Get "medium" }}
{{ $large := $page.Scratch.Get "large" }}
<picture>
<source media="(max-width: 80rem)" srcset="{{ $small.Permalink }}" />
<source media="(max-width: 100rem)" srcset="{{ $medium.Permalink }}" />
<img class="photo-asset" src="{{ $large.Permalink }}" alt="{{ $alt }}" title="{{ $alt }}">
</picture>
{{ end }}
<figcaption class="photo-details">
<p class="photo-title">{{ .Title }}</p>
<p class="photo-summary">{{ .Summary }}</p>
</figcaption>
</figure>
</a>
</li>
{{end}}
</ul>

154
layouts/partials/seo.html Normal file
View file

@ -0,0 +1,154 @@
{{- $firstH1 := partial "name.html" . }}
{{- $title := or .Title $firstH1 $.File.ContentBaseName }}
{{- $cover := ($.Resources.ByType "image").GetMatch "{*opengraph*}" -}}
{{ $icon := resources.GetMatch (default "" .Site.Params.icon) -}}
{{/*=== title ===*/}}
{{ "<!-- text -->" | safeHTML }}
{{- with .Site.Title }}
<meta name="application-name" property="og:site_name" content="{{ . }}" />
{{- end -}}
{{- if .IsHome}}
{{- with or .Params.name .Site.Title }}
<title>{{ . }}</title>
<meta property="og:title" name="twitter:title" itemprop="name" content="{{ . }}" />
{{- end }}
{{- else }}
<title>{{ or .Params.name (print $title " - " .Site.Title) }}</title>
<meta property="og:title" name="twitter:title" itemprop="name" content="{{ or .Params.name $title }}" />
{{- end -}}
{{/*=== description ===*/}}
{{- with or .Description .Summary .Site.Params.description }}
<meta name="description" itemprop="description" property="og:description" content="{{ . }}" />
<meta name="twitter:description" content="{{ . }}" />
{{- end }}
{{ "<!-- url -->" | safeHTML }}
{{- with .Permalink | absURL}}
<base href="{{ . }}" />
<link rel="canonical" href="{{ or $.Params.canonical . }}" />
<meta name="url" property="og:url" itemprop="url" content="{{ . }}" />
<meta name="twitter:url" content="{{ . }}" />
{{- end -}}
{{/*=== image ===*/}}
{{- $staticIcon := "icon.png" | absURL -}}
{{- with or $cover $icon }}
{{ "<!-- image -->" | safeHTML }}
<meta property="og:image" itemprop="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 property="og:image" itemprop="image" content="{{ $staticIcon }}" />
<meta name="twitter:image" content="{{ $staticIcon }}" />
<meta name="twitter:image:src" content="{{ $staticIcon }}" />
{{- end -}}
{{/*=== extra params? ===*/}}
{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
{{- with .Params.videos }}{{- range . }}
<meta property="og:video" content="{{ . | absURL }}" />
{{ end }}{{ end }}
{{/*=== article ===*/}}
{{ with or .Params.author .Site.Params.author -}}
{{ "<!-- author -->" | safeHTML }}
<meta name="author" property="article:author" content="{{ . }}" />
{{- end }}
<meta property="article:publisher" content="{{ .Site.BaseURL }}" />
{{ "<!-- time -->" | safeHTML }}
{{ with .Date -}}
<meta property="article:published_time" itemprop="datePublished" content={{ .Format "2006-01-02T03:04:05Z" | safeHTML }} />
{{ end -}}
{{ with .Lastmod -}}
<meta property="article:modified_time" itemprop="dateModified" content={{ .Format "2006-01-02T03:04:05Z" | safeHTML }} />
{{ end -}}
{{/*=== section and keywords ===*/}}
{{- "<!-- keywords -->" | safeHTML }}
{{ with.Params.category -}}
<meta property="article:section" content="{{ . }}" />
{{- end -}}
{{- with .Params.tags }}
<meta property="article:tag" itemprop="keywords" name="keywords" content='{{ delimit . " "}}' />
{{- end -}}
{{- if isset .Params "date" }}
{{ "<!-- article metadata -->" | safeHTML }}
<meta property="og:type" content="article" />
<meta itemprop="wordCount" content="{{ .WordCount }}" />
<script defer type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Article",
"headline": {{ $title }},
"author": {
"@type": "Person",
"name": {{ or .Params.author .Site.Params.author }},
"url": {{ .Site.BaseURL }}
},
"datePublished": {{ .Date.UTC.Format "2006-01-02T03:04:05Z" }},
"description": {{ (or .Description .Summary) | plainify }},
"wordCount": {{ .WordCount }},
"mainEntityOfPage": {{.Permalink}},
"dateModified": "{{ .Lastmod.UTC.Format "2006-01-02T03:04:05Z" }}",
"image": {
"@type": "ImageObject",
"url": {{ with or $cover $icon }}{{ .Permalink | absURL }}{{ end }}
},
"publisher": {
"@type": "WebSite",
"name": {{ .Site.Title }},
"url": {{ .Site.BaseURL }},
"image": {
"@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": "WebPage",
"name": {{ .Title }},
"url": {{ .Permalink }},
"description": {{ (or .Description .Summary) | plainify }},
"image": {
"@type": "ImageObject",
"url": {{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 -}}
{{/* robots */}}
{{ "<!-- robots -->" | safeHTML }}
<meta name="robots" content="index,follow" />
<meta name="googlebot" content="index,follow" />

View file

@ -0,0 +1,12 @@
<footer class="site-footer" style="color: #aaa">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="text-decoration: none; color: inherit;">
<div>
{{ partial "svg/cib.creative-commons.html" . }}
{{ partial "svg/cib.creative-commons-by.html" . }}
{{ partial "svg/cib.creative-commons-nc.html" . }}
{{ partial "svg/cib.creative-commons-sa.html" . }}
</div>
<p style="text-decoration: underline; display: inline-block">CC BY-NC-SA 4.0</p>
</a>
<p>birdsounds.media</p>
</footer>

View file

@ -0,0 +1,41 @@
<header class="site-header">
<header class="masthead">
<a href="{{ .Site.BaseURL }}">
<img src="/koken_y.png" alt="birdsounds.media logo">
</a>
</header>
<input class="menu-btn" type="checkbox" id="menu-btn" name="menu-btn" />
<label class="menu-icon" for="menu-btn">
{{ partial "svg/mdi.menu.html" . }}
</label>
<div class="navs">
{{ $currentPage := . }}
<nav class="main">
{{ with .Site.Menus.main }}
<ul>
{{ range . }}
<li class="{{ if $currentPage.IsMenuCurrent "main" .}}active{{ end }}"><a href="{{ or .PageRef .URL }}">{{ .Name }}{{ if not .PageRef }}{{ partial "svg/oi.external-link.html" .}}{{ end }}</a></li>
{{ end }}
</ul>
{{ end }}
</nav>
<nav class="second">
{{ with .Site.Menus.second }}
<ul>
{{ range . }}
<li class="{{ if $currentPage.IsMenuCurrent "second" .}}active{{ end }}"><a href="{{ or .PageRef .URL }}">{{ .Name }}{{ if not .PageRef }}{{ partial "svg/oi.external-link.html" .}}{{ end }}</a></li>
{{ end }}
</ul>
{{ end }}
</nav>
<nav class="third">
{{ with .Site.Menus.third }}
<ul>
{{ range . }}
<li class="{{ if $currentPage.IsMenuCurrent "third" .}}active{{ end }}"><a href="{{ or .PageRef .URL }}">{{ .Name }}{{ if not .PageRef }}{{ partial "svg/oi.external-link.html" .}}{{ end }}</a></li>
{{ end }}
</ul>
{{ end }}
</nav>
</div>
</header>

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="currentColor" d="M20.181 12.15v6.338h-1.768v7.531h-4.819v-7.525h-1.769V12.15c0-.275.1-.512.288-.706a.967.967 0 0 1 .706-.294h6.369c.256 0 .488.1.694.294c.194.2.3.431.3.706zm-6.344-3.981c0-1.456.719-2.188 2.156-2.188s2.156.731 2.156 2.188c0 1.438-.719 2.156-2.156 2.156s-2.156-.719-2.156-2.156M15.975.5C24.837.5 31.5 7.381 31.5 16c0 9.194-7.406 15.5-15.525 15.5C7.6 31.5.5 24.656.5 16C.5 7.694 7.044.5 15.975.5m.05 2.794C8.638 3.294 3.294 9.413 3.294 16c0 6.863 5.7 12.675 12.731 12.675c6.45 0 12.675-5.069 12.675-12.675c.006-7.113-5.637-12.706-12.675-12.706"/></svg>

After

Width:  |  Height:  |  Size: 663 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="currentColor" d="M15.975.5C24.712.5 31.5 7.244 31.5 16c0 9.2-7.406 15.5-15.525 15.5C7.569 31.5.5 24.575.5 16C.5 7.694 7.044.5 15.975.5M3.988 11.819c-.463 1.275-.694 2.669-.694 4.181c0 6.931 5.756 12.65 12.731 12.65c7.65 0 11.075-6.362 11.156-6.506l-5.837-2.6c-.481 2.319-2.575 3.313-4.262 3.463v2.381h-1.8v-2.387c-1.719-.019-3.288-.637-4.706-1.856l2.131-2.156c1.981 1.837 5.4 1.988 5.4-.137a1.2 1.2 0 0 0-.412-.944c-.888-.375-.113-.006-13.706-6.087zm12.037-8.55c-2.4 0-7.025.544-10.656 5.812l5.925 2.656c.625-1.956 2.525-2.681 3.988-2.769V6.587h1.8v2.381c1.419.075 2.712.556 3.875 1.438l-2.019 2.075c-2.669-1.869-5.219-.5-4.375.694c3.337 1.506 2.738 1.238 5.813 2.6l7.944 3.544c.256-1.088.387-2.194.387-3.319c0-3.563-1.238-6.563-3.706-8.994c-2.456-2.494-5.45-3.738-8.975-3.738z"/></svg>

After

Width:  |  Height:  |  Size: 883 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="currentColor" d="M15.975.5C24.837.5 31.5 7.381 31.5 16c0 9.194-7.406 15.5-15.525 15.5C7.6 31.5.5 24.656.5 16C.5 7.694 7.044.5 15.975.5m.05 2.794C8.638 3.294 3.294 9.413 3.294 16c0 6.863 5.7 12.675 12.731 12.675c6.45 0 12.675-5.069 12.675-12.675c.006-7.113-5.637-12.706-12.675-12.706M9.106 13.813c.813-5.244 5.031-5.981 6.806-5.981c6.237 0 7.969 5.156 7.969 8.387c0 3.975-2.563 8.306-8.056 8.306c-2.431 0-6.194-1.25-6.837-6.063h3.906c.094 1.881 1.225 2.825 3.406 2.825c1.456 0 3.625-1.138 3.625-5.175c0-5.156-3.069-5.038-3.544-5.038c-2.069 0-3.232.913-3.488 2.738h1.137l-3.075 3.075l-3.063-3.075z"/></svg>

After

Width:  |  Height:  |  Size: 701 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 32 32"><path fill="currentColor" d="m15.864 13.429l-2.076 1.08c-.589-1.224-1.577-1.246-1.716-1.246c-1.383 0-2.076.913-2.076 2.74c0 1.473.576 2.74 2.076 2.74c.905 0 1.541-.443 1.911-1.329l1.909.969c-.386.719-1.606 2.436-4.069 2.436c-1.413 0-4.623-.645-4.623-4.816c0-3.668 2.687-4.816 4.539-4.816c1.92-.001 3.294.747 4.124 2.241zm8.941 0l-2.049 1.08c-.594-1.236-1.608-1.246-1.744-1.246c-1.384 0-2.076.913-2.076 2.74c0 1.472.577 2.74 2.076 2.74c.903 0 1.541-.443 1.909-1.329l1.938.969c-.131.234-1.337 2.436-4.068 2.436c-1.418 0-4.622-.617-4.622-4.816c0-3.667 2.686-4.816 4.539-4.816c1.919-.001 3.286.747 4.097 2.241zM15.972.503C7.046.503.5 7.694.5 16.003c0 8.656 7.1 15.5 15.472 15.5c8.121 0 15.528-6.304 15.528-15.5c0-8.617-6.664-15.5-15.528-15.5m.055 28.176c-7.034 0-12.731-5.815-12.731-12.676c0-6.589 5.339-12.704 12.732-12.704c7.033 0 12.676 5.591 12.676 12.704c0 7.606-6.23 12.676-12.678 12.676z"/></svg>

After

Width:  |  Height:  |  Size: 984 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M11 14c1 0 2.05.16 3.2.44c-.81.87-1.2 1.89-1.2 3.06c0 .89.25 1.73.78 2.5H3v-2c0-1.19.91-2.15 2.74-2.88C7.57 14.38 9.33 14 11 14m0-2c-1.08 0-2-.39-2.82-1.17C7.38 10.05 7 9.11 7 8c0-1.08.38-2 1.18-2.82C9 4.38 9.92 4 11 4c1.11 0 2.05.38 2.83 1.18C14.61 6 15 6.92 15 8c0 1.11-.39 2.05-1.17 2.83S12.11 12 11 12m7.5-2H22v2h-2v5.5a2.5 2.5 0 0 1-2.5 2.5a2.5 2.5 0 0 1-2.5-2.5a2.5 2.5 0 0 1 2.5-2.5c.36 0 .69.07 1 .21z"/></svg>

After

Width:  |  Height:  |  Size: 532 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M15 13h1.5v2.82l2.44 1.41l-.75 1.3L15 16.69zm4-5H5v11h4.67c-.43-.91-.67-1.93-.67-3a7 7 0 0 1 7-7c1.07 0 2.09.24 3 .67zM5 21a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2h1V1h2v2h8V1h2v2h1a2 2 0 0 1 2 2v6.1c1.24 1.26 2 2.99 2 4.9a7 7 0 0 1-7 7c-1.91 0-3.64-.76-4.9-2zm11-9.85A4.85 4.85 0 0 0 11.15 16c0 2.68 2.17 4.85 4.85 4.85A4.85 4.85 0 0 0 20.85 16c0-2.68-2.17-4.85-4.85-4.85"/></svg>

After

Width:  |  Height:  |  Size: 487 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M12 11.5A2.5 2.5 0 0 1 9.5 9A2.5 2.5 0 0 1 12 6.5A2.5 2.5 0 0 1 14.5 9a2.5 2.5 0 0 1-2.5 2.5M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7"/></svg>

After

Width:  |  Height:  |  Size: 277 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="m15 19l-6-2.11V5l6 2.11M20.5 3h-.16L15 5.1L9 3L3.36 4.9c-.21.07-.36.25-.36.48V20.5a.5.5 0 0 0 .5.5c.05 0 .11 0 .16-.03L9 18.9l6 2.1l5.64-1.9c.21-.1.36-.25.36-.48V3.5a.5.5 0 0 0-.5-.5"/></svg>

After

Width:  |  Height:  |  Size: 305 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>

After

Width:  |  Height:  |  Size: 159 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.62L12 2L9.19 8.62L2 9.24l5.45 4.73L5.82 21z"/></svg>

After

Width:  |  Height:  |  Size: 211 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2m-5.15 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56M14.34 14H9.66c-.1-.66-.16-1.32-.16-2s.06-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2M12 19.96c-.83-1.2-1.5-2.53-1.91-3.96h3.82c-.41 1.43-1.08 2.76-1.91 3.96M8 8H5.08A7.92 7.92 0 0 1 9.4 4.44C8.8 5.55 8.35 6.75 8 8m-2.92 8H8c.35 1.25.8 2.45 1.4 3.56A8 8 0 0 1 5.08 16m-.82-2C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2M12 4.03c.83 1.2 1.5 2.54 1.91 3.97h-3.82c.41-1.43 1.08-2.77 1.91-3.97M18.92 8h-2.95a15.7 15.7 0 0 0-1.38-3.56c1.84.63 3.37 1.9 4.33 3.56M12 2C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2"/></svg>

After

Width:  |  Height:  |  Size: 851 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 8 8"><path fill="currentColor" d="M0 0v8h8V6H7v1H1V1h1V0zm4 0l1.5 1.5L3 4l1 1l2.5-2.5L8 4V0z"/></svg>

After

Width:  |  Height:  |  Size: 179 B

BIN
static/koken_y.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB