First standalone version

This commit is contained in:
Gregory Trolliet 2020-04-28 12:26:34 +02:00
commit 9d22a63950
49 changed files with 1367 additions and 0 deletions

9
CHANGELOG.md Normal file
View file

@ -0,0 +1,9 @@
# 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]
### Added
* Making theme standalone.

20
LICENSE Normal file
View file

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2020 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.

94
README.md Normal file
View file

@ -0,0 +1,94 @@
# Hugo theme : Snotra
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_snotra.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 = "idunn" # The Hugo theme
```
### 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
```
### Colors
It is possible to basicaly change some colors:
```toml
[params.colors]
font = "black" # General font color, default to black
background = "white" # General background color, default to white
main = "grey" # Theme color, used for footer among others, default to grey
font_above = "white" # Used for font above *main* color, default to white
```
### Custom CSS
```toml
[params]
custom_css = ["style.css"] # Your own css files
```
### Contact footer
If you want to have some informations about you in the footer,
you can set it with thoses parameters:
```toml
[params.contact]
email = "mail@serve.ur" # The mail of your company
phone = "+41 22 123 45 67" # The phone number of your company
address = "Your address" # The address of your company
```
### Social Networks
You can also set some of your networks accounts.
Thoses options are availables:
```toml
[params.social]
500px = ""
codepen = ""
facebook = ""
flickr = ""
github = ""
gitlab = ""
instagram = ""
linkedin = ""
mastodon = ""
peertube = ""
pinterest = ""
pixelfed = ""
tumblr = ""
twitter = ""
youtube = ""
```

9
archetypes/default.md Normal file
View file

@ -0,0 +1,9 @@
---
author: "Gregory Trolliet"
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
description: ""
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"

48
i18n/fr.toml Normal file
View file

@ -0,0 +1,48 @@
[categories]
one = "catégorie"
other = "catégories"
[tags]
one = "tag"
other = "tags"
[articles]
one = "article"
other = "articles"
[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>"""

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,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,15 @@
{{ 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>
</main>
</body>
</html>

6
layouts/blog/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>

23
layouts/blog/list.html Normal file
View file

@ -0,0 +1,23 @@
{{ 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>
<ul class="articles-list">
{{- range .Paginator.Pages -}}
{{- .Render "li" -}}
{{- end -}}
</ul>
</article>
{{ partial "pagination.html" . }}
</section>
</main>
</body>
</html>

36
layouts/blog/single.html Normal file
View file

@ -0,0 +1,36 @@
{{ partial "header.html" . }}
<body>
<main class="wrapper">
{{ partial "navigation.html" . }}
<section class="container article">
<article>
<header class="post-header">
<h1 class="post-title">
{{ .Title }}
</h1>
<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="article-body">
{{ .Content }}
</div>
{{ partial "article-footer.html" . }}
</article>
</section>
</main>
</body>
</html>

20
layouts/index.html Normal file
View file

@ -0,0 +1,20 @@
{{ 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>
</main>
</body>
</html>

View file

@ -0,0 +1,21 @@
<footer class="article-footer">
{{ 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,24 @@
<div id="author">
<div id="avatar">
<img src="images/{{ .Site.Params.avatar }}" alt="avatar"/>
</div>
<div id="description">
<h1>{{ .Site.Params.author }}</h1>
<h2>{{ .Site.Params.info }}</h2>
</div>
{{ with .Site.Params.social }}
<ul id="social">
{{ range sort . "weight" }}
<li class="social-element">
{{ if eq .type "tel" }}
<a href="tel:{{ .url }}" rel="me" aria-label="{{ .name }}" title="{{ .name }}">
{{ else }}
<a href="{{ .url }}" rel="me" aria-label="{{ .name }}" title="{{ .name }}">
{{ end }}
<img class="social-icon" src="svg/{{ .icon }}" alt="{{ .name }}" aria-hidden="true">
</a>
</li>
{{ end }}
</ul>
</div>
{{ end }}

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

View file

View file

@ -0,0 +1,34 @@
<!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 }}">
<link rel="icon" type="image/gif" href="{{ .Site.BaseURL }}images/favicon_32x32.gif" sizes="32x32">
<link rel="icon" type="image/gif" href="{{ .Site.BaseURL }}images/favicon_16x16.gif" sizes="16x16">
{{ partial "opengraph.html" . }}
{{ range .Site.Params.custom_css }}
<link rel="stylesheet" href="{{ . | relURL }}"/>
{{ end }}
{{ hugo.Generator }}
</head>

View file

@ -0,0 +1,25 @@
<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">
<li class="navigation-item">
<a href="/blog">Blog</a>
</li>
<li class="navigation-item">
<a href="/projects">Projets</a>
</li>
<li class="navigation-item">
<a href="/contact">Contact</a>
</li>
</ul>
</section>
</nav>

View file

@ -0,0 +1,45 @@
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:site" content="@{{ .Site.Params.twitterUser }}"/>
<meta name="twitter:creator" content="@{{ .Site.Params.twitterUser }}"/>
{{/*if .Params.images }}
{{ $baseUrl := .Permalink }}
{{ range first 1 .Params.images }}
<meta name="twitter:image" content="{{ $baseUrl }}{{ . }}"/>
{{ end }}
{{ else }}
<meta name="twitter:image" content="{{ .Site.BaseURL }}images/{{ .Site.Params.avatar }}"/>
{{ 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 @@
{{ 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 @@
<abbr title="{{ .Get "title" }}">{{ .Get "text" }}</abbr>

View file

@ -0,0 +1,4 @@
<details><summary>{{ .Get "title" }}</summary>
{{ .Inner }}
</details>

View file

@ -0,0 +1,21 @@
{{ $img := $.Page.Resources.GetMatch (.Get "src")}}
{{ $test := $img.Permalink }}
{{ $name_splitted := split $img.RelPermalink "." }}
{{ $name_base := index $name_splitted 0 }}
<figure {{ with .Get "class" }} class="{{ . }}"{{ end }}>
{{ with .Get "link" }}
<a href="{{ . }}">
{{ end }}
<picture>
<source srcset="{{$img.RelPermalink}}" type="image/jpg">
<img src="{{ $img.RelPermalink }}" alt="{{.Get "alt" }}" />
</picture>
{{ with .Get "link" }}
</a>
{{ end }}
{{ with .Get "title" }}
<figcaption>
<p>{{ . }}</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,8 @@
<figure class="tabular {{ with .Get "class"}}{{ . }}{{ end }}">
{{ .Inner | markdownify }}
{{ with .Get "title" }}
<figcaption>
<p>{{ . }}</p>
</figcaption>
{{ end }}
</figure>

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

@ -0,0 +1,670 @@
/******************* Constants *******************/
:root {
--font-color: #EFEFEF;
--font-color-em: #8C8C8C;
--background-color: #1C1C1C;
--background-color-light: #252525;
--background-color-dark: #121212;
--avatar-background: #B6B6B6;
}
/******************* 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 {
line-height: 1.6em;
}
/******************* Links *******************/
a {
text-decoration: none;
color: var(--font-color);
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;
border-bottom: 1px dashed;
}
a:active {
border-bottom: 1px solid;
}
a: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);
}
#navigation a:active {
color: var(--font-color);
border: none;
}
#navigation a:focus {
outline: none;
}
#navigation .navigation-container {
margin: 0 auto;
max-width: 90vw;
}
@media only screen and (max-width: 320px) {
#navigation .navigation-container {
max-width: 100vw;
}
}
@media only screen and (min-width: 1000px) {
#navigation .navigation-container {
max-width: 900px;
}
}
#navigation-title {
letter-spacing: .1rem;
text-transform: uppercase;
font-weight: bold;
font-size: 1em;
}
/******************* 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: 20px;
width: 24px;
top: 14px;
background-image: url(../svg/bars.svg);
background-size: contain;
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;
}
#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;
}
#social {
list-style: none;
padding: 0;
}
#avatar img {
max-width: 120px;
border-radius: 40%;
background-color: var(--avatar-background);
}
@media only screen and (min-width: 768px) {
#avatar img {
max-width: 200px;
}
}
#social .social-element {
display: inline-block;
vertical-align: middle;
height: 32px;
margin-top: 1em;
}
#social .social-element a {
height: 24px;
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: 32px;
}
}
/******************* Simple Page *******************/
.container {
max-width: 90vw;
margin: 0 auto;
width: 100%;
}
@media only screen and (min-width: 1000px) {
.container {
max-width: 900px;
}
}
.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;
}
/******************* Articles List *******************/
.articles-list {
list-style: none;
padding-left: 0;
}
.articles-list li {
margin: 1em 0;
}
.articles-list .date {
display: block;
width: 15em;
text-align: left;
padding-right: 1.5em;
}
@media only screen and (min-width: 768px) {
.articles-list .date {
display: inline-block;
text-align: right;
}
}
.articles-list .title {
font-weight: bold;
}
/******************* Paginator *******************/
.pagination {
padding-left: 0;
margin: auto;
text-align: center;
}
.pagination li {
display: inline-block;
}
/******************* Article *******************/
.container article {
margin: 0 1em;
}
@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>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;
}
}
/******************* Article Body *******************/
.article-body {
margin-bottom: 2em;
}
.article-body img {
max-width: 100%;
}
.article-body h1 {
font-size: 2.55rem;
margin: 3.5rem 0 1.8rem;
}
.article-body h2 {
font-size: 2.17rem;
margin: 2.98rem 0 1.53rem;
}
.article-body h3 {
font-size: 1.84rem;
margin: 2.53rem 0 1.30rem;
}
.article-body h4 {
font-size: 1.57rem;
margin: 2.15rem 0 1.11rem;
}
.article-body h5 {
font-size: 1.33rem;
margin: 1.83rem 0 0.94rem;
}
.article-body h6 {
font-size: 1.13rem;
margin: 1.55rem 0 0.80rem;
}
@media only screen and (max-width: 320px) {
.article-body h1 {
font-size: 2.16rem;
margin: 2rem 0 1.6rem;
}
.article-body h2 {
font-size: 1.94rem;
margin: 1.80rem 0 1.44rem;
}
.article-body h3 {
font-size: 1.75rem;
margin: 1.62rem 0 1.30rem;
}
.article-body h4 {
font-size: 1.57rem;
margin: 1.46rem 0 1.17rem;
}
.article-body h5 {
font-size: 1.42rem;
margin: 1.31rem 0 1.05rem;
}
.article-body h6 {
font-size: 1.28rem;
margin: 1.18rem 0 0.94rem;
}
}
/******************* Article Footer *******************/
.article-footer {
font-style: italic;
font-size: 0.8rem;
margin: 2rem 0;
}
.article-footer .spacer {
display: inline-block;
width: 1em;
height: 1px;
margin: 0 .5em;
background-color: var(--font-color);
vertical-align: middle;
}
.article-footer .footer-link {
display: block;
}
.article-footer .footer-link .spacer {
display: none;
}
.article-footer .footer-link .label {
display: inline-block;
width: 8em;
}
@media only screen and (min-width: 768px) {
.article-footer .footer-link {
display: inline-block;
}
.article-footer .footer-link .label {
width: auto;
}
.article-footer .footer-link .spacer {
display: inline-block !important;
}
}
/******************* Article Figure *******************/
.article-body figure {
margin: 1em 0;
display: table;
}
.article-body figure picture,
.article-body figure figcaption {
display: table-row;
border-spacing: 0;
}
.article-body figure img {
vertical-align: middle;
padding-bottom: 0.3em;
}
@media only screen and (min-width: 768px) {
.article-body figure {
margin: 1em 2.5em;
}
.article-body figure.logo,
.article-body figure.inline {
margin: 0;
}
}
.article-body figure.logo {
display: inline-block;
}
.article-body figure.inline {
display: inline-block;
}
.article-body figure.logo img {
width: 100px;
vertical-align: bottom;
}
.article-body figure.border img {
padding: 0.3rem;
border: 3px solid var(--background-color-light);
min-width: 100%;
}
.article-body figure.border figcaption {
background-color: var(--background-color-light);
}
.article-body figure a {
display: block;
min-height: 100%;
}
.article-body figure figcaption p,
.article-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;
}
@media only screen and (max-width: 320px) {
.article-body .footnotes ol {
padding-left: 2em;
}
}
.article-body .separator {
margin: 0 0.2em;
}
/******************* Article Tabular *******************/
.article-body .tabular.border table {
padding: 0.3rem;
border: 3px solid var(--background-color-light);
min-width: 100%;
}
.article-body .tabular td {
padding: 0 0.4rem;
}
.article-body .tabular th {
border-bottom: 3px solid var(--background-color-light);
}
/******************* Article Abbreviation *******************/
abbr {
text-decoration: none;
}
abbr[title]:after {
content: " (" attr(title) ")";
}
@media only screen and (min-width: 768px) {
abbr[title] {
border-bottom: 1px dotted var(--font-color);
cursor:help;
}
abbr[title]:after {
content: none;
}
}
/******************* Article Code *******************/
.highlight pre {
font-size: 0.8rem;
white-space: pre-wrap;
padding: 0.3rem;
margin-top: 0.5rem;
background: repeating-linear-gradient(28deg, #1C1C1C, #1C1C1C 20px, #121212 20px, #121212 40px);
}
:not(pre)>code {
font-size: 1rem;
color: var(--font-color-em);
}
/******************* Article Details *******************/
details[open] {
outline: 1px solid white;
outline-offset: .3rem;
}
details summary {
transition: box-shadow 0.2s ease, outline-offset 0.2s ease, transform 0.2s ease;
cursor: pointer;
padding: 0.3rem;
background: repeating-linear-gradient(28deg, #1C1C1C, #1C1C1C 20px, #252525 20px, #252525 40px);
}
@media only screen and (min-width: 768px) {
details summary {
text-decoration: 1px underline dotted;
}
details summary:hover {
text-decoration: 1px underline dashed;
}
}
details summary:after {
content: "[touche pour dérouler]";
font-size: 0.7rem;
margin-left: 0.5em;
font-style: italic;
}
details[open] summary:after {
content: "[touche pour enrouler]";
}
@media only screen and (min-width: 768px) {
details summary:after {
content: none;
}
details[open] summary:after {
content: none;
}
}
details[open] summary {
background-color: var(--background-color-light);
}
details summary:hover {
outline: 1px solid !important;
outline-offset: .3rem;
}
details summary:focus {
outline: none;
}
details[open] summary:hover {
outline: 1px dotted !important;
outline-offset: .3rem;
}
/******************* Article Details *******************/
.article-body sup {
vertical-align: top;
position: relative;
top: -0.5rem;
}
/******************* Article Blockquote *******************/
.bigquote {
position: relative;
background-color: var(--background-color-light);
padding: 1rem;
border-radius: 1.5rem;
margin-top: 2rem;
}
.bigquote p:first-of-type {
margin-top: 0;
}
.bigquote footer {
text-align: right;
}
.bigquote:after {
position: absolute;
content: "”";
color: var(--text-color);
font-size: 10rem;
line-height: 0;
top: 2rem;
right: 1rem;
font-family: Arial;
}

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

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="13.333"><path d="M16 11.333v1.334a.671.671 0 01-.667.666H.667A.671.671 0 010 12.667v-1.334c0-.364.302-.666.667-.666h14.666c.365 0 .667.302.667.666zM16 6v1.333a.671.671 0 01-.667.667H.667A.671.671 0 010 7.333V6c0-.365.302-.667.667-.667h14.666c.365 0 .667.302.667.667zm0-5.333V2a.671.671 0 01-.667.667H.667A.671.671 0 010 2V.667C0 .302.302 0 .667 0h14.666c.365 0 .667.302.667.667z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 461 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/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/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.912"><path d="M2.833 0C2.207 0 1.479.22.916.724c-.564.503-.958 1.29-.912 2.4C.075 4.85.906 5.81 1.873 6.328c.943.505 2.01.598 2.643.615.047.173.16.412.319.688.175.302.406.644.668.97.522.653 1.159 1.248 1.74 1.31h4.76c.747-.055 1.424-.707 2.005-1.632.58-.926 1.065-2.136 1.412-3.34.347-1.203.556-2.4.578-3.305.011-.452-.023-.83-.115-1.106a.842.842 0 00-.186-.331.429.429 0 00-.298-.132h-.004c-2.614.138-4.162.208-5.49.22v3.02l-.414-.206L9.488.286c-1.523 0-2.863-.08-5.411-.22L4.075.064h-.001C3.762.065 3.315.002 2.833 0zm.173 1.337h.087c.17 1.68.447 2.705.987 4.197-.682-.098-1.307-.264-1.788-.602-.506-.355-.862-.897-.974-1.77-.059-.462.016-.928.293-1.271.259-.322.697-.545 1.395-.554zm5.65 1.657c.102 0 .205.023.304.071l.495.24-.355.728a.444.444 0 00-.16.026.444.444 0 00-.267.569.444.444 0 00.073.129l-.612 1.254a.444.444 0 00-.147.026.444.444 0 00-.267.568.444.444 0 00.568.267.444.444 0 00.267-.568.444.444 0 00-.104-.163l.597-1.222a.444.444 0 00.193-.024.444.444 0 00.141-.083c.233.11.418.197.554.272.204.114.276.189.298.271.022.083-.002.24-.117.517-.088.21-.222.485-.396.842a.444.444 0 00-.166.026.444.444 0 00-.268.569.444.444 0 00.568.267.444.444 0 00.268-.568.444.444 0 00-.09-.15c.171-.353.306-.628.4-.854.124-.298.19-.521.133-.736-.057-.215-.232-.354-.463-.483-.153-.085-.34-.172-.57-.28a.444.444 0 00-.024-.178.444.444 0 00-.097-.155l.35-.716 1.933.939a.7.7 0 01.324.937L10.69 8.066a.7.7 0 01-.936.324L7.018 7.062a.7.7 0 01-.324-.937L8.023 3.39a.7.7 0 01.633-.395z" fill="#efefef"/></svg>

After

Width:  |  Height:  |  Size: 1.5 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/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/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/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

21
theme.toml Normal file
View file

@ -0,0 +1,21 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "Iðunn"
license = "MIT"
licenselink = "https://git.vulgarisons.info/raghnarok/hugo_idunn/src/branch/master/LICENSE"
description = "Simple Hugo theme, inspired from Terrassa but way simplier"
homepage = "https://git.vulgarisons.info/raghnarok/hugo_idunn"
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"
# If porting an existing theme
[original]
name = "Terrassa"
homepage = "https://github.com/danielkvist/hugo-terrassa-theme"
repo = "https://github.com/danielkvist/hugo-terrassa-theme"