First version of the theme

This commit is contained in:
Gregory Trolliet 2021-10-26 11:34:30 +02:00
commit 8dd30f6eb8
61 changed files with 1658 additions and 0 deletions

11
CHANGELOG.md Normal file
View file

@ -0,0 +1,11 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [v0.1.0] - 2021-10-26
### Added
* First version of the theme

20
LICENSE Normal file
View file

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2021 Gregory Trolliet
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

104
README.md Normal file
View file

@ -0,0 +1,104 @@
# Hugo theme : Frigg
This is a dark and classy Hugo theme.
## Installation
To install Simple-site theme, you can simply clone the repository
to your site's theme directory.
```bash
$ mkdir themes
$ cd themes
$ git clone https://git.vulgarisons.info/raghnarok/hugo_frigg.git snotra
```
Don't forget to change the theme in your config.toml file.
## Configuration
### Base
```toml
baseurl = "https://yourdoma.in" # The base url of your Hugo website
title = "Title" # The title of your website
author = "Author" # The author of the website
language = "fr"
theme = "frigg" # The Hugo theme
```
### Menu
The menu is generated following all the files in the root directory
and the articles in the *blog* directory.
To avoid the *blog* entry to be pluralized,
add the following option to your config file:
```toml
pluralizeListTitles = false
```
### Description
You can use some parameters to fill meta tags and bases images:
```toml
[params]
description = "" # Description for the meta tag
favicon = "" # Favicon URL
logo = "" # Logo URL
keyword = "" # Keywords for the meta tag
```
The favicon is only the filename,
the file should be in *static/images* directory.
If favicon isn't set, the default test values are favicon.svg and favicon.png.
If none exists, there will be no favicon.
### Home page
The home page use one avatar, the name and one description.
Every pages get a list of social networks and others links.
For the social networks, see *Social Networks* chapter.
```toml
[params]
author = "Author" # The author of the website
info = "Your infos" # Displayed under author name
avatar = "file.png" # Placed in static/images
```
### Twitter:card
Twitter cards are automaticly generated.
If you want tho have the twitter:site meta generated,
add the following option to your config file:
```toml
[params]
twitterUser = "youruser" # Your Twitter account without @
```
### Custom CSS
```toml
[params]
custom_css = ["style.css"] # Your own css files
```
### Social Networks
You can also set some of your networks accounts to display on the home page.
Every social network (or not so network) have to be described with thoses
options:
```toml
[[params.social]]
name = "Title of the entry" # Title, used on hover
icon = "gitea" # Icon to use
weight = 1 # Sort order
url = "https://gitea.io/user" # Link to your account
```
You can also add some non social elements, you only need to have an icon.

10
archetypes/default.md Normal file
View file

@ -0,0 +1,10 @@
---
author: "Gregory Trolliet"
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
description: ""
images: []
categories: [""]
tags: ["",""]
draft: true
---

12
data/snotra/mois.yaml Normal file
View file

@ -0,0 +1,12 @@
1: "janvier"
2: "février"
3: "mars"
4: "avril"
5: "mai"
6: "juin"
7: "juillet"
8: "août"
9: "septembre"
10: "octobre"
11: "novembre"
12: "décembre"

51
i18n/fr.toml Normal file
View file

@ -0,0 +1,51 @@
[categories]
one = "catégorie"
other = "catégories"
[tags]
one = "tag"
other = "tags"
[articles]
one = "archive"
other = "archives"
[reading_time]
one = "Une minute de lecture"
other = "{{ .Count }} minutes de lecture"
[previous_article]
other = "article précédent"
[next_article]
other = "article suivant"
[alt_image]
other = "Image de l'article:"
[alt_avatar]
other = "Avatar de {{ .Site.Params.author }}"
[go_home]
other = "Retour à la page d'accueil"
[error_404]
other = "Erreur 404 : Page non trouvée"
[error_404_title]
other = "Title link"
[error_404_txt]
other = "Désolé, la page à laquelle vous essayez d'accéder n'existe pas."
[error_404_reasons]
other = """Raisons possibles :
<ul>
<li>La page que vous cherchez a été déplacée ou supprimée&#8239;;</li>
<li>Vous avez peut-être utilisé un lien obsolète ou rompu&#8239;;</li>
<li>Vous avez peut-être mal saisi l'adresse
(<abbr title="Uniform Resource Locator">URL</abbr>).</li>
</ul>"""
[page_top]
other = "revenir en haut de page"

20
layouts/404.html Normal file
View file

@ -0,0 +1,20 @@
{{ define "main"}}
<main id="wrapper">
<section class="container error_page">
<div>
<h1 id="title">
{{ with .Site.Params.error404_definitionUrl }}
<a title="{{ i18n "error_404_title" }}" href="{{ . }}">
{{ end }}
{{ htmlUnescape (i18n "error_404") }}
{{ with .Site.Params.error404_definitionUrl }}
</a>
{{ end }}
</h1>
<p>{{ i18n "error_404_txt" }}</p>
<p>{{ i18n "error_404_reasons" | markdownify }}</p>
</div>
<footer><a href="{{ "/" | relURL }}">{{ i18n "go_home" }}</a></footer>
</section>
</main>
{{ end }}

View file

@ -0,0 +1,7 @@
<h{{ .Level }} id="{{ .Anchor | safeURL }}">
<a class="anchor" href="#{{ .Anchor | safeURL }}">
#
<!-- {{ strings.Repeat .Level "#" }} -->
</a>
{{ .Text | safeHTML }}
</h{{ .Level }}>

View file

@ -0,0 +1,12 @@
{{ partial "header.html" . }}
<body>
<!-- Code that all your templates share, like a header -->
{{ block "main" . }}
<!-- The part of the page that begins to differ between templates -->
{{ end }}
{{ block "footer" . }}
<!-- More shared code, perhaps a footer but that can be overridden if need be in -->
{{ end }}
</body>
</html>

6
layouts/_default/li.html Normal file
View file

@ -0,0 +1,6 @@
<li>
<span class="date">
{{ .Date.Day }} {{ index $.Site.Data.snotra.mois (printf "%d" .Date.Month) }} {{ .Date.Year }}
</span>
<a class="title" href="{{ .Params.ExternalLink | default .RelPermalink }}">{{ .Title }}</a>
</li>

View file

@ -0,0 +1,28 @@
{{ partial "header.html" . }}
<body>
<main class="wrapper">
{{ partial "navigation.html" . }}
<section id="blog-list" class="container liste">
<article>
<header>
<h1 class="list-title">
{{ if eq .Kind "taxonomy" }}
{{ i18n .Data.Plural 1 | title }}: {{ .Title }}
{{ else if eq .Kind "taxonomyTerm" }}
{{ i18n .Data.Plural | title }}
{{ end }}
</h1>
</header>
<ul class="articles-list">
{{- range .Paginator.Pages -}}
{{- .Render "li" -}}
{{- end -}}
</ul>
</article>
{{ .Content }}
{{ partial "pagination.html" . }}
</section>
</main>
</body>
</html>

26
layouts/_default/rss.xml Normal file
View file

@ -0,0 +1,26 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{ with .OutputFormats.Get "RSS" }}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end }}
{{ range .Site.RegularPages }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid>
<description>{{ .Content | html }}</description>
</item>
{{ end }}
</channel>
</rss>

View file

@ -0,0 +1,16 @@
{{ partial "header.html" . }}
<body>
<main class="wrapper">
{{ partial "navigation.html" . }}
<section id="site-page" class="container page">
<article>
<header>
<h1 class="site-title">{{ .Title }}</h1>
</header>
{{ .Content }}
</article>
</section>
{{ partial "footer.html" . }}
</main>
</body>
</html>

5
layouts/archives/li.html Normal file
View file

@ -0,0 +1,5 @@
<a class="archive hidden_link" href="{{ .Params.ExternalLink | default .RelPermalink }}">
<img class="thumbnail" src="{{ .RelPermalink }}/thumb.jpg" />
<span class="description">{{ .Title }}</span>
<span class="more">&rarr; plus d'infos</span>
</a>

View file

@ -0,0 +1,24 @@
{{ partial "header.html" . }}
<body>
<main class="wrapper">
{{ partial "navigation.html" . }}
<section id="blog-list" class="container liste">
<article>
<header>
<h1 class="list-title">
{{ i18n "articles" | title }}
</h1>
</header>
<div class="archives-list">
{{- range .Paginator.Pages -}}
{{- .Render "li" -}}
{{- end -}}
</div>
</article>
{{ partial "pagination.html" . }}
</section>
{{ partial "footer.html" . }}
</main>
</body>
</html>

View file

@ -0,0 +1,63 @@
{{ partial "header.html" . }}
<body>
<main class="wrapper">
{{ partial "navigation.html" . }}
<section class="container archive">
<article>
<header class="post-header">
<h1 class="post-title">
{{ .Title }}
</h1>
{{ $img := newScratch }}
{{ $folder := (print "/content/" .File.Dir "gallery/") }}
{{ $files := readDir $folder }}
{{ range sort $files "Name" "asc" }}
{{ if not .IsDir }}
{{ $img.Add "list" (slice .Name) }}
{{ end }}
{{ end }}
{{ with ($img.Get "list") }}
{{ $img.Set "max" (add 1 (int (index (split (index (split (index (last 1 .) 0) ".") 0) "img") 1))) }}
{{ end }}
{{ range $index, $val := $img.Get "list" }}
{{ $curr := index (split $val ".") 0 }}
{{ $prec := mod (add (sub $index 1) ($img.Get "max")) ($img.Get "max") }}
{{ $next := mod (add $index 1) ($img.Get "max") }}
<a class="thumb hidden_link" href="#img{{ $index }}">
<img src="gallery/thumb/{{ $curr }}.jpg">
</a>
<!-- lightbox container hidden with CSS -->
<div class="lightbox" id="{{ $curr }}">
<a href="#img{{ $prec }}" class="light-btn hidden_link btn-prev"><<</a>
<a href="#_" class="btn-close hidden_link">X</a>
<img src="gallery/{{ $val }}">
<a href="#img{{ $next }}" class="light-btn hidden_link btn-next">>></a>
</div>
{{ end }}
<div class="post-meta">
<!--div class="date">
<span class="posted-on">
<img class="page-icon header-icon" src="/svg/calendar.svg"/>
<time datetime='{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}'>
Article publié le {{ .Date.Day }} {{ index $.Site.Data.snotra.mois (printf "%d" .Date.Month) }} {{ .Date.Year }}
</time>
</span>
<span class="reading-time">
<img class="page-icon header-icon" src="/svg/clock.svg"/>
{{ i18n "reading_time" .ReadingTime }}
</span>
</div-->
{{ partial "categories.html" .Page.Params.Categories }}
{{ partial "tags.html" .Page.Params.Tags }}
</div>
</header>
<div class="archive-body">
{{ .Content }}
</div>
{{ partial "article-footer.html" . }}
</article>
</section>
{{ partial "footer.html" . }}
</main>
</body>
</html>

21
layouts/index.html Normal file
View file

@ -0,0 +1,21 @@
{{ partial "header.html" . }}
<body>
<main class="wrapper">
{{ partial "navigation.html" . }}
<div class="centered">
{{ partial "author.html" . }}
{{ if false }}
{{ range .Site.RegularPages }}
<header>
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
</header>
<article>
{{ .Summary }}
</article>
{{ end }}
{{ end }}
</div>
{{ partial "footer.html" . }}
</main>
</body>
</html>

View file

@ -0,0 +1,24 @@
<footer class="archive-footer">
<span class="footer-return">
<a href="#">{{ i18n "page_top" | humanize }}</a>
</span><br/>
{{ if .PrevInSection }}
<span class="footer-link">
<span class="label">{{ i18n "previous_article" | humanize }}:</span>
<a href="{{ .PrevInSection.RelPermalink }}">
{{ .PrevInSection.Title }}
</a>
{{ if .NextInSection }}
<span class="spacer"></span>
{{ end }}
</span>
{{ end }}
{{ if .NextInSection }}
<span class="footer-link">
<span class="label">{{ i18n "next_article" | humanize }}:</span>
<a href="{{ .NextInSection.RelPermalink }}">
{{ .NextInSection.Title }}
</a>
</span>
{{ end }}
</footer>

View file

@ -0,0 +1,9 @@
<div id="author">
<div id="avatar" aria-hidden="true">
<img src="images/{{ .Site.Params.avatar }}" alt="avatar"/>
</div>
<div id="description">
<h1>{{ .Site.Params.author }}</h1>
<h2>{{ .Site.Params.info }}</h2>
</div>
</div>

View file

@ -0,0 +1,13 @@
{{ if . }}
<div class="categories">
<img class="page-icon header-icon" src="/svg/folder.svg"/>
{{ range $index, $el := . }}
{{ if gt $index 0 }}
<span class="separator"></span>
{{ end }}
<a href="{{ ( printf "categories/%s/" ( $el | urlize ) ) | relLangURL }}">
{{ . }}
</a>
{{ end }}
</div>
{{ end }}

View file

@ -0,0 +1,5 @@
<div id="footer">
<div id="footer-name" class="footer-element">{{ .Site.Params.name }}</div>
<!--div id="footer-mail" class="footer-element"><a href="mailto:{{ .Site.Params.mail }}">{{ .Site.Params.mail }}</a></div-->
{{ partial "social.html" . }}
</div>

View file

View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang='{{ .Site.Language.Lang }}'>
<head>
<title>{{ .Title }}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
{{ if .Description }}
<meta name="description" content="{{ .Description }}">
{{ else }}
<meta name="description" content="{{ .Site.Params.description }}">
{{ end }}
{{ if .Params.Tags }}
<meta name="keywords" content="{{ delimit .Params.Tags ", "}}">
{{ else }}
<meta name="keywords" content="{{ .Site.Params.keywords }}">
{{ end }}
{{ if .Params.author }}
<meta name="author" content="{{ .Params.author }}">
{{ else }}
<meta name="author" content="{{ .Site.Params.author }}">
{{ end }}
<link rel="stylesheet" href="/css/style.css">
<link href="{{ .Site.RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}">
{{ if and (.Site.Params.favicon) (fileExists (print "static/images/" .Site.Params.favicon)) }}
{{ $name := .Site.Params.favicon }}
{{ $splitted := split $name "." }}
{{ $extension := index $splitted 1 }}
{{ if ( in "svg" $extension) }}
<link rel="icon" type="image/svg+xml" href="{{ $.Site.BaseURL }}images/{{ $name }}" sizes="any">
{{ else if (in "gif png" $extension) }}
<link rel="icon" type="image/{{ $extension }}" href="{{ $.Site.BaseURL }}images/{{ $name }}">
{{ end}}
{{ else if (fileExists "static/images/favicon.svg") }}
<link rel="icon" type="image/svg+xml" href="{{ $.Site.BaseURL }}images/favicon.svg">
{{ else if (fileExists "static/images/favicon.png") }}
<link rel="icon" type="image/png" href="{{ $.Site.BaseURL }}images/favicon.png">
{{ end }}
{{ partial "opengraph.html" . }}
{{ range .Site.Params.custom_css }}
<link rel="stylesheet" href="{{ . | relURL }}"/>
{{ end }}
{{ hugo.Generator }}
</head>

View file

@ -0,0 +1,22 @@
<nav id="navigation">
<section class="navigation-container">
<a id="navigation-title" href="/">
{{ .Site.Title }}
</a>
<input type="checkbox" id="menu-toggle" />
<label class="menu-button" for="menu-toggle">
<div class="menu-button-inner">
<div class="menu-button-image"></div>
</div>
</label>
<ul id="navigation-list">
{{ range .Site.Home.Pages }}
<li class="navigation-item">
<a href="{{ .RelPermalink }}">{{ .Name }}</a>
</li>
{{ end }}
</ul>
</section>
</nav>

View file

@ -0,0 +1,38 @@
<meta name="twitter:card" content="summary_large_image"/>
{{ with .Site.Params.twitterUser }}
<meta name="twitter:site" content="@{{ . }}"/>
{{ end }}
<meta name="twitter:title" content="{{ .Title }}"/>
{{ if .Description }}
<meta name="twitter:description" content="{{ .Description }}"/>
{{ else }}
<meta name="twitter:description" content="{{ .Site.Params.description }}"/>
{{ end }}
<meta property="og:title" content="{{ .Title }}" />
{{ if .Description }}
<meta property="og:description" content="{{ .Description }}"/>
{{ else }}
<meta property="og:description" content="{{ .Site.Params.description }}"/>
{{ end }}
{{ if eq .Kind "page" }}
<meta property="og:type" content="article" />
{{ else }}
<meta property="og:type" content="website" />
{{ end }}
<meta property="og:url" content="{{ .Permalink }}" />
{{ $title := .Title }}
{{if .Params.images }}
{{ $baseUrl := .Permalink }}
{{ $altText := i18n "alt_image" }}
{{ range first 1 .Params.images }}
<meta property="og:image" content="{{ $baseUrl }}{{ . }}"/>
<meta property="og:image:alt" content="{{ $altText }} {{ $title }}"/>
{{ end }}
{{ else }}
<meta property="og:image" content="{{ .Site.BaseURL }}images/avatar.png"/>
<meta property="og:image:alt" content="{{ i18n "alt_avatar" . }}"/>
{{ end }}
<meta property="og:updated_time" content="{{ .Site.LastChange }}" />
<meta property="og:site_name" content="{{ .Site.Title }}" />

View file

@ -0,0 +1,51 @@
{{ $paginator := .Paginator }}
{{ $adjacent_links := 2 }}
{{ $max_links := (add (mul $adjacent_links 2) 1) }}
{{ $lower_limit := (add $adjacent_links 1) }}
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
{{ if gt $paginator.TotalPages 1 }}
<ul class="pagination">
{{ if $paginator.HasPrev }}
{{ if ne $paginator.PageNumber 2 }}
<li><a href="{{ $paginator.First.URL }}">&laquo;</a></li>
{{ end }}
<li class="hidden"><a href="{{ $paginator.Prev.URL }}">&lsaquo;</a></li>
{{ end }}
{{ range $paginator.Pagers }}
{{ $.Scratch.Set "page_number_flag" false }}
{{ if gt $paginator.TotalPages $max_links }}
{{ if le $paginator.PageNumber $lower_limit }}
{{ if le .PageNumber $max_links }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
{{ else if ge $paginator.PageNumber $upper_limit }}
{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
{{ else }}
{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
{{ end }}
{{ else }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
{{ if eq ($.Scratch.Get "page_number_flag") true }}
{{ if eq . $paginator }}
<li>{{ .PageNumber }}</li>
{{ else }}
<li><a href="{{ .URL }}">{{ .PageNumber }}</a></li>
{{ end }}
{{ end }}
{{ end }}
{{ if $paginator.HasNext }}
<li class="hidden"><a href="{{ $paginator.Next.URL }}">&rsaquo;</a></li>
{{ if ne $paginator.PageNumber (sub $paginator.TotalPages 1) }}
<li><a href="{{ $paginator.Last.URL }}">&raquo;</a></li>
{{ end }}
{{ end }}
</ul>
{{ end }}

View file

@ -0,0 +1,11 @@
{{ with .Site.Params.social }}
<ul id="social">
{{ range sort . "weight" }}
<li class="social-element">
<a href="{{ safeURL .url }}" rel="me" aria-label="{{ .name }}" title="{{ .name }}">
<img class="social-icon" src="{{ .Site.BaseURL }}/svg/{{ .icon }}.svg" alt="{{ .name }}" aria-hidden="true">
</a>
</li>
{{ end }}
</ul>
{{ end }}

View file

@ -0,0 +1,11 @@
{{ if . }}
<div class="tags">
<img class="page-icon header-icon" src="/svg/tag.svg"/>
{{ range $index, $el := . }}
{{ if gt $index 0 }}
<span class="separator"></span>
{{ end }}
<a href="{{ ( printf "tags/%s/" ( $el | urlize ) ) | relLangURL }}">{{ . }}</a>
{{ end }}
</div>
{{ end }}

View file

@ -0,0 +1,42 @@
{{ $img := $.Page.Resources.GetMatch (.Get "src")}}
{{ $name_splitted := split $img.RelPermalink "." }}
{{ $name_base := index $name_splitted 0 }}
{{ $ext_base := index $name_splitted 1 }}
<figure {{ with .Get "class" }} class="{{ . }}"{{ end }}>
{{ with .Get "link" }}
<a href="{{ . | absURL }}">
{{ else }}
<a href="{{ $img.RelPermalink }}">
{{ end }}
<picture>
{{ if ( in "svg ico gif" $ext_base ) }}
<img src="{{ $img.RelPermalink }}"
{{ with .Get "alt"}} alt="{{ . }}"{{ end }}
{{ with .Get "title"}} title="{{ . }}"{{ end }}/>
{{ else }}
<source srcset="{{ $name_base }}.thumb.avif" type="image/avif"/>
<source srcset="{{ $name_base }}.thumb.webp" type="image/webp"/>
<img src="{{ $name_base }}.thumb.{{ $ext_base }}"
{{ with .Get "alt"}} alt="{{ . }}"{{ end }}
{{ with .Get "title"}} title="{{ . }}"{{ end }}/>
{{ end }}
</picture>
</a>
{{ if .Get "caption" }}
<figcaption>
<p>{{ .Get "caption" }}
{{ if .Get "attr" }}
<span class="attribution">
{{ with .Get "attrlink" }}
<a href="{{ . }}">
{{ end }}
{{ .Get "attr" }}
{{ with .Get "attrlink" }}
</a>
{{ end }}
</span>
{{ end }}
</p>
</figcaption>
{{ end }}
</figure>

View file

@ -0,0 +1,18 @@
<blockquote {{ with .Get "class" }}class="{{ . }}"{{ end }}{{ with .Get "url" }} cite="{{ . }}" {{ end }}>
{{ $s := split (trim .Inner "\t \n") "\n\n" }}
{{ if eq ( first 1 $s) ( last 1 $s )}}
<p>{{ .Inner | markdownify }}</p>
{{ else }}
{{ .Inner | markdownify }}
{{ end }}
{{ if .Get "author" }}
<footer>
<cite>
{{ with .Get "url" }}
<a href="{{ . }}" {{ with $.Get "title"}}title="{{ . }}"{{ end }}>
{{ end }}
{{ .Get "author" | markdownify }}
{{ with .Get "url" }}</a>{{end}}</cite>
</footer>
{{ end }}
</blockquote>

View file

@ -0,0 +1,3 @@
<div class="toc">
{{ .Page.TableOfContents }}
</div>

View file

@ -0,0 +1,8 @@
<figure class="tabular {{ with .Get "class"}}{{ . }}{{ end }}">
{{ .Inner | markdownify }}
{{ with .Get "title" }}
<figcaption>
<p>{{ . }}</p>
</figcaption>
{{ end }}
</figure>

876
static/css/style.css Normal file
View file

@ -0,0 +1,876 @@
/******************* Constants *******************/
:root {
--font-color: #EFEFEF;
--font-color_rgb: 239, 239, 239;
--font-color-em: #8C8C8C;
--background-color: #1C1C1C;
--background-color-light: #252525;
--background-color-dark: #121212;
--avatar-background: #B6B6B6;
--color01: #799479;
--color01_bright: #58af58;
--color02: #8f8071;
--color02_bright: #b88a5b;
--color03: #871818;
--image-margin-side: 2.5em;
--content-width: 900px;
}
/******************* Page *******************/
* {
box-sizing: border-box;
}
html {
background-color: var(--background-color);
font-family: Lato, Helvetica, sans-serif;
font-size: medium;
color: var(--font-color);
}
@media only screen and (min-width: 768px) {
html {
font-size: large;
}
}
body {
margin: 0;
}
p, ul, ol {
line-height: 1.6em;
}
/******************* Links *******************/
a {
text-decoration: none;
color: var(--font-color);
}
a:not(.anchor):not(.hidden_link) {
border-bottom: 1px dotted;
transition: box-shadow 0.2s ease, outline-offset 0.2s ease, transform 0.2s ease, background 0.4s ease;
}
a:visited {
color: var(--font-color);
}
a:hover {
outline: 1px solid;
outline-offset: .3em;
}
a:not(.anchor):not(.hidden_link):hover {
border-bottom: 1px dashed;
}
a:not(.anchor):not(.hidden_link):active {
border-bottom: 1px solid;
}
a.not(.anchor):focus {
outline-offset: .3em;
outline: 1px solid;
}
/******************* Wrapper *******************/
.wrapper {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
}
/******************* Home Page *******************/
.centered {
display: flex;
flex: 1;
align-items: center;
justify-content: center;
margin: 1em;
}
/******************* Navbar *******************/
#navigation {
height: 4em;
width: 100%;
line-height: 4em;
}
#navigation a {
padding: 1em;
padding-bottom: 0.75em; /* Pour éviter d'avoir un espace trop grand en bas*/
border: none;
border-radius: 0.5em;
}
#navigation a:hover {
background-color: var(--font-color);
text-decoration: none;
color: var(--background-color);
outline: none;
}
#navigation a:active {
color: var(--font-color);
border: none;
}
#navigation a:focus {
outline: none;
}
#navigation .navigation-container,
#footer {
margin: 0 auto;
max-width: 90vw;
}
#footer {
width: 100%;
margin-top: 1em;
padding: 0 1em;
}
@media only screen and (max-width: 320px) {
#navigation .navigation-container,
#footer {
max-width: 100vw;
}
}
@media only screen and (min-width: 1000px) {
#navigation .navigation-container,
#footer {
max-width: var(--content-width);
}
}
#navigation-title {
letter-spacing: .1rem;
text-transform: uppercase;
font-weight: bold;
font-size: 1em;
}
#social {
list-style: none;
padding: 0;
margin-top: 0;
}
#social .social-element {
display: inline-block;
vertical-align: middle;
height: 2em;
margin-top: .7em;
}
#social .social-element a {
height: 1.5em;
display: inline-block;
margin-left: 1em;
margin-right: 1em;
border: none;
}
#social .social-element a:active {
outline: 2px solid;
}
#social .social-icon {
height: 100%;
}
@media only screen and (min-width: 768px) {
#social .social-element a {
height: 2em;
}
}
/******************* Navbar Menu *******************/
#menu-toggle {
display: none;
}
#navigation .menu-button {
float: right;
position: relative;
display: none;
width: 4em;
height: 4em;
}
#navigation .menu-button-inner {
width: 3em;
height: 3em;
position:relative;
top: 0.5em;
left: 0.5em;
text-align:center
}
#navigation .menu-button .menu-button-image {
display: inline-block;
position: relative;
height: 1.5em;
width: 1.5em;
top: 0.75em;
background-image: url(../svg/bars.svg);
background-size: contain;
background-repeat: no-repeat;
margin: auto;
vertical-align: top;
}
#menu-toggle:checked + .menu-button .menu-button-inner {
background-color: var(--link-hover-background);
border-radius: 0.5em;
transition: background .5s, max-height .35s linear;
}
#menu-toggle:checked + .menu-button .menu-button-image {
opacity: 40%;
}
#navigation-list {
position: absolute;
top: 6rem;
right: 0;
visibility: hidden;
opacity: 0;
max-height: 0;
width: 100%;
font-size: 1.5em;
background-color: var(--background-color);
border-top: solid 2px var(--font-color);
border-bottom: solid 2px var(--font-color);
transition: opacity .5s, max-height .35s linear;
padding: 0;
}
#navigation-list .navigation-item {
float: none !important;
text-align: center;
margin: 0;
display: block;
}
#navigation-list .navigation-item,
#navigation-list .navigation-item span {
line-height: 5rem;
}
#menu-toggle:checked + label + ul {
visibility: visible;
opacity: 1;
max-height: 100rem;
z-index: 100;
}
#navigation .menu-button {
display: block;
cursor: pointer;
}
@media only screen and (min-width: 768px) {
#navigation-list {
position: relative;
float: right;
top: 0;
max-height: none;
visibility: visible;
opacity: 100;
width: auto;
border: none;
list-style: none;
font-size: 1em;
margin-top: 0;
}
#navigation-list .navigation-item {
display: inline-block;
font-weight: bold;
line-height: 4rem;
}
#navigation-list .navigation-item a,
#navigation-list .navigation-item span {
line-height: 1rem;
}
#menu-toggle:checked + label + ul {
visibility: visible;
opacity: 1;
max-height: 100rem;
}
#navigation .menu-button {
display: none;
}
}
/******************* Author Infos *******************/
#author {
text-align: center;
margin: 0 auto;
max-width: 90vw;
}
@media only screen and (max-width: 320px) {
#author {
max-width: 100vw;
}
}
@media only screen and (min-width: 1000px) {
#author {
max-width: var(--content-width);
}
}
#avatar img {
width: 20vw;
min-width: 120px;
max-width: 200px;
border-radius: 40%;
background-color: var(--avatar-background);
}
/******************* Simple Page *******************/
.container {
max-width: 90vw;
margin: 0 auto;
width: 100%;
display: flex;
flex: 1;
}
@media only screen and (min-width: 1000px) {
.container {
max-width: var(--content-width);
}
}
.page-icon {
width: 1em;
height: 1em;
vertical-align: middle;
}
/******************* Error Page *******************/
.error_page {
width: max-content;
}
.error_page footer {
padding-top: 1em;
border-top: 1px solid var(--font-color);
}
/******************* Error Page *******************/
#blog-list .list-title,
#site-page .site-title {
font-size: 2rem;
}
/******************* Archives List *******************/
.archives-list {
list-style: none;
padding-left: 0;
}
.archives-list .archive {
display: block;
position: relative;
margin: 1em 0;
overflow: auto;
border: none;
}
.archives-list .archive:hover {
border: none;
}
.archives-list .archive .title {
height: 100px;
}
.archives-list .thumbnail {
display: block;
width: 15em;
text-align: left;
padding-right: 1.5em;
float: left;
}
@media only screen and (min-width: 768px) {
.archives-list .thumbnail {
display: inline-block;
text-align: right;
}
}
.archives-list .description {
height: 100%;
}
.archive .more {
position: absolute;
bottom: 0;
right: 0;
font-style: italic;
}
/******************* Letters *******************/
#letter-counter {
margin: auto;
width: fit-content;
width: -moz-fit-content;
}
#letter-counter #counter {
border: 1px solid white;
margin-top: 0.5em;
padding: .7em;
text-align: center;
font-size: 2.5em;
}
#letter-form {
margin-left: 1em;
margin-right: 1em;
}
#letter-choice {
display: inline-block;
}
#letter-choice-title {
float: left;
margin-top: 0;
}
#letter-form input,
#letter-form label {
margin-top: 1em;
}
#letter-choice>p,
#letter-form>label {
display: inline-block;
min-width: 10em;
}
#letter-choice input:first-of-type {
margin-top: 0;
}
#letter-form input[type="text"] {
height: 2em;
width: 20em;
max-width: 100%;
}
#letter-form #submit {
padding: 0.5em 0.8em;
}
/******************* Paginator *******************/
.pagination {
padding-left: 0;
margin: auto;
text-align: center;
}
.pagination li {
display: inline-block;
}
/******************* Article *******************/
.container article {
margin: 0 1em;
width: 100%;
}
@media only screen and (max-width: 320px) {
.container article {
margin: 0em;
}
}
/******************* Article Header *******************/
.container article .post-title {
margin-bottom: 0.3em;
}
.container article .post-title a:hover {
outline: none;
}
.container article .post-title a:active {
border-bottom: 1px solid;
}
.post-meta {
margin-top: 1em;
}
.post-meta>div {
line-height: 2em;
}
.post-meta .date span {
display: inline-block;
}
.post-meta .posted-on {
margin-right: 1em;
}
.post-meta .categories, .post-meta .tags {
display: inline-block;
}
.post-meta .categories {
margin-right: 1em;
}
.post-meta .header-icon {
vertical-align: baseline;
margin-right: 0.3em;
}
.post-header {
margin-top: 3.5rem;
margin-bottom: 1.8rem;
}
@media only screen and (max-width: 320px) {
.post-header {
margin-top: 2rem;
margin-bottom: 1.6rem;
}
}
.post-title {
font-size: 3rem;
margin: 0;
}
@media only screen and (max-width: 320px) {
.post-title {
font-size: 2.4rem;
}
}
/******************* Archive Body *******************/
.archive-body {
margin-bottom: 2em;
position: relative;
}
.archive-body img {
max-width: 100%;
}
.archive-body h1 {
font-size: 2.55rem;
margin: 3.5rem 0 1.8rem;
}
.archive-body h2 {
font-size: 2.17rem;
margin: 2.98rem 0 1.53rem;
}
.archive-body h3 {
font-size: 1.84rem;
margin: 2.53rem 0 1.30rem;
}
.archive-body h4 {
font-size: 1.57rem;
margin: 2.15rem 0 1.11rem;
}
.archive-body h5 {
font-size: 1.33rem;
margin: 1.83rem 0 0.94rem;
}
.archive-body h6 {
font-size: 1.13rem;
margin: 1.55rem 0 0.80rem;
}
@media only screen and (max-width: 320px) {
.archive-body h1 {
font-size: 2.16rem;
margin: 2rem 0 1.6rem;
}
.archive-body h2 {
font-size: 1.94rem;
margin: 1.80rem 0 1.44rem;
}
.archive-body h3 {
font-size: 1.75rem;
margin: 1.62rem 0 1.30rem;
}
.archive-body h4 {
font-size: 1.57rem;
margin: 1.46rem 0 1.17rem;
}
.archive-body h5 {
font-size: 1.42rem;
margin: 1.31rem 0 1.05rem;
}
.archive-body h6 {
font-size: 1.28rem;
margin: 1.18rem 0 0.94rem;
}
}
.anchor {
content: '#';
position: absolute;
opacity: 0%;
left: -1em;
width: 80%;
max-width: 600px;
border: none;
color: var(--font-color-em);
text-decoration: none;
}
@media only screen and (max-width: 500px) {
.anchor {
left: -0.8em;
}
}
.anchor:hover {
opacity: 100%;
outline: none;
border: none;
cursor: pointer;
}
@media only screen and (max-width: 320px) {
.anchor:hover {
opacity: 0%;
}
}
/******************* Archive Footer *******************/
.archive-footer {
font-style: italic;
font-size: 0.8rem;
margin: 2rem 0;
}
.archive-footer .footer-return {
margin-bottom: 1em;
width: 100%;
text-align: right;
display: inline-block;
}
.archive-footer .footer-link {
display: block;
}
.archive-footer .footer-link .spacer {
display: none;
}
.archive-footer .footer-link .label {
display: inline-block;
width: 8em;
}
@media only screen and (min-width: 768px) {
.archive-footer .footer-link {
display: inline-block;
}
.archive-footer .footer-link .label {
width: auto;
}
.archive-footer .footer-link .spacer {
display: inline-block !important;
}
}
.footnotes {
clear: left;
}
/******************* Archive Figure *******************/
.archive-body figure {
margin: 1em 0;
max-width: 100%;
width: fit-content;
overflow: visible;
}
.archive-body figure picture,
.archive-body figure figcaption {
display: table-row;
border-spacing: 0;
}
.archive-body figure img {
vertical-align: middle;
padding-bottom: 0.3em;
min-width: calc(50% - 2 * var(--image-margin-side));
}
@media only screen and (min-width: 768px) {
.archive-body figure {
margin: 1em 2.5em;
}
.archive-body figure.logo,
.archive-body figure.inline {
margin: 0;
}
.archive-body figure.border img {
min-width: calc(100% - 2 * var(--image-margin-side)) !important;
}
}
.archive-body figure.logo {
display: inline-block;
min-width: auto;
}
.archive-body figure.wrap {
float: left;
margin: 0.7em 1em;
}
.archive-body figure.inline {
display: inline-block;
min-width: auto;
margin-left: 1em;
margin-right: 1em;
}
.archive-body figure.half {
width: 100%;
max-width: 45%;
}
.archive-body figure.third {
width: 100%;
max-width: 30%;
}
.archive-body figure.logo img {
width: 10vw;
max-width: 100px;
min-width: 40px;
vertical-align: bottom;
padding: 0;
}
.archive-body figure.border img {
padding: 0.3rem;
border: 3px solid var(--background-color-light);
min-width: 100%;
}
.archive-body figure.border figcaption {
background-color: var(--background-color-light);
min-width: 100%;
display: inline-block;
}
.archive-body figure>a {
display: block;
outline: none;
min-height: 100%;
border: none;
}
.archive-body figure>a>img:hover {
box-shadow: 0 0 1em rgba(var(--font-color_rgb), 0.5);
}
.archive-body figure figcaption p,
.archive-body figure figcaption h4 {
font-style: italic;
font-weight: normal;
font-size: 0.9rem;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
margin-left: 1rem;
margin-right: 1rem;
}
.archive-body figure figcaption .attribution {
float: right;
}
@media only screen and (max-width: 320px) {
.archive-body .footnotes ol {
padding-left: 2em;
}
}
.archive-body .separator {
margin: 0 0.2em;
}
/******************* Article Tabular *******************/
.archive-body .tabular.border table {
padding: 0.3rem;
border: 3px solid var(--background-color-light);
min-width: 100%;
}
.archive-body .tabular td,
.archive-body .tabular th {
padding: 0 0.4rem;
}
.archive-body .tabular th {
border-bottom: 3px solid var(--background-color-light);
}
.archive-body .tabular.center td {
text-align: center;
}
.archive-body .tabular.right td {
text-align: right;
}
/******************* Archive Superscript *******************/
.archive-body sup {
vertical-align: top;
position: relative;
top: -0.5rem;
}
/******************* Archive Blockquote *******************/
blockquote {
position: relative;
background-color: var(--background-color-light);
padding: 0.1rem 1rem;
margin-top: 2rem;
}
.bigquote {
padding: 1rem;
border-radius: 1.5rem;
}
.bigquote p:first-of-type {
margin-top: 0;
}
.bigquote footer {
text-align: right;
}
blockquote:after {
position: absolute;
content: "”";
color: var(--text-color);
font-size: 10rem;
line-height: 0;
top: 2rem;
right: 1rem;
font-family: Arial;
}
/******************* Archive Gallery *******************/
.thumb>img {
max-height: 150px;
max-width: 150px;
border: solid 4px var(--background-color-dark);
}
.lightbox {
position: fixed;
z-index: 97;
height: 0;
width: 0;
text-align: center;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.8);
opacity: 0;
}
.lightbox img {
max-width: 90%;
max-height: 95%;
margin-top: 2%;
opacity: 0;
}
.lightbox:target {
/** Remove default browser outline */
outline: none;
width: 100%;
height: 100%;
opacity: 1 !important;
}
.lightbox:target img {
border: solid 1em var(--background-color-light);
opacity: 1;
webkit-transition: opacity 0.6s;
transition: opacity 0.6s;
}
.light-btn {
color: #fafafa;
background-color: var(--background-color-dark);
border: solid 3px var(--font-color-em);
padding: .3em .9em;
border-radius: 2px;
text-decoration: none;
cursor: pointer;
vertical-align: middle;
position: absolute;
top: 45%;
z-index: 98;
opacity: 50%;
}
.light-btn:hover {
outline: none;
opacity: 100%;
}
.btn-prev {
left: 3%;
}
.btn-next {
right: 3%;
}
.btn-close {
position: absolute;
right: 2%;
top: 2%;
z-index: 98;
color: #fafafa;
background-color: var(--background-color-dark);
border: solid 5px var(--font-color-em);
padding: 10px 15px;
border-radius: 1px;
text-decoration: none;
opacity: 50%;
}
.btn-close:hover {
background-color: #740404;
outline: none;
opacity: 100%;
}
/******************* Generic colors *******************/
.color01 {
color: var(--color01);
}
.color01.bright {
color: var(--color01_bright);
}
.color02 {
color: var(--color02);
}
.color02.bright {
color: var(--color02_bright);
}

1
static/svg/500px.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12.45" height="16"><path d="M12.39 13.81l-.06.06a7.25 7.25 0 0 1-2.31 1.56 7.29 7.29 0 0 1-5.66 0 7.15 7.15 0 0 1-2.31-1.56 7.12 7.12 0 0 1-1.57-2.3A7 7 0 0 1 0 9.86c-.03-.25.31-.3.43-.32.28-.04.46-.02.5.18l.01.04c.04.18.12.71.41 1.42a6.05 6.05 0 0 0 1.36 2.02 6.33 6.33 0 0 0 2.02 1.35 6.33 6.33 0 0 0 4.92 0 6.39 6.39 0 0 0 2.01-1.35l.06-.06a.2.2 0 0 1 .22-.05c.08.02.18.09.3.2.28.29.22.43.15.51zM8.17 8.32l-.59.6.56.55c.07.06.18.2-.06.44-.1.1-.2.15-.28.15-.06 0-.12-.03-.17-.09l-.56-.54-.59.59a.2.2 0 0 1-.13.04c-.08 0-.18-.04-.28-.14l-.01-.02c-.07-.05-.16-.15-.16-.26 0-.05.02-.1.07-.15l.59-.58-.6-.59c-.1-.1-.05-.22.13-.4.1-.1.2-.16.28-.16.04 0 .08.02.12.04l.58.6.58-.59c.1-.1.26-.05.42.12.11.1.23.26.1.4zm4.2.51a5.28 5.28 0 0 1-.4 2.04 5.3 5.3 0 0 1-2.8 2.78 5.12 5.12 0 0 1-2.03.41 5.12 5.12 0 0 1-2.04-.4 5.3 5.3 0 0 1-1.67-1.13 5.09 5.09 0 0 1-1.11-1.66 2.95 2.95 0 0 1-.14-.36c-.09-.25.27-.36.38-.4.26-.07.45-.11.53.11.22.57.55 1.13.87 1.5V8.66a3 3 0 0 1 .92-2.07 3.2 3.2 0 0 1 2.26-.92 3.16 3.16 0 1 1 0 6.31c-.35 0-.61-.03-1-.14-.05-.02-.25-.1-.12-.55.04-.11.14-.45.4-.38.01 0 .45.1.68.1A2.18 2.18 0 0 0 8.67 7.3a2.19 2.19 0 0 0-1.56-.63c-.62 0-1.18.25-1.59.71-.36.4-.57.94-.57 1.43v3.69a4.12 4.12 0 0 0 2.16.6c1.14 0 2.25-.46 3.04-1.25a4.26 4.26 0 0 0 1.25-3.02 4.25 4.25 0 0 0-1.26-3.03 4.25 4.25 0 0 0-3.02-1.25A4.27 4.27 0 0 0 4.08 5.8c0 .01-.51.54-.68.78l-.02.02c-.11.15-.2.3-.65.2-.23-.06-.47-.2-.47-.39V.34c0-.16.13-.34.34-.34h7.83c.27 0 .27.38.27.5s0 .48-.27.48H3.2V5.3A6.64 6.64 0 0 1 5.08 4a5.35 5.35 0 0 1 2.07-.41A5.12 5.12 0 0 1 9.17 4a5.3 5.3 0 0 1 2.8 2.79c.26.65.4 1.33.4 2.04zm-.27-5.19c.17.15.05.31-.12.51-.1.1-.22.23-.35.23a.2.2 0 0 1-.14-.06 6.77 6.77 0 0 0-1.85-1.19 6.11 6.11 0 0 0-2.46-.5c-.76 0-1.59.16-2.34.44-.23.1-.36-.21-.4-.33a.8.8 0 0 1-.07-.34c.01-.09.06-.15.14-.18a7.28 7.28 0 0 1 5.5.06 6.76 6.76 0 0 1 2.09 1.36z"/><path d="M12.39 13.71l-.06.06a7.25 7.25 0 0 1-2.31 1.56 7.29 7.29 0 0 1-5.66 0 7.15 7.15 0 0 1-2.31-1.56 7.12 7.12 0 0 1-1.57-2.3A7 7 0 0 1 0 9.76c-.03-.24.31-.3.43-.32.28-.04.46-.02.5.18l.01.04c.04.18.12.71.41 1.42a6.05 6.05 0 0 0 1.36 2.02 6.33 6.33 0 0 0 2.02 1.35 6.33 6.33 0 0 0 4.92 0 6.39 6.39 0 0 0 2.01-1.35l.06-.06a.2.2 0 0 1 .22-.05c.08.02.18.09.3.2.28.29.22.43.15.51zM8.17 8.22l-.59.6.56.55c.07.07.18.2-.06.44-.1.1-.2.15-.28.15-.06 0-.12-.03-.17-.09l-.56-.54-.59.59a.2.2 0 0 1-.13.04c-.08 0-.18-.04-.28-.14l-.01-.02c-.07-.05-.16-.15-.16-.26 0-.05.02-.1.07-.15l.59-.58-.6-.59c-.1-.1-.05-.22.13-.4.1-.1.2-.16.28-.16.04 0 .08.02.12.04l.58.6.58-.59c.1-.1.26-.05.42.12.11.1.23.26.1.4zm4.2.51a5.28 5.28 0 0 1-.4 2.04 5.3 5.3 0 0 1-2.8 2.78 5.12 5.12 0 0 1-2.03.41 5.12 5.12 0 0 1-2.04-.4 5.3 5.3 0 0 1-1.67-1.13 5.09 5.09 0 0 1-1.11-1.66 2.95 2.95 0 0 1-.14-.36c-.09-.25.27-.36.38-.4.26-.07.45-.11.53.11.22.57.55 1.13.87 1.5V8.56a3 3 0 0 1 .92-2.07 3.2 3.2 0 0 1 2.26-.92 3.16 3.16 0 1 1 0 6.31c-.35 0-.61-.02-1-.14-.05-.02-.25-.1-.12-.55.04-.11.14-.45.4-.38.01 0 .45.1.68.1A2.18 2.18 0 0 0 8.67 7.2a2.19 2.19 0 0 0-1.56-.63c-.62 0-1.18.25-1.59.71-.36.4-.57.94-.57 1.43v3.69a4.12 4.12 0 0 0 2.16.6c1.14 0 2.25-.46 3.04-1.25a4.26 4.26 0 0 0 1.25-3.02 4.25 4.25 0 0 0-1.26-3.03 4.25 4.25 0 0 0-3.02-1.25A4.27 4.27 0 0 0 4.08 5.7c0 .01-.51.54-.68.78l-.02.02c-.11.15-.2.3-.65.2-.23-.06-.47-.2-.47-.39V.24c0-.16.13-.34.34-.34h7.83c.27 0 .27.37.27.5 0 .12 0 .48-.27.48H3.2V5.2A6.64 6.64 0 0 1 5.08 3.9a5.35 5.35 0 0 1 2.07-.41 5.12 5.12 0 0 1 2.03.41 5.3 5.3 0 0 1 2.8 2.79c.26.65.4 1.33.4 2.04zm-.27-5.19c.17.15.05.32-.12.51-.1.1-.22.23-.35.23a.2.2 0 0 1-.14-.06 6.77 6.77 0 0 0-1.85-1.19 6.11 6.11 0 0 0-2.46-.5c-.76 0-1.59.16-2.34.44-.23.1-.36-.21-.4-.33a.8.8 0 0 1-.07-.34c.01-.09.06-.15.14-.18a7.28 7.28 0 0 1 5.5.06 6.76 6.76 0 0 1 2.09 1.36z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

3
static/svg/bars.svg Normal file
View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<path fill="#efefef" d="M16 13.6v1.6a.7.8 0 0 1-.7.8H.7a.7.8 0 0 1-.7-.8v-1.6c0-.4.3-.8.7-.8h14.6c.4 0 .7.4.7.8zm0-6.4v1.6a.7.8 0 0 1-.7.8H.7a.7.8 0 0 1-.7-.8V7.2c0-.4.3-.8.7-.8h14.6c.4 0 .7.4.7.8zm0-6.4v1.6a.7.8 0 0 1-.7.8H.7a.7.8 0 0 1-.7-.8V.8C0 .4.3 0 .7 0h14.6c.4 0 .7.4.7.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 357 B

1
static/svg/calendar.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14.857" height="16"><path d="M1.143 14.857h2.571v-2.571H1.143zm3.143 0h2.857v-2.571H4.286zm-3.143-3.143h2.571V8.857H1.143zm3.143 0h2.857V8.857H4.286zM1.143 8.286h2.571V5.714H1.143zm6.571 6.571h2.857v-2.571H7.714zM4.286 8.286h2.857V5.714H4.286zm6.857 6.571h2.571v-2.571h-2.571zm-3.429-3.143h2.857V8.857H7.714zM4.571 4V1.429a.294.294 0 00-.285-.286h-.572a.294.294 0 00-.285.286V4c0 .152.134.286.285.286h.572A.294.294 0 004.57 4zm6.572 7.714h2.571V8.857h-2.571zM7.714 8.286h2.857V5.714H7.714zm3.429 0h2.571V5.714h-2.571zM11.429 4V1.429a.294.294 0 00-.286-.286h-.572a.294.294 0 00-.285.286V4c0 .152.134.286.285.286h.572A.294.294 0 0011.429 4zm3.428-.571v11.428A1.15 1.15 0 0113.714 16H1.143A1.15 1.15 0 010 14.857V3.43a1.15 1.15 0 011.143-1.143h1.143v-.857C2.286.643 2.929 0 3.714 0h.572c.785 0 1.428.643 1.428 1.429v.857h3.429v-.857C9.143.643 9.786 0 10.57 0h.572c.786 0 1.428.643 1.428 1.429v.857h1.143a1.15 1.15 0 011.143 1.143z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 998 B

1
static/svg/clock.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.333 4.333V9A.329.329 0 019 9.333H5.667A.329.329 0 015.333 9v-.667c0-.187.146-.333.334-.333H8V4.333C8 4.146 8.146 4 8.333 4H9c.188 0 .333.146.333.333zM13.667 8A5.673 5.673 0 008 2.333 5.673 5.673 0 002.333 8 5.673 5.673 0 008 13.667 5.673 5.673 0 0013.667 8zM16 8c0 4.417-3.583 8-8 8s-8-3.583-8-8 3.583-8 8-8 8 3.583 8 8z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 419 B

1
static/svg/codepen.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M1.929 10.438l5.383 3.589V10.82L4.33 8.831zm-.554-1.286L3.098 8 1.375 6.848zm7.313 4.875l5.383-3.59L11.67 8.83l-2.982 1.991zM8 9.625L10.429 8 8 6.375 5.571 8zM4.33 7.17l2.982-1.991V1.973L1.93 5.563zm8.572.83l1.723 1.152V6.848zm-1.232-.83l2.401-1.607-5.383-3.59V5.18zM16 5.563v4.875a.699.699 0 01-.304.57l-7.312 4.876A.742.742 0 018 16a.746.746 0 01-.384-.116L.304 11.009A.699.699 0 010 10.437V5.564c0-.224.116-.447.304-.572L7.616.116A.742.742 0 018 0c.134 0 .268.045.384.116l7.312 4.875a.699.699 0 01.304.572z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 605 B

1
static/svg/envelope.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="12.571"><path d="M14.857 11.143V4.286c-.187.214-.393.41-.616.589a122.437 122.437 0 00-3.803 3.018c-.67.562-1.5 1.25-2.43 1.25h-.017c-.928 0-1.759-.688-2.428-1.25a122.437 122.437 0 00-3.804-3.018 4.808 4.808 0 01-.616-.59v6.858c0 .152.134.286.286.286H14.57a.294.294 0 00.286-.286zm0-9.384c0-.223.054-.616-.286-.616H1.43a.294.294 0 00-.286.285c0 1.018.509 1.902 1.312 2.536 1.197.938 2.393 1.884 3.58 2.83C6.51 7.18 7.367 8 7.992 8h.018c.625 0 1.482-.822 1.955-1.205a554.619 554.619 0 013.58-2.83c.581-.456 1.313-1.447 1.313-2.206zM16 1.429v9.714c0 .785-.643 1.428-1.429 1.428H1.43A1.433 1.433 0 010 11.143V1.428C0 .643.643 0 1.429 0H14.57C15.357 0 16 .643 16 1.429z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 747 B

1
static/svg/facebook.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="8.308" height="16"><path d="M8.308.115v2.539h-1.51c-1.183 0-1.404.567-1.404 1.385v1.817h2.818l-.375 2.846H5.394V16H2.452V8.702H0V5.856h2.452V3.76C2.452 1.327 3.942 0 6.115 0c1.039 0 1.933.077 2.193.115z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 273 B

1
static/svg/file-text.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="13.714" height="16"><path d="M13.107 3.393c.33.33.607.99.607 1.464v10.286a.857.857 0 01-.857.857h-12A.857.857 0 010 15.143V.857C0 .384.384 0 .857 0h8c.473 0 1.134.277 1.464.607zM9.143 1.214v3.357H12.5a1.137 1.137 0 00-.196-.366L9.509 1.411a1.148 1.148 0 00-.366-.197zm3.428 13.643V5.714H8.857A.857.857 0 018 4.857V1.143H1.143v13.714zM3.43 7.143c0-.16.125-.286.285-.286H10c.16 0 .286.125.286.286v.571c0 .161-.125.286-.286.286H3.714a.282.282 0 01-.285-.286zm6.571 2c.16 0 .286.125.286.286V10c0 .16-.125.286-.286.286H3.714A.282.282 0 013.43 10v-.571c0-.161.125-.286.285-.286zm0 2.286c.16 0 .286.125.286.285v.572c0 .16-.125.285-.286.285H3.714a.282.282 0 01-.285-.285v-.572c0-.16.125-.285.285-.285z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 764 B

1
static/svg/flickr.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13 0a3 3 0 013 3v10a3 3 0 01-3 3H3a3 3 0 01-3-3V3a3 3 0 013-3zM7.27 8a2.21 2.21 0 00-4.416 0 2.21 2.21 0 004.417 0zm5.876 0a2.21 2.21 0 00-4.417 0 2.21 2.21 0 004.417 0z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 266 B

1
static/svg/folder.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="13.539"><path d="M14.77 11.385v-6.77a.923.923 0 00-.924-.923h-6.77a.923.923 0 01-.922-.923v-.615a.923.923 0 00-.923-.923H2.154a.923.923 0 00-.923.923v9.23c0 .51.413.924.923.924h11.692c.51 0 .923-.414.923-.923zM16 4.615v6.77a2.163 2.163 0 01-2.154 2.154H2.154A2.163 2.163 0 010 11.385V2.154C0 .97.971 0 2.154 0H5.23c1.182 0 2.154.971 2.154 2.154v.308h6.461c1.183 0 2.154.97 2.154 2.153z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 468 B

1
static/svg/gitea.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="9.91"><path d="M2.83 0C2.21 0 1.48.22.92.72c-.57.5-.96 1.3-.92 2.4.07 1.73.9 2.69 1.87 3.2.95.51 2.01.6 2.65.62.04.18.16.42.32.7.17.3.4.64.66.96.53.65 1.16 1.25 1.74 1.31H12c.75-.05 1.43-.7 2-1.63.59-.93 1.07-2.14 1.42-3.34.35-1.2.56-2.4.58-3.3a3.4 3.4 0 0 0-.12-1.11.84.84 0 0 0-.18-.33.43.43 0 0 0-.3-.13c-2.62.13-4.17.2-5.5.22V3.3l-.4-.21L9.48.29C7.96.29 6.62.2 4.08.07 3.75.06 3.3 0 2.82 0zm.18 1.34h.08c.17 1.68.45 2.7.99 4.2-.68-.1-1.3-.27-1.79-.6-.5-.36-.86-.9-.97-1.78-.06-.46.01-.93.3-1.27.25-.32.69-.54 1.39-.55zm5.65 1.65c.1 0 .2.03.3.07l.5.24-.36.73a.44.44 0 0 0-.16.03.44.44 0 0 0-.27.57.44.44 0 0 0 .08.13L8.13 6a.44.44 0 0 0-.14.03.44.44 0 0 0-.27.56.44.44 0 0 0 .57.27.44.44 0 0 0 .27-.57.44.44 0 0 0-.1-.16l.59-1.22a.44.44 0 0 0 .2-.03.44.44 0 0 0 .13-.08l.56.27c.2.12.27.2.3.27.02.09 0 .24-.12.52l-.4.84a.44.44 0 0 0-.17.03.44.44 0 0 0-.26.57.44.44 0 0 0 .56.27.44.44 0 0 0 .27-.57.44.44 0 0 0-.09-.15l.4-.86c.13-.3.2-.52.14-.73-.06-.22-.24-.36-.47-.49l-.57-.28a.44.44 0 0 0-.02-.17.44.44 0 0 0-.1-.16l.35-.71 1.94.93a.7.7 0 0 1 .32.94l-1.33 2.74a.7.7 0 0 1-.94.32L7.02 7.06a.7.7 0 0 1-.33-.93l1.33-2.74a.7.7 0 0 1 .64-.4z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

1
static/svg/github.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15.61"><path d="M8 0a8 8 0 0 1 2.53 15.6c-.4.07-.55-.18-.55-.4v-2.19c0-.75-.24-1.23-.53-1.48 1.78-.2 3.65-.87 3.65-3.95a3.1 3.1 0 0 0-.82-2.14 2.9 2.9 0 0 0-.08-2.13c-.67-.2-2.2.82-2.2.82a7.53 7.53 0 0 0-4 0S4.47 3.1 3.8 3.31a2.9 2.9 0 0 0-.08 2.13 3.1 3.1 0 0 0-.82 2.14c0 3.07 1.86 3.75 3.64 3.95-.23.21-.44.56-.5 1.07-.47.21-1.63.57-2.33-.66-.44-.76-1.23-.83-1.23-.83-.78 0-.05.5-.05.5.52.23.88 1.16.88 1.16.47 1.43 2.7.95 2.7.95l.01 1.49c0 .2-.14.46-.55.38A8 8 0 0 1 8 0zM3.03 11.49c.02-.04 0-.1-.07-.13-.06-.02-.12 0-.14.03-.02.04.01.09.08.12.05.03.11.02.13-.02zm.32.35c.05-.03.04-.1-.02-.16-.05-.06-.12-.08-.16-.03-.04.03-.03.1.02.16s.12.08.16.03zm.32.47c.05-.04.05-.12 0-.2-.04-.07-.13-.1-.18-.06-.05.03-.05.12 0 .19s.14.1.18.07zm.43.44c.05-.04.03-.14-.04-.2-.07-.07-.16-.08-.2-.03-.06.04-.04.14.04.2.07.07.16.08.2.03zm.6.26c.02-.06-.04-.14-.14-.17-.08-.02-.17.01-.2.08-.02.06.05.13.14.15.08.03.18 0 .2-.06zm.65.05c0-.07-.08-.12-.17-.11-.1 0-.17.05-.17.11 0 .07.07.13.18.12.1 0 .16-.06.16-.12zm.6-.1c0-.06-.08-.1-.18-.1-.1.02-.15.09-.14.16 0 .06.09.1.18.08.1-.02.16-.08.15-.14z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

1
static/svg/gitlab.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14.73"><path d="M.93 5.67L8 14.73.252 9.107a.623.623 0 01-.223-.688zm4.124 0h5.892L8 14.73zM3.287.208L5.054 5.67H.931L2.698.208a.313.313 0 01.59 0zM15.07 5.67l.902 2.75a.623.623 0 01-.223.687L8 14.73zm0 0h-4.123L12.713.208a.313.313 0 01.589 0z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 326 B

1
static/svg/instagram.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M10.67 8A2.67 2.67 0 0 0 8 5.33 2.67 2.67 0 0 0 5.33 8 2.67 2.67 0 0 0 8 10.67 2.67 2.67 0 0 0 10.67 8zm1.43 0A4.1 4.1 0 0 1 8 12.1 4.1 4.1 0 0 1 3.9 8 4.1 4.1 0 0 1 8 3.9 4.1 4.1 0 0 1 12.1 8zm1.13-4.27a.96.96 0 0 1-.96.96.96.96 0 0 1-.96-.96c0-.53.43-.96.96-.96s.96.43.96.96zM8 1.43c-1.17 0-3.67-.09-4.72.33a2.56 2.56 0 0 0-.91.6 2.56 2.56 0 0 0-.6.92C1.33 4.33 1.43 6.83 1.43 8s-.1 3.67.32 4.72c.15.36.32.63.6.91.29.29.56.46.92.6 1.05.43 3.55.33 4.72.33s3.67.1 4.72-.32c.36-.15.63-.32.91-.6.29-.29.46-.56.6-.92.43-1.05.33-3.55.33-4.72s.1-3.67-.32-4.72a2.56 2.56 0 0 0-.6-.91 2.56 2.56 0 0 0-.92-.6c-1.05-.43-3.55-.33-4.72-.33zM16 8c0 1.1.01 2.2-.05 3.3a4.76 4.76 0 0 1-1.3 3.36 4.76 4.76 0 0 1-3.35 1.29C10.2 16 9.1 16 8 16s-2.2.01-3.3-.05a4.76 4.76 0 0 1-3.36-1.3A4.76 4.76 0 0 1 .05 11.3C0 10.2 0 9.1 0 8s-.01-2.2.05-3.3a4.76 4.76 0 0 1 1.3-3.36A4.76 4.76 0 0 1 4.7.05C5.8 0 6.9 0 8 0s2.2-.01 3.3.05c1.28.06 2.42.36 3.36 1.3a4.76 4.76 0 0 1 1.29 3.35C16 5.8 16 6.9 16 8z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M4.873 0a4.868 4.868 0 00-3.437 1.431C-.465 3.341-.481 6.411 1.402 8.3a4.813 4.813 0 004.683 1.22l1.66 1.66 2.162-1.24.405.404-1.202 2.012.405.405 2.012-1.202.405.405-1.202 2.012.405.404 2.012-1.202.405.405-1.202 2.012.404.405h2.675a.57.57 0 00.571-.571v-2.851L9.518 6.096c.448-1.623.044-3.424-1.225-4.687A4.78 4.78 0 004.873 0zM3.62 2.194a1.431 1.431 0 110 2.863 1.431 1.431 0 010-2.863z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 484 B

1
static/svg/linkedin.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15.292"><path d="M3.635 4.969v10.323H.198V4.969zm.22-3.188c.01.99-.74 1.781-1.938 1.781h-.021C.74 3.563 0 2.772 0 1.782 0 .77.77 0 1.938 0c1.177 0 1.906.77 1.916 1.781zM16 9.375v5.917h-3.427V9.77c0-1.386-.5-2.334-1.74-2.334-.948 0-1.51.636-1.76 1.25-.083.23-.115.532-.115.844v5.76H5.531c.042-9.354 0-10.322 0-10.322h3.427v1.5h-.02c.447-.708 1.26-1.74 3.114-1.74C14.312 4.73 16 6.21 16 9.375z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 474 B

1
static/svg/mastodon.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14.925" height="16"><path d="M14.607 9.592c-.22 1.128-1.965 2.364-3.97 2.603-1.045.125-2.075.24-3.172.19a18.609 18.609 0 01-3.211-.43c0 .175.01.342.032.497.233 1.772 1.757 1.878 3.2 1.927 1.456.05 2.752-.359 2.752-.359l.06 1.317s-1.019.547-2.833.647c-1 .055-2.243-.025-3.69-.408C.637 14.746.099 11.4.015 8.006c-.026-1.008-.01-1.958-.01-2.753 0-3.47 2.274-4.488 2.274-4.488C3.426.238 5.393.017 7.439 0h.05c2.045.017 4.014.238 5.16.765 0 0 2.275 1.017 2.275 4.488 0 0 .028 2.56-.317 4.339zm-2.365-4.07c0-.859-.211-1.548-.658-2.046-.453-.505-1.047-.764-1.783-.764-.852 0-1.497.327-1.924.982l-.415.696-.414-.695c-.427-.656-1.072-.983-1.924-.983-.737 0-1.33.259-1.783.764-.44.505-.658 1.187-.658 2.046v4.203h1.665v-4.08c0-.86.362-1.295 1.085-1.295.8 0 1.202.517 1.202 1.541v2.233H8.29V5.89c0-1.024.4-1.542 1.201-1.542.724 0 1.086.437 1.086 1.297v4.079h1.665V5.522z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 930 B

1
static/svg/peertube.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="12"><defs><filter id="a" x="-.014" width="1.028" y="-.011" height="1.021" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation=".07"/></filter></defs><path d="M0 0v8l6-4zm6 4v8l6-4zM0 8v8l6-3.999z" filter="url(#a)" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 307 B

1
static/svg/phone.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="M16 12.636c0 .41-.182 1.205-.352 1.58-.239.557-.875.92-1.387 1.205-.67.363-1.352.579-2.113.579-1.057 0-2.012-.432-2.978-.784a10.62 10.62 0 01-1.988-.943C5.25 13.079 2.92 10.75 1.727 8.818A10.622 10.622 0 01.784 6.83C.432 5.864 0 4.91 0 3.852 0 3.091.216 2.41.58 1.74.864 1.227 1.227.59 1.784.352 2.16.182 2.954 0 3.364 0c.08 0 .159 0 .238.034.239.079.489.636.603.864.363.647.715 1.306 1.09 1.943.182.295.523.659.523 1.011 0 .693-2.057 1.705-2.057 2.318 0 .307.284.705.444.978 1.147 2.068 2.58 3.5 4.647 4.647.273.16.67.444.978.444.613 0 1.625-2.057 2.318-2.057.352 0 .716.34 1.011.522.636.375 1.296.728 1.943 1.091.228.114.784.364.864.603.034.08.034.159.034.238z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 758 B

1
static/svg/pinterest.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M16 8c0 4.417-3.583 8-8 8a7.83 7.83 0 01-2.27-.333c.301-.48.645-1.094.812-1.709 0 0 .093-.354.562-2.198.271.532 1.084 1 1.948 1 2.573 0 4.323-2.343 4.323-5.49 0-2.364-2.01-4.583-5.073-4.583-3.792 0-5.708 2.73-5.708 5 0 1.375.52 2.605 1.635 3.063.177.073.344 0 .396-.208.042-.136.125-.49.167-.636.052-.208.03-.27-.115-.448-.323-.385-.531-.875-.531-1.573 0-2.02 1.51-3.833 3.937-3.833 2.146 0 3.334 1.313 3.334 3.073 0 2.302-1.021 4.25-2.542 4.25-.833 0-1.458-.688-1.26-1.542.24-1.01.708-2.104.708-2.833 0-.656-.354-1.208-1.083-1.208-.855 0-1.542.885-1.542 2.073 0 0 0 .76.26 1.27-.875 3.709-1.03 4.355-1.03 4.355-.147.604-.157 1.28-.136 1.843A8.002 8.002 0 018 0c4.417 0 8 3.583 8 8z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 778 B

1
static/svg/pixelfed.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 16A8 8 0 118 0a8 8 0 010 16zm-.635-6.253h1.467c1.383 0 2.504-1.091 2.504-2.437 0-1.346-1.121-2.437-2.504-2.437H6.714c-.797 0-1.444.63-1.444 1.406v5.472z" fill="#efefef" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 271 B

1
static/svg/rss.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="15.999"><path d="M4.363 13.817A2.182 2.182 0 110 13.816a2.182 2.182 0 014.364.001zm5.818 1.398a.735.735 0 01-.193.545.691.691 0 01-.534.239H7.92a.718.718 0 01-.716-.66A7.27 7.27 0 00.659 8.796.718.718 0 010 8.079V6.545c0-.205.08-.398.239-.534a.697.697 0 01.488-.193h.057c2.42.193 4.704 1.25 6.42 2.977 1.727 1.716 2.784 4 2.977 6.42zm5.818.023a.692.692 0 01-.205.534.696.696 0 01-.522.227h-1.625a.724.724 0 01-.728-.682C12.544 8.715 7.284 3.454.682 3.068A.721.721 0 010 2.352V.727C0 .523.08.341.227.205A.705.705 0 01.727 0h.034a15.998 15.998 0 0110.534 4.704 15.998 15.998 0 014.704 10.534z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 673 B

1
static/svg/tag.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M4.731 3.38c0-.75-.602-1.352-1.351-1.352-.75 0-1.352.602-1.352 1.352 0 .75.602 1.351 1.352 1.351.75 0 1.351-.602 1.351-1.351zM16 9.463c0 .359-.148.707-.39.95l-5.186 5.196a1.36 1.36 0 01-1.912 0L.962 8.047C.421 7.52 0 6.495 0 5.745V1.352C0 .612.613 0 1.352 0h4.393c.75 0 1.774.422 2.313.961l7.551 7.54c.243.254.391.603.391.962z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 422 B

1
static/svg/threema.svg Normal file
View file

@ -0,0 +1 @@
<svg width="13.76" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M6.88 0C3.08 0 0 2.71 0 6.05c0 1.25.43 2.4 1.16 3.36l-.74 2.95 3.45-.86c.9.39 1.93.61 3.01.61 3.8 0 6.88-2.71 6.88-6.06C13.76 2.71 10.68 0 6.88 0zm0 2.82c1.08 0 1.95.88 1.95 1.95v.78h.08c.17 0 .31.14.31.32v2.75c0 .17-.14.31-.31.31H4.85a.31.31 0 0 1-.31-.31V5.87c0-.18.14-.32.31-.32h.08v-.78c0-1.07.87-1.95 1.95-1.95zm0 .78c-.65 0-1.17.53-1.17 1.17v.78h2.34v-.78c0-.64-.52-1.17-1.17-1.17zM2.66 13.66a1.17 1.17 0 1 0 0 2.34 1.17 1.17 0 0 0 0-2.34zm4.22 0a1.17 1.17 0 1 0 0 2.34 1.17 1.17 0 0 0 0-2.34zm4.22 0a1.17 1.17 0 1 0 0 2.34 1.17 1.17 0 0 0 0-2.34z" fill="#efefef" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 672 B

1
static/svg/tumblr.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="9.192" height="16"><path d="M8.423 12.778l.769 2.279c-.289.432-1.596.923-2.77.942-3.49.058-4.807-2.48-4.807-4.269V6.5H0V4.432C2.423 3.557 3.01 1.365 3.144.115 3.154.038 3.221 0 3.259 0h2.346v4.077h3.202V6.5H5.596v4.98c0 .673.25 1.606 1.538 1.577.423-.01.99-.135 1.289-.279z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 344 B

1
static/svg/twitter.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="12.995"><path d="M16 1.543a7.05 7.05 0 01-1.645 1.695c.01.142.01.285.01.427 0 4.335-3.299 9.33-9.33 9.33A9.266 9.266 0 010 11.523c.264.03.518.04.792.04a6.567 6.567 0 004.07-1.4 3.284 3.284 0 01-3.065-2.275 3.484 3.484 0 001.482-.06A3.28 3.28 0 01.65 4.609v-.04c.437.243.945.395 1.483.416A3.277 3.277 0 01.67 2.254c0-.61.162-1.168.447-1.655A9.32 9.32 0 007.878 4.03a3.7 3.7 0 01-.081-.75A3.278 3.278 0 0111.077 0c.943 0 1.796.396 2.395 1.036a6.453 6.453 0 002.081-.792 3.27 3.27 0 01-1.441 1.807c.66-.071 1.3-.254 1.888-.508z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 607 B

1
static/svg/youtube.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="13.23" height="16"><path d="M8.43 11.1V13c0 .4-.12.59-.35.59-.13 0-.27-.06-.4-.2V10.7c.13-.13.27-.2.4-.2.23 0 .35.21.35.6zm3.02.02v.4h-.8v-.4c0-.4.13-.61.4-.61.26 0 .4.2.4.6zM2.82 9.17h.96v-.84H.99v.84h.94v5.08h.89zm2.57 5.08h.8v-4.4h-.8v3.36c-.18.25-.34.38-.5.38-.11 0-.18-.06-.2-.19V9.84h-.8v3.5c0 .3.03.5.07.64.08.23.26.33.52.33.29 0 .6-.18.91-.54zm3.83-1.32v-1.76c0-.41-.02-.7-.08-.88-.1-.33-.32-.5-.63-.5-.3 0-.57.16-.83.48V8.33h-.8v5.92h.8v-.43c.27.33.54.5.83.5.31 0 .53-.18.63-.5.06-.19.08-.48.08-.9zm3.02-.09v-.12h-.81c0 .33-.01.5-.02.55-.04.21-.16.32-.36.32-.27 0-.4-.2-.4-.62v-.77h1.6v-.92c0-.47-.09-.81-.25-1.04-.23-.3-.54-.45-.95-.45-.4 0-.72.15-.95.45-.17.23-.25.57-.25 1.04v1.54c0 .48.09.82.26 1.04.23.3.54.45.96.45a1.1 1.1 0 0 0 1.15-.95c.02-.08.02-.26.02-.52zM6.81 4.69V2.81c0-.4-.11-.61-.38-.61-.26 0-.39.2-.39.61V4.7c0 .4.13.62.39.62.27 0 .38-.21.38-.62zm6.42 6.7c0 1.03 0 2.13-.23 3.13-.17.7-.74 1.22-1.43 1.3-1.64.18-3.3.18-4.95.18-1.66 0-3.32 0-4.96-.19a1.66 1.66 0 0 1-1.43-1.3C0 13.52 0 12.43 0 11.4c0-1.03 0-2.12.23-3.12.17-.7.74-1.22 1.44-1.3 1.63-.18 3.3-.18 4.95-.18a46 46 0 0 1 4.95.17A1.68 1.68 0 0 1 13 8.26c.23 1 .23 2.1.23 3.13zM4.32 0h.91L4.15 3.56v2.42h-.9V3.56C3.19 3.12 3 2.5 2.72 1.67L2.13 0h.95l.63 2.35zm3.3 2.97v1.57c0 .47-.08.83-.25 1.05-.22.3-.53.45-.94.45-.4 0-.72-.15-.94-.45-.17-.23-.25-.58-.25-1.05V2.97c0-.47.08-.82.25-1.04.22-.3.54-.46.94-.46.4 0 .72.15.94.46.17.22.25.57.25 1.04zm3-1.44v4.45H9.8V5.5c-.32.38-.62.55-.92.55-.26 0-.44-.1-.52-.33a2.3 2.3 0 0 1-.07-.67V1.54h.8V4.8c0 .2 0 .3.02.32.01.12.08.2.18.2.16 0 .33-.13.51-.4v-3.4z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

16
theme.toml Normal file
View file

@ -0,0 +1,16 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "Frigg"
license = "MIT"
licenselink = "https://git.vulgarisons.info/raghnarok/hugo_idunn/src/branch/master/LICENSE"
description = "Simple Hugo theme, inspired from Idunn but in a more visual way"
homepage = "https://git.vulgarisons.info/raghnarok/hugo_frigg"
tags = ["hugo", "simple", "responsive", "no javascript", "no fontawesome", "no google", "company", "clean"]
features = ["responsive design", "social links"]
min_version = "0.41.0"
[author]
name = "Gregory Trolliet"
homepage = "https://trolliet.info"