Yet another start
This commit is contained in:
commit
17b549c3b8
|
@ -0,0 +1,6 @@
|
|||
/public/*
|
||||
!/public/.gitkeep
|
||||
resources/_gen
|
||||
node_modules/
|
||||
hugo_stats.json
|
||||
.hugo_build.lock
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
baseURL = "https://fvezzoli.villavasco.ovh/"
|
||||
title = "IZ2VTW's board"
|
||||
|
||||
copyright = "©2021 Francesco IZ2VTW Vezzoli. This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"CC-BY-SA\" style=\"display:inline-block\" src=\"https://i.creativecommons.org/l/by-sa/4.0/80x15.png\" /></a>"
|
||||
|
||||
theme = "cleanwasteland"
|
||||
#enableGitInfo = true
|
||||
|
||||
enableEmoji = true
|
||||
|
||||
enableRobotsTXT = true
|
||||
## Languages
|
||||
DefaultContentLanguage = "it"
|
||||
[languages.en]
|
||||
languageName = "English"
|
||||
description = "This is a disorderly place to save things: notes and ideas for various project, solutions to my daily problems."
|
||||
[languages.it]
|
||||
languageName = "Italiano"
|
||||
description = "Questo è un luogo disordinato per salvare cose: appunti e idee per vari progetti, soluzioni ai miei problemi quotidiani."
|
||||
|
||||
[permalinks]
|
||||
post = "/:sections/:year/:month/:slug/"
|
||||
|
||||
[Params]
|
||||
editURL = "https://code.villavasco.ovh/fvezzoli/fvezzoli.villavasco.ovh/_edit/master/content/"
|
||||
commitURL = "https://code.villavasco.ovh/fvezzoli/fvezzoli.villavasco.ovh/commit/"
|
||||
showReadingTime = true
|
||||
|
||||
[Author]
|
||||
name = "Francesco Vezzoli"
|
||||
gravatar = "fvezzoli@villavasco.ovh"
|
||||
# social icons
|
||||
email = "fvezzoli@villavasco.ovh"
|
||||
facebook="francescovezzoli85"
|
||||
github = "fvezzoli"
|
||||
twitter = "fvezzoli"
|
||||
mastodon = "https://mastodon.uno/@fvezzoli"
|
||||
|
||||
[sitemap]
|
||||
changefreq = "monthly"
|
||||
filename = "sitemap.xml"
|
||||
priority = 0.5
|
||||
|
||||
[build]
|
||||
writeStats = true
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: "Personal Home Page"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
---
|
||||
|
||||
This small personal space is a collection of different ideas, inspirations and solutions for various projects or problems.
|
||||
|
||||
It is in no way meant to be the perfect collection of information and absolute truths, but rather a haphazard collection of what is on my mind or what has come in handy to solve difficulties I have encountered.
|
||||
So don't expect a place where I will post regularly, but rather on a spot basis to jot down what I have found useful and what might be useful to others as well.
|
||||
|
||||
If you want to know more about me go to the [dedicated page]({{< ref "/about" >}} "About Me")
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: "Personal Home Page"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
---
|
||||
|
||||
Questo piccolo spazio personale è la raccolta di diverse idee, spunti e soluzioni per progetti o problemi vari.
|
||||
|
||||
Non vuole essere in nessun modo la raccolta perfetta di informazioni e verità assolute, ma piuttosto una raccolta disordinata di quello che mi passa per la mente o quello che mi è tornato utile per risolvere le difficoltà che ho incontrato.
|
||||
Non aspettarti quindi un posto in cui pubblicherò regolarmente, ma piuttosto a spot per appuntarmi quello che io ho trovato utile e che potrebbe essere utile anche per altri.
|
||||
|
||||
Se vuoi sapere qualcosa in più su di me vai nella [pagina apposita]({{< ref "/about" >}} "About Me")
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
title: "About ME"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
weight: 1000
|
||||
menu:
|
||||
main:
|
||||
---
|
||||
|
||||
Here are a few pages about me, maybe they are not useful to you, but I put them.
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
title: "Qualcosa di Me"
|
||||
date: 2018-09-09T22:55:04+02:00
|
||||
draft: false
|
||||
weight: 1000
|
||||
menu:
|
||||
main:
|
||||
---
|
||||
|
||||
Qui ci sono qualche pagine su di me, magari non ti sono utili, però le ho messe.
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "The pin board"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
menu:
|
||||
main:
|
||||
---
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "The pin board"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
menu:
|
||||
main:
|
||||
---
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: "Wiki Pages"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
menu:
|
||||
main:
|
||||
---
|
||||
|
||||
Here you should find descriptions and material on various projects I am working on.
|
||||
|
||||
In this binder you can find everything a little bit: from projects that will never come to life, to those that I thought about but abandoned to (maybe :sweat_smile:) those that I have actually made.
|
||||
Especially for uncompleted projects you might find a lot of material (notes, photos, sketches, links...) and very little explanation. Those should come as the project progresses.
|
||||
|
||||
The idea, however, is to start from the idea and work through the documentation to the realization (hopefully :memo:)
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: "Wiki Pages"
|
||||
date: 2022-09-27T22:58:13+02:00
|
||||
draft: false
|
||||
menu:
|
||||
main:
|
||||
---
|
||||
|
||||
Qui dovresti trovare descrizioni e materiale su progetti vari che sto portando avanti.
|
||||
|
||||
In questo raccoglitore si può trovare di tutto un po': dai progetti che non prenderanno mai vita, a quelli che ho pensato ma ho abbandonato a (forse :sweat_smile:) quelli che ho effettivamente realizzato.
|
||||
Soprattutto per i progetti non completi potresti trovare tanto materiale (appunti, foto, schizzi, link...) e molte poche spiegazioni. Quelle dovrebbero arrivare man mano il progetto avanza.
|
||||
|
||||
L'idea comunque è quella di partire dall'idea per arrivare alla realizzazione passando per la documentazione (speriamo :memo:)
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"name": "fvezzoli.villavasco.ovh",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "Francesco Vezzoli <fvezzoli@villavasco.ovh>",
|
||||
"license": "MIT",
|
||||
"browserslist": [
|
||||
"last 1 version",
|
||||
"> 1%",
|
||||
"maintained node versions",
|
||||
"not dead"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^5.0.0",
|
||||
"@tailwindcss/aspect-ratio": "^0.4.2",
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@tailwindcss/line-clamp": "^0.4.2",
|
||||
"@tailwindcss/typography": "^0.5.7",
|
||||
"autoprefixer": "^10.4.12",
|
||||
"postcss": "^8.4.17",
|
||||
"postcss-cli": "^10.0.0",
|
||||
"tailwindcss": "^3.1.8"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2022 Francesco Vezzoli
|
||||
|
||||
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.
|
|
@ -0,0 +1,2 @@
|
|||
+++
|
||||
+++
|
|
@ -0,0 +1,23 @@
|
|||
const themeDir = __dirname + '/../../';
|
||||
|
||||
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
// see https://gohugo.io/hugo-pipes/postprocess/#css-purging-with-postcss
|
||||
content: [
|
||||
'./hugo_stats.json'
|
||||
],
|
||||
//safelist : [ /type/ ],
|
||||
defaultExtractor: (content) => {
|
||||
let els = JSON.parse(content).htmlElements;
|
||||
return els.tags.concat(els.classes, els.ids);
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
plugins: [
|
||||
require('tailwindcss')(themeDir + 'assets/css/tailwind.config.js'),
|
||||
require('autoprefixer')({
|
||||
path: [themeDir]
|
||||
}),
|
||||
...(process.env.HUGO_ENVIRONMENT === 'production' ? [purgecss] : [])
|
||||
]
|
||||
}
|
|
@ -0,0 +1,124 @@
|
|||
/* TailwindCSS base styles */
|
||||
/* see https://tailwindcss.com/docs/functions-and-directives#tailwind */
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@tailwind variants;
|
||||
|
||||
/* put site specific css styles here using the @layer directive */
|
||||
/* see https://tailwindcss.com/docs/functions-and-directives#layer */
|
||||
@layer components {
|
||||
a {
|
||||
@apply text-blue-700 underline;
|
||||
}
|
||||
a:hover {
|
||||
@apply text-black no-underline;
|
||||
}
|
||||
h1 {
|
||||
@apply font-bold text-4xl pb-3 pt-4;
|
||||
}
|
||||
h2 {
|
||||
@apply font-semibold text-2xl pb-2 pt-4;
|
||||
}
|
||||
h3 {
|
||||
@apply font-semibold text-xl pb-1 pt-3;
|
||||
}
|
||||
p {
|
||||
@apply my-2;
|
||||
}
|
||||
ul {
|
||||
@apply list-disc pl-8;
|
||||
}
|
||||
ol {
|
||||
@apply list-decimal pl-8;
|
||||
}
|
||||
}
|
||||
|
||||
div:not(.highlight) > pre {
|
||||
/* purgecss ignore current */
|
||||
@apply overflow-x-auto border rounded-lg p-2;
|
||||
}
|
||||
|
||||
|
||||
main.kind-404 {
|
||||
@apply bg-red-100
|
||||
}
|
||||
div#notFoundBox p.notFoundTop {
|
||||
font-size: 10rem;
|
||||
}
|
||||
|
||||
div#home-content p {
|
||||
@apply text-justify
|
||||
}
|
||||
|
||||
div.notice-content {
|
||||
@apply p-2
|
||||
}
|
||||
div.notice-box {
|
||||
@apply border border-2 rounded-lg my-3 border-gray-400 bg-gray-100
|
||||
}
|
||||
div.notice-tip {
|
||||
@apply border-green-400 bg-green-100
|
||||
}
|
||||
div.notice-info {
|
||||
@apply border-blue-400 bg-blue-100
|
||||
}
|
||||
div.notice-warning {
|
||||
@apply border-yellow-500 bg-yellow-100
|
||||
}
|
||||
div.notice-attention {
|
||||
@apply border-red-400 bg-red-100
|
||||
}
|
||||
div.notice-title {
|
||||
@apply bg-gray-400 rounded-t text-white font-bold px-4 py-2
|
||||
}
|
||||
div.notice-title-tip {
|
||||
@apply bg-green-400
|
||||
}
|
||||
div.notice-title-info {
|
||||
@apply bg-blue-400
|
||||
}
|
||||
div.notice-title-warning {
|
||||
@apply bg-yellow-500
|
||||
}
|
||||
div.notice-title-attention {
|
||||
@apply bg-red-400
|
||||
}
|
||||
|
||||
#TableOfContents {
|
||||
@apply border-2 border-blue-500 rounded-lg
|
||||
}
|
||||
#TableOfContents * {
|
||||
@apply pl-1
|
||||
}
|
||||
#TableOfContents li {
|
||||
@apply list-none text-lg font-bold py-1
|
||||
}
|
||||
#TableOfContents>ul>li>ul>li>ul li {
|
||||
@apply text-base pl-2 font-semibold
|
||||
}
|
||||
#TableOfContents>ul>li>ul>li>ul>li>ul li {
|
||||
@apply text-sm font-normal
|
||||
}
|
||||
|
||||
div.myfigure {
|
||||
@apply text-center
|
||||
}
|
||||
div.myfigure figure {
|
||||
@apply inline-block border-2 border-gray-400 bg-gray-100 rounded-lg shadow-lg my-3
|
||||
}
|
||||
div.myfigure figure img {
|
||||
@apply p-4
|
||||
}
|
||||
div.myfigure figure figcaption {
|
||||
@apply text-center text-gray-600 p-1 border-t-2 border-gray-400
|
||||
}
|
||||
div.myfigure figure figcaption h4 {
|
||||
@apply font-bold text-lg
|
||||
}
|
||||
div.myfigure figure figcaption p.caption {
|
||||
@apply text-base
|
||||
}
|
||||
div.myfigure figure figcaption p.attr {
|
||||
@apply text-xs text-right m-0 mr-4
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
module.exports = {
|
||||
content: [
|
||||
"./themes/**/layouts/**/*.html",
|
||||
"./content/**/layouts/**/*.html",
|
||||
"./layouts/**/*.html",
|
||||
"./content/**/*.html"
|
||||
],
|
||||
theme: {
|
||||
extend: {},
|
||||
},
|
||||
plugins: [
|
||||
require('@tailwindcss/typography'),
|
||||
require('@tailwindcss/forms'),
|
||||
require('@tailwindcss/aspect-ratio'),
|
||||
require('@tailwindcss/line-clamp'),
|
||||
]
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,19 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
|
||||
.far,
|
||||
.fa-regular {
|
||||
font-weight: 400; }
|
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
|
@ -0,0 +1,19 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fas,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
|
@ -0,0 +1,635 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
|
||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
|
||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
|
||||
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
||||
|
||||
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
||||
overflow: visible;
|
||||
box-sizing: content-box; }
|
||||
|
||||
.svg-inline--fa {
|
||||
display: var(--fa-display, inline-block);
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -.125em; }
|
||||
.svg-inline--fa.fa-2xs {
|
||||
vertical-align: 0.1em; }
|
||||
.svg-inline--fa.fa-xs {
|
||||
vertical-align: 0em; }
|
||||
.svg-inline--fa.fa-sm {
|
||||
vertical-align: -0.07143em; }
|
||||
.svg-inline--fa.fa-lg {
|
||||
vertical-align: -0.2em; }
|
||||
.svg-inline--fa.fa-xl {
|
||||
vertical-align: -0.25em; }
|
||||
.svg-inline--fa.fa-2xl {
|
||||
vertical-align: -0.3125em; }
|
||||
.svg-inline--fa.fa-pull-left {
|
||||
margin-right: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-pull-right {
|
||||
margin-left: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-li {
|
||||
width: var(--fa-li-width, 2em);
|
||||
top: 0.25em; }
|
||||
.svg-inline--fa.fa-fw {
|
||||
width: var(--fa-fw-width, 1.25em); }
|
||||
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.fa-layers-text, .fa-layers-counter {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
|
||||
.fa-layers {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: -.125em;
|
||||
width: 1em; }
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-text {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-counter {
|
||||
background-color: var(--fa-counter-background-color, #ff253a);
|
||||
border-radius: var(--fa-counter-border-radius, 1em);
|
||||
box-sizing: border-box;
|
||||
color: var(--fa-inverse, #fff);
|
||||
line-height: var(--fa-counter-line-height, 1);
|
||||
max-width: var(--fa-counter-max-width, 5em);
|
||||
min-width: var(--fa-counter-min-width, 1.5em);
|
||||
overflow: hidden;
|
||||
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
||||
right: var(--fa-right, 0);
|
||||
text-overflow: ellipsis;
|
||||
top: var(--fa-top, 0);
|
||||
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
||||
transform: scale(var(--fa-counter-scale, 0.25));
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-bottom-right {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
right: var(--fa-right, 0);
|
||||
top: auto;
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: bottom right;
|
||||
transform-origin: bottom right; }
|
||||
|
||||
.fa-layers-bottom-left {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: auto;
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: bottom left;
|
||||
transform-origin: bottom left; }
|
||||
|
||||
.fa-layers-top-right {
|
||||
top: var(--fa-top, 0);
|
||||
right: var(--fa-right, 0);
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-top-left {
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: var(--fa-top, 0);
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left; }
|
||||
|
||||
.fa-1x {
|
||||
font-size: 1em; }
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em; }
|
||||
|
||||
.fa-3x {
|
||||
font-size: 3em; }
|
||||
|
||||
.fa-4x {
|
||||
font-size: 4em; }
|
||||
|
||||
.fa-5x {
|
||||
font-size: 5em; }
|
||||
|
||||
.fa-6x {
|
||||
font-size: 6em; }
|
||||
|
||||
.fa-7x {
|
||||
font-size: 7em; }
|
||||
|
||||
.fa-8x {
|
||||
font-size: 8em; }
|
||||
|
||||
.fa-9x {
|
||||
font-size: 9em; }
|
||||
|
||||
.fa-10x {
|
||||
font-size: 10em; }
|
||||
|
||||
.fa-2xs {
|
||||
font-size: 0.625em;
|
||||
line-height: 0.1em;
|
||||
vertical-align: 0.225em; }
|
||||
|
||||
.fa-xs {
|
||||
font-size: 0.75em;
|
||||
line-height: 0.08333em;
|
||||
vertical-align: 0.125em; }
|
||||
|
||||
.fa-sm {
|
||||
font-size: 0.875em;
|
||||
line-height: 0.07143em;
|
||||
vertical-align: 0.05357em; }
|
||||
|
||||
.fa-lg {
|
||||
font-size: 1.25em;
|
||||
line-height: 0.05em;
|
||||
vertical-align: -0.075em; }
|
||||
|
||||
.fa-xl {
|
||||
font-size: 1.5em;
|
||||
line-height: 0.04167em;
|
||||
vertical-align: -0.125em; }
|
||||
|
||||
.fa-2xl {
|
||||
font-size: 2em;
|
||||
line-height: 0.03125em;
|
||||
vertical-align: -0.1875em; }
|
||||
|
||||
.fa-fw {
|
||||
text-align: center;
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-ul {
|
||||
list-style-type: none;
|
||||
margin-left: var(--fa-li-margin, 2.5em);
|
||||
padding-left: 0; }
|
||||
.fa-ul > li {
|
||||
position: relative; }
|
||||
|
||||
.fa-li {
|
||||
left: calc(var(--fa-li-width, 2em) * -1);
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: var(--fa-li-width, 2em);
|
||||
line-height: inherit; }
|
||||
|
||||
.fa-border {
|
||||
border-color: var(--fa-border-color, #eee);
|
||||
border-radius: var(--fa-border-radius, 0.1em);
|
||||
border-style: var(--fa-border-style, solid);
|
||||
border-width: var(--fa-border-width, 0.08em);
|
||||
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
||||
|
||||
.fa-pull-left {
|
||||
float: left;
|
||||
margin-right: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-pull-right {
|
||||
float: right;
|
||||
margin-left: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-beat {
|
||||
-webkit-animation-name: fa-beat;
|
||||
animation-name: fa-beat;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-bounce {
|
||||
-webkit-animation-name: fa-bounce;
|
||||
animation-name: fa-bounce;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
||||
|
||||
.fa-fade {
|
||||
-webkit-animation-name: fa-fade;
|
||||
animation-name: fa-fade;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-beat-fade {
|
||||
-webkit-animation-name: fa-beat-fade;
|
||||
animation-name: fa-beat-fade;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-flip {
|
||||
-webkit-animation-name: fa-flip;
|
||||
animation-name: fa-flip;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-shake {
|
||||
-webkit-animation-name: fa-shake;
|
||||
animation-name: fa-shake;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin {
|
||||
-webkit-animation-name: fa-spin;
|
||||
animation-name: fa-spin;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
||||
animation-duration: var(--fa-animation-duration, 2s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin-reverse {
|
||||
--fa-animation-direction: reverse; }
|
||||
|
||||
.fa-pulse,
|
||||
.fa-spin-pulse {
|
||||
-webkit-animation-name: fa-spin;
|
||||
animation-name: fa-spin;
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
||||
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.fa-beat,
|
||||
.fa-bounce,
|
||||
.fa-fade,
|
||||
.fa-beat-fade,
|
||||
.fa-flip,
|
||||
.fa-pulse,
|
||||
.fa-shake,
|
||||
.fa-spin,
|
||||
.fa-spin-pulse {
|
||||
-webkit-animation-delay: -1ms;
|
||||
animation-delay: -1ms;
|
||||
-webkit-animation-duration: 1ms;
|
||||
animation-duration: 1ms;
|
||||
-webkit-animation-iteration-count: 1;
|
||||
animation-iteration-count: 1;
|
||||
transition-delay: 0s;
|
||||
transition-duration: 0s; } }
|
||||
|
||||
@-webkit-keyframes fa-beat {
|
||||
0%, 90% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@keyframes fa-beat {
|
||||
0%, 90% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@-webkit-keyframes fa-bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@keyframes fa-bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@-webkit-keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@-webkit-keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@-webkit-keyframes fa-flip {
|
||||
50% {
|
||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@keyframes fa-flip {
|
||||
50% {
|
||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@-webkit-keyframes fa-shake {
|
||||
0% {
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
-webkit-transform: rotate(15deg);
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
-webkit-transform: rotate(-18deg);
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
-webkit-transform: rotate(18deg);
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
-webkit-transform: rotate(-22deg);
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
-webkit-transform: rotate(22deg);
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
-webkit-transform: rotate(-12deg);
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
-webkit-transform: rotate(12deg);
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@keyframes fa-shake {
|
||||
0% {
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
-webkit-transform: rotate(15deg);
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
-webkit-transform: rotate(-18deg);
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
-webkit-transform: rotate(18deg);
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
-webkit-transform: rotate(-22deg);
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
-webkit-transform: rotate(22deg);
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
-webkit-transform: rotate(-12deg);
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
-webkit-transform: rotate(12deg);
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@-webkit-keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
.fa-rotate-90 {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg); }
|
||||
|
||||
.fa-rotate-180 {
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg); }
|
||||
|
||||
.fa-rotate-270 {
|
||||
-webkit-transform: rotate(270deg);
|
||||
transform: rotate(270deg); }
|
||||
|
||||
.fa-flip-horizontal {
|
||||
-webkit-transform: scale(-1, 1);
|
||||
transform: scale(-1, 1); }
|
||||
|
||||
.fa-flip-vertical {
|
||||
-webkit-transform: scale(1, -1);
|
||||
transform: scale(1, -1); }
|
||||
|
||||
.fa-flip-both,
|
||||
.fa-flip-horizontal.fa-flip-vertical {
|
||||
-webkit-transform: scale(-1, -1);
|
||||
transform: scale(-1, -1); }
|
||||
|
||||
.fa-rotate-by {
|
||||
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
||||
transform: rotate(var(--fa-rotate-angle, none)); }
|
||||
|
||||
.fa-stack {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-stack-1x,
|
||||
.fa-stack-2x {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: var(--fa-stack-z-index, auto); }
|
||||
|
||||
.svg-inline--fa.fa-stack-1x {
|
||||
height: 1em;
|
||||
width: 1.25em; }
|
||||
|
||||
.svg-inline--fa.fa-stack-2x {
|
||||
height: 2em;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
||||
|
||||
.sr-only,
|
||||
.fa-sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.sr-only-focusable:not(:focus),
|
||||
.fa-sr-only-focusable:not(:focus) {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.svg-inline--fa .fa-primary {
|
||||
fill: var(--fa-primary-color, currentColor);
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa .fa-secondary {
|
||||
fill: var(--fa-secondary-color, currentColor);
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa mask .fa-primary,
|
||||
.svg-inline--fa mask .fa-secondary {
|
||||
fill: black; }
|
||||
|
||||
.fad.fa-inverse,
|
||||
.fa-duotone.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,26 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
|
||||
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
|
||||
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
|
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,22 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-display: block;
|
||||
font-weight: 900;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Free';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2022 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,29 @@
|
|||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Get all "navbar-burger" elements
|
||||
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||||
// Check if there are any navbar burgers
|
||||
if ($navbarBurgers.length > 0) {
|
||||
// Add a click event on each of them
|
||||
$navbarBurgers.forEach( el => {
|
||||
el.addEventListener('click', () => {
|
||||
const svgOpen = el.querySelector('.is-open');
|
||||
const svgClosed = el.querySelector('.is-closed');
|
||||
const targetMenu = document.getElementById(el.dataset.target);
|
||||
targetMenu.classList.remove('hidden', 'block');
|
||||
|
||||
if (svgOpen.getAttribute('visibility') == 'visible')
|
||||
{
|
||||
svgOpen.setAttribute('visibility', 'hidden');
|
||||
svgClosed.setAttribute('visibility', 'visible');
|
||||
targetMenu.classList.add('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
svgOpen.setAttribute('visibility', 'visible');
|
||||
svgClosed.setAttribute('visibility', 'hidden');
|
||||
targetMenu.classList.add('block');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
|
@ -0,0 +1,41 @@
|
|||
[[icons]]
|
||||
id = "email"
|
||||
url = "mailto:%s"
|
||||
title = "Email me"
|
||||
icon = "fas fa-at"
|
||||
attribute = ""
|
||||
|
||||
[[icons]]
|
||||
id = "facebook"
|
||||
url = "https://www.facebook.com/%s"
|
||||
title = "Facebook"
|
||||
icon = "fab fa-facebook-f"
|
||||
attribute = ""
|
||||
|
||||
[[icons]]
|
||||
id = "github"
|
||||
url = "https://github.com/%s"
|
||||
title = "GitHub"
|
||||
icon = "fab fa-github"
|
||||
attribute = ""
|
||||
|
||||
[[icons]]
|
||||
id = "twitter"
|
||||
url = "https://twitter.com/%s"
|
||||
title = "Twitter"
|
||||
icon = "fab fa-twitter"
|
||||
attribute = ""
|
||||
|
||||
[[icons]]
|
||||
id = "keybase"
|
||||
url = "https://keybase.io/%s"
|
||||
title = "Keybase"
|
||||
icon = "fab fa-keybase"
|
||||
attribute = ""
|
||||
|
||||
[[icons]]
|
||||
id = "mastodon"
|
||||
url = "%s"
|
||||
title = "Mastodon"
|
||||
icon = "fab fa-mastodon"
|
||||
attribute = "rel=\"me\""
|
|
@ -0,0 +1,38 @@
|
|||
## ENGLISH LANGUAGE ##
|
||||
[404]
|
||||
other = "Non è possibile trovare la pagina richiesta"
|
||||
|
||||
[404_link]
|
||||
other = "Torna alla pagina precedente"
|
||||
|
||||
[AuthorGravatar]
|
||||
other = "Site author avatar"
|
||||
|
||||
[translations]
|
||||
other = "Read site also in: "
|
||||
|
||||
[wordCount]
|
||||
one = "1 word"
|
||||
other = "{{.Count}} words"
|
||||
|
||||
[readingTime]
|
||||
one = "1 min read"
|
||||
other = "{{.Count}} min read"
|
||||
|
||||
[previousPost]
|
||||
other = "Previous Post"
|
||||
|
||||
[nextPost]
|
||||
other = "Next Post"
|
||||
|
||||
[binder]
|
||||
other = "Binders project list"
|
||||
|
||||
[notebook]
|
||||
other = "Notebook list"
|
||||
|
||||
[discussion]
|
||||
other = "There is a discussion pages <a href=\"{{ .Permalink }}\">here</a>"
|
||||
|
||||
[editThisPage]
|
||||
other = "Improve this page"
|
|
@ -0,0 +1,38 @@
|
|||
## ITALIAN LANGUAGE ##
|
||||
[notFoundPage]
|
||||
other = "Non è possibile trovare la pagina richiesta"
|
||||
|
||||
[notFoundPageGoBack]
|
||||
other = "Torna alla pagina precedente"
|
||||
|
||||
[AuthorGravatar]
|
||||
other = "Avatar dell'autore del sito"
|
||||
|
||||
[translations]
|
||||
other = "Leggi il sito anche in: "
|
||||
|
||||
[wordCount]
|
||||
one = "1 word"
|
||||
other = "{{.Count}} words"
|
||||
|
||||
[readingTime]
|
||||
one = "1 min read"
|
||||
other = "{{.Count}} min read"
|
||||
|
||||
[previousPost]
|
||||
other = "Previous Post"
|
||||
|
||||
[nextPost]
|
||||
other = "Next Post"
|
||||
|
||||
[binder]
|
||||
other = "Lista raccoglitori progetti"
|
||||
|
||||
[notebook]
|
||||
other = "Lista quaderni"
|
||||
|
||||
[discussion]
|
||||
other = "C'è una discussione su questa pagina <a href=\"{{ .Permalink }}\">qui</a>"
|
||||
|
||||
[editThisPage]
|
||||
other = "Modifica la pagina"
|
|
@ -0,0 +1,7 @@
|
|||
{{ define "main" }}
|
||||
<div id="notFoundBox" class="text-center">
|
||||
<p class="notFoundTop">404</p>
|
||||
<p class="text-2xl">{{ i18n "notFoundPage" }}</p>
|
||||
<a href="#" onclick="history.go(-1)">{{ i18n "notFoundPageGoBack" }}</a>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ .Lang }}" prefix="og: https://ogp.me/ns#" class="h-full">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
{{- hugo.Generator -}}
|
||||
{{- partial "head.html" . -}}
|
||||
{{- partial "head_custom.html" . -}}
|
||||
</head>
|
||||
<body class="flex flex-col h-full">
|
||||
{{- partial "dev/dev-tools.html" . -}}
|
||||
<header class="w-full border-b border-grey p-4">
|
||||
{{- partial "header.html" . -}}
|
||||
</header>
|
||||
<main id="content" class="flex-1 container {{ if .IsHome }}max-w-5xl {{ end }}mx-auto p-8 kind-{{ .Kind | lower }}">
|
||||
{{ if not .IsHome }}
|
||||
{{ if not .Parent.IsHome }}
|
||||
{{ partial "breadcrumb.html" . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ block "main" . }}{{ end }}
|
||||
{{ if not .IsHome }}
|
||||
{{ if .Content }}
|
||||
{{ partial "gitinfo.html" . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</main>
|
||||
<footer class="w-full text-center border-t border-grey p-2 pin-b text-xs">
|
||||
{{- block "footer" . }}{{- partial "footer.html" . -}}{{ end -}}
|
||||
</footer>
|
||||
<!--{{- partial "footer_scripts.html" . -}}-->
|
||||
{{- partial "footer_custom.html" . -}}
|
||||
{{ template "_internal/google_analytics.html" . }}
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,16 @@
|
|||
{{ define "main" }}
|
||||
{{ if .Content }}
|
||||
{{ partial "list_content.html" . }}
|
||||
{{ end }}
|
||||
{{- range $i,$p := .Paginator.Pages -}}
|
||||
<div class="w-full notice-box notice-info my-5">
|
||||
<a href="{{ .Permalink }}" class="text-center">
|
||||
<h2 class="notice-title">{{ .Title }}</h2>
|
||||
</a>
|
||||
{{ if .Params.description }}
|
||||
<div class="m-2">{{ .Params.description }}</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ partial "paginator.html" . }}
|
||||
{{ end }}
|
|
@ -0,0 +1,11 @@
|
|||
{{ define "main" }}
|
||||
{{- if .Content -}}
|
||||
<article class="my-2">
|
||||
<h1 class="py-1">{{ .Title }}</h1>
|
||||
{{ if .Params.subtitle }}
|
||||
<h2 class="py-1 text-gray-600">{{ .Params.subtitle }}</h2>
|
||||
{{ end }}
|
||||
<div class="border-t pt-5">{{ .Content }}</div>
|
||||
</article>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,42 @@
|
|||
{{ define "main" }}
|
||||
<div class="">
|
||||
<figure class="block w-full">
|
||||
{{ $imgSrc := "images/homeAvatar.jpg" | relURL }}
|
||||
{{- if .Site.Author.gravatar -}}
|
||||
{{ $hash := trim .Site.Author.gravatar " " | lower | md5 }}
|
||||
{{ $imgSrc = delimit (slice "https://www.gravatar.com/avatar/" $hash "?s=256&d=mp") "" }}
|
||||
{{- else if .Site.Author.avatar -}}
|
||||
{{ $imgSrc = .Site.Author.avatar }}
|
||||
{{- end -}}
|
||||
<img class="rounded-full mx-auto" width="200px" height="200px" src="{{ $imgSrc }}" alt="{{ i18n "AuthorGravatar" }}">
|
||||
<figcaption class="w-full text-center font-medium text-4xl">{{ .Site.Author.name }}</figcaption>
|
||||
</figure>
|
||||
<div class="w-full flex justify-center my-8">
|
||||
{{- range .Site.Data.cleanwasteland.social.icons -}}
|
||||
{{- if isset $.Site.Author .id -}}
|
||||
<a href="{{ printf .url (index $.Site.Author .id) }}" {{ .attribute | safeHTMLAttr }} title="{{ .title }}">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="{{ .icon }} fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{ if .IsTranslated }}
|
||||
<article class="container max-w-2xl my-3 mx-auto p-2 shadow border rounded text-center">
|
||||
{{ i18n "translations" }} {{ range $i, $lang := .Translations }}{{ if $i }}, {{ end }} <a href="{{ $lang.Permalink }}">{{ $lang.Language.LanguageName }}</a> {{ end }}
|
||||
</article>
|
||||
{{ end }}
|
||||
{{- if or $.Site.Params.description .Content -}}
|
||||
<article class="container max-w-2xl mx-auto shadow-md border rounded">
|
||||
{{- if $.Site.Params.description -}}
|
||||
<div class="text-xl font-medium p-3{{ if and $.Site.Params.description .Content }} bg-gray-100 border-b border-gray{{ end }}">{{ $.Site.Params.description }}</div>
|
||||
{{- end -}}
|
||||
{{- if .Content -}}
|
||||
<div id="home-content" class="p-3">{{ .Content }}</div>
|
||||
{{- end -}}
|
||||
</article>
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,20 @@
|
|||
<nav class="w-full mb-4">
|
||||
<ol class="list-reset list-none flex text-grey-dark">
|
||||
{{ template "breadcrumbnav" (dict "p1" . "p2" .) }}
|
||||
</ol>
|
||||
</nav>
|
||||
{{ define "breadcrumbnav" }}
|
||||
{{- if .p1.Parent -}}
|
||||
{{ template "breadcrumbnav" (dict "p1" .p1.Parent "p2" .p2 ) }}
|
||||
<li><span class="mx-2">></span></li>
|
||||
{{- else if not .p1.IsHome -}}
|
||||
{{ template "breadcrumbnav" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
|
||||
{{- end -}}
|
||||
<li class="{{ if eq .p1 .p2 }}font-bold{{ end }}">
|
||||
<a href="{{ .p1.RelPermalink }}">{{- if not .p1.IsHome -}}
|
||||
{{ .p1.Title }}
|
||||
{{- else -}}
|
||||
<span class=""><i class="fas fa-home"></i></span>
|
||||
{{- end -}}</a>
|
||||
</li>
|
||||
{{ end }}
|
|
@ -0,0 +1,37 @@
|
|||
{{ if .Site.IsServer }}
|
||||
<button id="container-menu" onclick="changeContainerVisibility()"
|
||||
class="w-8 h-8 mb-2 block rounded-full text-gray-700 text-sm bg-gray-200 uppercase pointer-events-auto">
|
||||
<span>C</span>
|
||||
</button>
|
||||
|
||||
<div id="container-area"
|
||||
class="fixed inset-0 top-0 -z-50 container mx-auto h-full bg-red-200 bg-opacity-25 pointer-events-none hidden">
|
||||
<p></p>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function setContainerVisibility(data) {
|
||||
var showContainer = data;
|
||||
var e = document.querySelector("#container-area");
|
||||
if (e.classList.contains("hidden") == showContainer) {
|
||||
e.classList.toggle("hidden");
|
||||
}
|
||||
sessionStorage.setItem("showContainer", showContainer);
|
||||
}
|
||||
|
||||
function changeContainerVisibility() {
|
||||
var e = document.querySelector("#container-area");
|
||||
var showContainer = e.classList.contains("hidden") ? true : false;
|
||||
setContainerVisibility(showContainer);
|
||||
}
|
||||
|
||||
function setupContainerIndicator() {
|
||||
/* load variables from session storage */
|
||||
var showContainer = sessionStorage.getItem("showContainer") === "true";
|
||||
|
||||
setContainerVisibility(showContainer);
|
||||
}
|
||||
|
||||
window.onload = setupContainerIndicator;
|
||||
</script>
|
||||
{{ end }}
|
|
@ -0,0 +1,7 @@
|
|||
{{ if .Site.IsServer }}
|
||||
<div class="fixed top-0 right-0 mt-40 mr-8 z-50">
|
||||
{{- partial "dev/size-indicator.html" . -}}
|
||||
{{- partial "dev/container-indicator.html" . -}}
|
||||
{{- partial "dev/parameters.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,47 @@
|
|||
{{ if .Site.IsServer }}
|
||||
<button id="grid-menu" onclick="changeGridVisibility()"
|
||||
class="w-8 h-8 mb-2 block rounded-full text-gray-700 text-sm bg-gray-200 uppercase pointer-events-auto">
|
||||
<span>G</span>
|
||||
</button>
|
||||
|
||||
<div id="grid-area" class="container w-screen h-screen mx-auto px-8 grid grid-cols-12 gap-4">
|
||||
<div class="bg-blue-200 bg-opacity-25"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const padOptions = ["0", "1", "2", "3", "4", "5", "6", "8", "10", "12", "16", "20", "24", "32", "40", "48", "56", "64"];
|
||||
const colOptions = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
|
||||
const gapOptions = ["0", "1", "2", "3", "4", "5", "6", "8", "10", "12", "16"];
|
||||
|
||||
/* helper function to remove a class attribute from an element */
|
||||
function removeClassWith(e, part) {
|
||||
var regx = new RegExp('(^|\\s)\\S*' + part + '\\S*', 'g');
|
||||
e.className = e.className.replace(regx, '');
|
||||
}
|
||||
|
||||
function setGridVisibility(data) {
|
||||
var showGrid = data;
|
||||
var e = document.querySelector("#grid-area");
|
||||
if (e.classList.contains("hidden") == showGrid) {
|
||||
e.classList.toggle("hidden");
|
||||
}
|
||||
|
||||
sessionStorage.setItem("showGrid", showGrid);
|
||||
}
|
||||
|
||||
function changeGridVisibility() {
|
||||
var e = document.querySelector("#grid-area");
|
||||
var showGrid = e.classList.contains("hidden") ? true : false;
|
||||
setGridVisibility(showGrid);
|
||||
}
|
||||
|
||||
function setupGridIndicator() {
|
||||
/* load variables from local storage */
|
||||
var showGrid = sessionStorage.getItem("showGrid") === "true";
|
||||
|
||||
setGridVisibility(showGrid);
|
||||
}
|
||||
|
||||
window.onload = setupGridIndicator;
|
||||
</script>
|
||||
{{ end }}
|
|
@ -0,0 +1,126 @@
|
|||
{{ if .Site.IsServer }}
|
||||
<button id="parameter-menu" onclick="changeParameterVisibility()"
|
||||
class="w-8 h-8 mb-2 rounded-full text-gray-700 text-sm bg-gray-200 uppercase pointer-events-auto">
|
||||
<span>P</span>
|
||||
</button>
|
||||
|
||||
<div id="parameter-area"
|
||||
class="fixed w-full z-50 right-0 bottom-0 h-1/3 p-4 overflow-y-auto scroll-auto scroll-py-4 touch-auto bg-white/[.95] border-y-8 border-white/50 hidden">
|
||||
<table class="w-full text-left table-auto table-collapse border-gray-200">
|
||||
<caption class="text-left pb-2">Hugo Variables for the current page.</caption>
|
||||
<thead>
|
||||
<tr class="p-2 font-semibold bg-gray-100 border-t ">
|
||||
<th>Variable</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Name</td>
|
||||
<td>{{ printf "%#v" .Name }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Title</td>
|
||||
<td>{{ printf "%#v" .Title }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Kind</td>
|
||||
<td>{{ printf "%#v" .Kind }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Type</td>
|
||||
<td>{{ printf "%#v" .Type }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.IsPage</td>
|
||||
<td>{{ printf "%#v" .IsPage }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.IsHome</td>
|
||||
<td>{{ printf "%#v" .IsHome }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Next</td>
|
||||
<td>{{ printf "%v" .Next }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Prev</td>
|
||||
<td>{{ printf "%v" .Prev }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Params</td>
|
||||
<td>
|
||||
<table>
|
||||
{{ range $k,$v := .Params }}
|
||||
<tr>
|
||||
<td class="text-right italic pr-2">{{ printf "%#v:" $k }}</td>
|
||||
<td>{{ printf "%#v" $v }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Section</td>
|
||||
<td>{{ printf "%#v" .Section }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.CurrentSection</td>
|
||||
<td>{{ printf "%v" .CurrentSection }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Pages</td>
|
||||
<td>
|
||||
{{ printf "%v" .Pages }}
|
||||
<table>
|
||||
{{- range $k,$v := .Pages }}
|
||||
<tr>
|
||||
<td class="text-right italic pr-2">{{ printf "%#v:" $k }}</td>
|
||||
<td>{{ printf "%v" $v }}</td>
|
||||
</tr>
|
||||
{{ end -}}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.Resources</td>
|
||||
<td>{{ printf "%v" .Resources }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.File</td>
|
||||
<td>{{ if .File }}{{ printf "%v" .File }}{{ else}}""{{ end }}</td>
|
||||
</tr>
|
||||
<tr class="p-2 border-t">
|
||||
<td>.File.Dir</td>
|
||||
<td>{{ if .File }}{{ printf "%#v" .File.Dir }}{{ else}}""{{ end }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function setParameterVisibility(data) {
|
||||
var showParameter = data;
|
||||
var e = document.querySelector("#parameter-area");
|
||||
if (e.classList.contains("hidden") == showParameter) {
|
||||
e.classList.toggle("hidden");
|
||||
}
|
||||
sessionStorage.setItem("showParameter", showParameter);
|
||||
}
|
||||
|
||||
function changeParameterVisibility() {
|
||||
var e = document.querySelector("#parameter-area");
|
||||
var showParameter = e.classList.contains("hidden") ? true : false;
|
||||
setParameterVisibility(showParameter);
|
||||
}
|
||||
|
||||
function setupParameterIndicator() {
|
||||
/* load variables from session storage */
|
||||
var showParameter = sessionStorage.getItem("showParameter") === "true";
|
||||
|
||||
setParameterVisibility(showParameter);
|
||||
}
|
||||
|
||||
window.onload = setupParameterIndicator;
|
||||
</script>
|
||||
{{ end }}
|
|
@ -0,0 +1,11 @@
|
|||
{{ if .Site.IsServer }}
|
||||
<div id="size-indicator"
|
||||
class="flex items-center justify-center w-8 h-8 mb-2 text-sm text-gray-700 uppercase bg-gray-200 rounded-full sm:bg-red-200 md:bg-yellow-200 lg:bg-green-200 xl:bg-blue-200 2xl:bg-pink-200">
|
||||
<span class="block sm:hidden">all</span>
|
||||
<span class="hidden sm:block md:hidden">sm</span>
|
||||
<span class="hidden md:block lg:hidden">md</span>
|
||||
<span class="hidden lg:block xl:hidden">lg</span>
|
||||
<span class="hidden xl:block 2xl:hidden">xl</span>
|
||||
<span class="hidden 2xl:block">2xl</span>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,8 @@
|
|||
<p>
|
||||
{{- if .Site.Copyright -}}
|
||||
{{ safeHTML .Site.Copyright }}
|
||||
{{- else -}}
|
||||
©{{ now.Format "2006" }} {{ $.Site.Author.name }}
|
||||
{{- end -}}
|
||||
</p>
|
||||
<p>Proudly made with <a href="https://gohugo.io" rel="noopener">Hugo {{ hugo.Version }}</a></p>
|
|
@ -0,0 +1,4 @@
|
|||
<!--
|
||||
If you want to include any custom html just before </body>, put it in /layouts/partials/footer_custom.html
|
||||
Do not put anything in this file - it's only here so that hugo won't throw an error if /layouts/partials/footer_custom.html doesn't exist.
|
||||
-->
|
|
@ -0,0 +1,6 @@
|
|||
{{ if .Site.IsServer }}
|
||||
{{ $script := resources.Get "scripts/fa_5.15.4.js" }}
|
||||
<script src="{{ $script.Permalink }}"></script>
|
||||
{{ else }}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/js/all.min.js" integrity="sha512-Tn2m0TIpgVyTzzvmxLNuqbSJH3JP8jm+Cy3hvHrW7ndTDcJ1w5mBiksqDBb8GpE2ksktFvDB/ykZ0mDpsZj20w==" crossorigin="anonymous"></script>
|
||||
{{ end }}
|
|
@ -0,0 +1,11 @@
|
|||
<div class="text-right text-xs text-gray-500 mt-10">
|
||||
{{ $path := "" }}
|
||||
{{ with .File }}
|
||||
{{ $path = .Path }}
|
||||
{{ else }}
|
||||
{{ $path = .Path }}
|
||||
{{ end }}
|
||||
Updated: {{ .Page.Lastmod }} - <a href="{{ $.Site.Params.editURL }}{{ replace $path "\\" "/" }}" target="blank">{{ i18n "editThisPage" }}</a><br/>
|
||||
Commit: "<i>{{ with .GitInfo }}{{ .Subject }}{{ end }}</i>" [<a href="{{ .Site.Params.commitURL }}{{ with .GitInfo }}{{ .Hash }}{{ end }}" target="blank">{{ with .GitInfo }}{{ .AbbreviatedHash }}{{ end }}</a>]<br/>
|
||||
By: {{ with .GitInfo }}{{ .AuthorName }}{{ end }} <{{ with .GitInfo }}{{ .AuthorEmail }}{{ end }}>
|
||||
</div>
|
|
@ -0,0 +1,40 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<title>{{ block "title" . }}{{ .Title }} :: {{ .Site.Title }}{{ end }}</title>
|
||||
|
||||
{{ with .Site.Author }}<meta name="author" content="{{ .name }} <{{ .email }}>">{{ end }}
|
||||
{{ with .Site.Params.description }}<meta name="description" content="{{ . }}">{{ end }}
|
||||
{{ with .Site.Params.keywords }}<meta name="keywords" content="{{ . }}">{{ end }}
|
||||
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
|
||||
{{ if .Permalink -}}
|
||||
<base href="{{ .Permalink }}">
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
{{- end }}
|
||||
|
||||
<!-- Icon -->
|
||||
<link rel="icon"
|
||||
{{ if .Site.Params.favicon }}
|
||||
href="{{ .Site.Params.favicon | relURL }}"
|
||||
{{ else }}
|
||||
href='{{ "/favicon.ico" | relURL }}'
|
||||
{{ end }}
|
||||
type="image/x-icon"/>
|
||||
|
||||
<!-- Styles -->
|
||||
{{ $styles := resources.Get "css/styles.css" | postCSS (dict "config" "./assets/css/postcss.config.js") }}
|
||||
{{ if .Site.IsServer }}
|
||||
<link rel="stylesheet" href="{{ $styles.RelPermalink }}">
|
||||
{{ else }}
|
||||
{{ $styles := $styles| minify | fingerprint | resources.PostProcess }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}">
|
||||
{{ end }}
|
||||
|
||||
{{ $styles := resources.Get "fontawesome/css/fontawesome.css" | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}">
|
||||
{{ $styles := resources.Get "fontawesome/css/brands.css" | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}">
|
||||
{{ $styles := resources.Get "fontawesome/css/solid.css" | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}">
|
|
@ -0,0 +1,4 @@
|
|||
<!--
|
||||
If you want to include any custom html just before </head>, put it in /layouts/partials/head_custom.html
|
||||
Do not put anything in this file - it's only here so that hugo won't throw an error if /layouts/partials/head_custom.html doesn't exist.
|
||||
-->
|
|
@ -0,0 +1,60 @@
|
|||
<div class="flex items-center justify-between flex-wrap">
|
||||
<a class="text-xl font-semibold text-black" href="{{ .Site.BaseURL | relLangURL }}">{{ block "logo" . }}{{ .Site.Title }}{{ end }}</a>
|
||||
|
||||
{{ if or .Site.Menus.shortcuts .Site.Menus.main }}
|
||||
{{/* CSS functionality for menu toggle */}}
|
||||
<style type="text/css">
|
||||
input#nav-toggle:checked~label#show-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
input#nav-toggle:checked~label#hide-button {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
input#nav-toggle:checked~#nav-menu {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<input id="nav-toggle" type=checkbox class="hidden">
|
||||
<label id="show-button" for="nav-toggle"
|
||||
class="flex items-center sm:hidden text-gray-500 hover:text-blue-500">
|
||||
<svg class="fill-current h-4 w-4" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Menu Open</title>
|
||||
<path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z" />
|
||||
</svg>
|
||||
</label>
|
||||
<label id="hide-button" for="nav-toggle" class="items-center hidden text-gray-700 hover:text-blue-500">
|
||||
<svg class="fill-current h-4 w-4" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Menu Close</title>
|
||||
<polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2"
|
||||
transform="rotate(45 10 10)" />
|
||||
</svg>
|
||||
</label>
|
||||
|
||||
<nav id="nav-menu" class="sm:flex w-full sm:w-auto hidden mt-2 sm:mt-0 sm:space-x-2">
|
||||
{{ $currentPage := . }}
|
||||
{{- with .Site.Menus.shortcuts -}}
|
||||
{{- range sort . "Weight" -}}
|
||||
{{ template "menu_entry" dict "menuEntry" . "currentPage" $currentPage }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- range .Site.Menus.main -}}
|
||||
{{ template "menu_entry" dict "menuEntry" . "currentPage" $currentPage }}
|
||||
{{- end -}}
|
||||
{{- if not .IsHome -}}
|
||||
{{ partial "lang_list.html" . }}
|
||||
{{- end -}}
|
||||
</nav>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{- define "menu_entry" -}}
|
||||
<a class="text-lg sm:text-sm mt-1 block px-2 py-1 sm:mt-0 sm:ml-2 {{if or ($.currentPage.IsMenuCurrent "main" $.menuEntry) ($.currentPage.HasMenuCurrent "main" $.menuEntry) }}font-semibold text-gray-700{{else}}hover:text-gray-700{{ end }}" href="{{ $.menuEntry.URL }}" rel="noopener">
|
||||
{{- if $.menuEntry.Pre -}}
|
||||
<span class="icon is-medium"><i class="fa-fw {{ $.menuEntry.Pre }}"></i></span>
|
||||
{{- end -}}
|
||||
<span>{{ $.menuEntry.Name }}</span>
|
||||
</a>
|
||||
{{- end -}}
|
|
@ -0,0 +1,42 @@
|
|||
{{- if gt (len .Site.Languages) 1 }}
|
||||
{{ $currentPage := . }}
|
||||
{{ $.Scratch.Add "langList" (slice .Lang) }}
|
||||
{{ $.Scratch.Add "pageTran" (slice .) }}
|
||||
{{ range .Translations }}
|
||||
{{ $.Scratch.Set "langList" (union ($.Scratch.Get "langList") (slice .Lang)) }}
|
||||
{{ $.Scratch.Set "pageTran" (union ($.Scratch.Get "pageTran") (slice .)) }}
|
||||
{{ end }}
|
||||
<div class="inline-flex sm:text-sm mt-2 sm:mt-0 sm:ml-2">
|
||||
{{ $.Scratch.Set "langLastIdx" (sub (len $.Site.Home.AllTranslations) 1) }}
|
||||
{{- range $i, $lang := $.Site.Home.AllTranslations -}}
|
||||
{{ $url := "#" }}
|
||||
{{- if in ($.Scratch.Get "langList") $lang.Language.Lang -}}
|
||||
{{ $translatedContent := where ($.Scratch.Get "pageTran") "Lang" "eq" $lang.Language.Lang }}
|
||||
{{ $translatedContent := index $translatedContent 0 }}
|
||||
{{ $url = $translatedContent.RelPermalink }}
|
||||
{{- end -}}
|
||||
{{ $color := "bg-transparent text-blue-700" }}
|
||||
{{ $hoverColor := "hover:bg-blue-700 hover:text-white"}}
|
||||
{{- if (eq $lang.Language.Lang $currentPage.Lang) -}}
|
||||
{{ $color = "bg-blue-400 text-white" }}
|
||||
{{- end -}}
|
||||
{{ $cursor := "" }}
|
||||
{{- if eq $url "#" -}}
|
||||
{{ $cursor = "cursor-not-allowed" }}
|
||||
{{ $color = "bg-gray-400 text-white" }}
|
||||
{{- end -}}
|
||||
{{ $rounded := "border" }}
|
||||
{{- if (eq ($.Scratch.Get "langLastIdx") $i) -}}
|
||||
{{ $rounded = "border-r border-t border-b rounded-r" }}
|
||||
{{- end -}}
|
||||
{{- if (eq $i 0) -}}
|
||||
{{ $rounded = "border rounded-l" }}
|
||||
{{- end -}}
|
||||
<a href="{{ $url }}">
|
||||
<button class="{{ $color }} {{ $hoverColor }} font-semibold py-1 px-2 border-blue-700 hover:border-transparent {{ $rounded }} {{ $cursor }}">
|
||||
{{ $lang.Language.Lang | upper }}
|
||||
</button>
|
||||
</a>
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{- end -}}
|
|
@ -0,0 +1,6 @@
|
|||
{{- if .Content -}}
|
||||
<article class="container mx-auto shadow-md border rounded-lg mb-10">
|
||||
<h1 class="text-3xl font-bold px-4 py-2 bg-gray-100 border-b border-gray">{{ .Title }}</h1>
|
||||
<div class="p-3">{{ .Content }}</div>
|
||||
</article>
|
||||
{{- end -}}
|
|
@ -0,0 +1,32 @@
|
|||
{{ $pag := $.Paginator }}
|
||||
{{ if gt $pag.TotalPages 1 }}
|
||||
<nav class="flex mt-10" role="navigation" aria-label="pagination">
|
||||
{{ if $pag.HasPrev }}
|
||||
<div class="flex-auto text-center"><a href="{{ $pag.Prev.URL | relLangURL }}" class="bg-blue-200 rounded-full h-8 w-8 flex items-center justify-center"><i class="fas fa-chevron-left"></i></a></div>
|
||||
{{ end }}
|
||||
{{ $.Scratch.Set "__paginator.ellipsed" false }}
|
||||
{{ if not (eq .Site.Params.pagination.showPageNumbers false) }}
|
||||
{{ range $pag.Pagers }}
|
||||
{{ $right := sub .TotalPages .PageNumber }}
|
||||
{{ $showNumber := or (le .PageNumber 1) (eq $right 0) }}
|
||||
{{ $showNumber := or $showNumber (and (gt .PageNumber (sub $pag.PageNumber ( $.Site.Params.pagination.pagesBetweenActive | default 3 ))) (lt .PageNumber (add $pag.PageNumber ( $.Site.Params.pagination.pagesBetweenActive | default 3 )))) }}
|
||||
{{ if $showNumber }}
|
||||
{{ $.Scratch.Set "__paginator.ellipsed" false }}
|
||||
{{ $.Scratch.Set "__paginator.shouldEllipse" false }}
|
||||
{{ else }}
|
||||
{{ $.Scratch.Set "__paginator.shouldEllipse" (not ($.Scratch.Get "__paginator.ellipsed") ) }}
|
||||
{{ $.Scratch.Set "__paginator.ellipsed" true }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $showNumber }}
|
||||
<div class="flex-auto text-center h-8 flex items-center justify-center"><a href="{{ .URL | relLangURL }}" class="{{ if eq . $pag }} font-bold text-gray-500{{ end }}" aria-label="Goto page {{ .PageNumber }}">{{ .PageNumber }}</a></div>
|
||||
{{ else if ($.Scratch.Get "__paginator.shouldEllipse") }}
|
||||
<div class="flex-auto text-center h-8 flex items-center justify-center"><span class="">…</span></div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if $pag.HasNext }}
|
||||
<div class="flex-auto text-center"><a href="{{ $pag.Next.URL | relLangURL }}" class="bg-blue-200 rounded-full h-8 w-8 flex items-center justify-center"><i class="fas fa-chevron-right"></i></a></div>
|
||||
{{ end }}
|
||||
</nav>
|
||||
{{ end }}
|
|
@ -0,0 +1,22 @@
|
|||
{{ partial "list_content.html" . }}
|
||||
{{- range $i,$p := .Paginator.Pages -}}
|
||||
<div class="my-2 bg-blue{{ if gt $i 0 }} border-blue-200 border-t{{ end }}">
|
||||
<div class="whitespace-no-wrap text-sm text-gray-500 pt-3"><time datetime="{{ .Date.UTC | dateFormat "2006-01-02T15:04:05Z" }}">{{ .Date | time.Format ":date_long" }}</time></div>
|
||||
<div class="w-full p-2">
|
||||
<a href="{{ .Permalink }}" class="">
|
||||
<h2>{{ .Title }}</h2>
|
||||
{{ if .Params.subtitle }}
|
||||
<h3 class="text-sm text-gray-500">{{ .Params.subtitle }}</h3>
|
||||
{{ end }}
|
||||
</a>
|
||||
</div>
|
||||
{{- with .Params.tags -}}
|
||||
<div class="w-full flex justify-end py-1">
|
||||
{{- range . -}}
|
||||
<a class="bg-blue-100 hover:bg-blue-500 hover:underline hover:text-white text-xs rounded-full py-1 px-2 mr-1" href="{{ $.Site.LanguagePrefix | absURL }}tags/{{ . | urlize }}/">{{ . }}</a>
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{ partial "paginator.html" . }}
|
|
@ -0,0 +1,34 @@
|
|||
{{ $wikiPages := where .Pages "Type" "wiki"}}
|
||||
{{ $discussionPages := first 1 (where .Pages "Type" "post") }}
|
||||
<article class="">
|
||||
<h1 class="text-4xl font-bold px-4 py-2 border-b border-gray">{{ .Title }}</h1>
|
||||
{{ range $discussionPages }}
|
||||
<span class="text-gray-500 text-sm">{{ i18n "discussion" . | safeHTML }}</span>
|
||||
{{ end }}
|
||||
{{ if .Content }}
|
||||
<div class="p-3">
|
||||
<aside class="m-0 mb-2 sm:pl-2 sm:float-right">
|
||||
{{ .TableOfContents }}
|
||||
</aside>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{ end }}
|
||||
<article>
|
||||
{{ if $wikiPages }}
|
||||
<div class="w-full border-blue-400 border-r-2 border-l-2 rounded-lg my-5">
|
||||
<div class="text-white bg-blue-400 font-bold px-4 py-2 rounded-t text-2xl">
|
||||
{{ if .Parent.IsHome }}{{ i18n "binder" }}{{ else }}{{ i18n "notebook" }}{{ end }}
|
||||
</div>
|
||||
{{- range $i,$p := $wikiPages -}}
|
||||
<div class="p-2 {{ if gt $i 0 }}border-blue-400 border-t-2{{ end }} hover:bg-blue-200">
|
||||
<a href="{{ .Permalink }}" class="no-underline">
|
||||
<h2 class="p-0 pb-1 text-3xl underline">{{ .Title }}</h2>
|
||||
{{ if .Params.description }}
|
||||
<div class="text-black">{{ .Params.description }}</div>
|
||||
{{ end }}
|
||||
</a>
|
||||
</div>
|
||||
{{- end -}}
|
||||
<div class="bg-blue-400 py-2 rounded-b"></div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,3 @@
|
|||
{{ define "main" }}
|
||||
{{ partial "post_list.html" . }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,36 @@
|
|||
{{ define "main" }}
|
||||
{{- if .Content -}}
|
||||
<article class="my-2">
|
||||
<h1 class="py-1">{{ .Title }}</h1>
|
||||
{{ if .Params.subtitle }}
|
||||
<h2 class="py-1 text-gray-600">{{ .Params.subtitle }}</h2>
|
||||
{{ end }}
|
||||
{{ if (.Site.Params.showReadingTime | default false ) }}
|
||||
<span class="text-gray-500 text-xs">{{ i18n "wordCount" .FuzzyWordCount }} - {{ i18n "readingTime" .ReadingTime }}</span>
|
||||
{{ end }}
|
||||
<div class="flex flex-col sm:flex-row-reverse items-center border-t pt-2 mb-8">
|
||||
<div class="text-gray-700 text-center text-sm text-gray-500"><time datetime="{{ dateFormat "2006-01-02T15:04:05Z" .Date.UTC }}">{{ .Date | time.Format ":date_long" }}</time></div>
|
||||
<div class="text-gray-700 flex-auto block">
|
||||
{{- with .Params.tags -}}
|
||||
{{- range . -}}
|
||||
<a class="bg-blue-100 hover:bg-blue-500 hover:underline hover:text-white text-xs rounded-full py-1 px-2 mr-1" href="{{ $.Site.LanguagePrefix | absURL }}tags/{{ . | urlize }}/">{{ . }}</a>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="">{{ .Content }}</div>
|
||||
</article>
|
||||
{{- end -}}
|
||||
<nav class="py-5 flex relative w-full" role="navigation">
|
||||
{{ if .PrevInSection }}<a href="{{ .PrevInSection.Permalink }}" title="{{ .PrevInSection.Title }}">{{ end }}
|
||||
<button class="absolute left-0 inline-block bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full{{ if not .PrevInSection }} opacity-50 cursor-not-allowed{{ end }}">
|
||||
<i class="mr-2 fas fa-chevron-left"></i>{{ i18n "previousPost" }}
|
||||
</button>
|
||||
{{ if .PrevInSection }}</a>{{ end }}
|
||||
{{ if .NextInSection }}<a href="{{ .NextInSection.Permalink }}" title="{{ .NextInSection.Title }}">{{ end }}
|
||||
<button class="absolute right-0 inline-block bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full{{ if not .NextInSection }} opacity-50 cursor-not-allowed{{ end }}">
|
||||
{{ i18n "nextPost" }}<i class="ml-2 fas fa-chevron-right"></i>
|
||||
</button>
|
||||
{{ if .NextInSection }}</a>{{ end }}
|
||||
</nav>
|
||||
{{- end -}}
|
|
@ -0,0 +1,49 @@
|
|||
{{ $.Scratch.Set "imgs" ( split ( .Get "src" ) "," ) }}
|
||||
{{ $.Scratch.Set "alts" ( split ( .Get "alt" ) "," ) }}
|
||||
{{ $.Scratch.Set "nums" ( len ( $.Scratch.Get "imgs" ) ) }}
|
||||
<div class="myfigure {{ with ( $.Scratch.Get "nums" ) }}{{ if gt . 1 }}multi{{ else }}single{{ end }}{{ end }}figure">
|
||||
<figure>
|
||||
{{- if .Get "link" -}}
|
||||
<a href="{{ .Get "link" }}"{{ with .Get "target" }} target="{{ . }}"{{ end }}{{ with .Get "rel" }} rel="{{ . }}"{{ end }}>
|
||||
{{- end }}
|
||||
{{ if gt ( $.Scratch.Get "nums" ) 1 -}}
|
||||
<div class="grid grid-cols-{{- with ( $.Scratch.Get "nums" ) }}{{ if lt . 3 }}{{ . }}{{ else }}1 sm:grid-cols-3{{ end }}{{ end }}">
|
||||
{{- range $index, $img := ( $.Scratch.Get "imgs" ) -}}
|
||||
<div><img src="{{ $img }}"
|
||||
{{- if ( $.Scratch.Get "alts" ) }}
|
||||
alt="{{ if gt ( len ( $.Scratch.Get "alts" ) ) 1 -}}
|
||||
{{ with ( $.Scratch.Get "alts" ) }}{{ index . $index }}{{ end }}
|
||||
{{- else -}}
|
||||
{{ with ( $.Scratch.Get "alts" ) }}{{ index . 0 }}{{ end }}
|
||||
{{- end -}}"
|
||||
{{- end -}}
|
||||
/> <!-- Closing img tag --></div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
{{- else -}}
|
||||
<img src="{{ .Get "src" }}"
|
||||
{{- if or (.Get "alt") (.Get "caption") }}
|
||||
alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" | markdownify| plainify }}{{ end }}"
|
||||
{{- end -}}
|
||||
/> <!-- Closing img tag -->
|
||||
{{- end -}}
|
||||
{{- if .Get "link" }}</a>{{ end -}}
|
||||
{{- if or (or (.Get "title") (.Get "caption")) (.Get "attr") -}}
|
||||
<figcaption>
|
||||
{{ with (.Get "title") -}}
|
||||
<h4>{{ . }}</h4>
|
||||
{{- end -}}
|
||||
{{- if (.Get "caption") -}}
|
||||
<p class="caption">{{- .Get "caption" | markdownify -}}</p>
|
||||
{{- end }}
|
||||
{{- if (.Get "attr") -}}<p class="attr">
|
||||
{{- with .Get "attrlink" }}
|
||||
<a href="{{ . }}">
|
||||
{{- end -}}
|
||||
{{- .Get "attr" | markdownify -}}
|
||||
{{- if .Get "attrlink" }}</a>{{ end }}</p>
|
||||
{{- end }}
|
||||
</figcaption>
|
||||
{{- end }}
|
||||
</figure>
|
||||
</div>
|
|
@ -0,0 +1,31 @@
|
|||
{{ $.Scratch.Set "title" (.Get 0 | upper ) }}
|
||||
{{ if (.Get 1) }}
|
||||
{{ $.Scratch.Set "title" (.Get 1 | upper ) }}
|
||||
{{ end }}
|
||||
|
||||
{{ $.Scratch.Set "icon" "fas fa-pencil-alt" }}
|
||||
{{ $.Scratch.Set "theme" (.Get 0 | default "notice" | lower ) }}
|
||||
{{ with (.Get 0) }}
|
||||
{{ if eq . "info" }}
|
||||
{{ $.Scratch.Set "icon" "fas fa-info-circle" }}
|
||||
{{ else if eq . "tip" }}
|
||||
{{ $.Scratch.Set "icon" "fas fa-lightbulb" }}
|
||||
{{ else if eq . "warning" }}
|
||||
{{ $.Scratch.Set "icon" "fas fa-exclamation-circle" }}
|
||||
{{ else if eq . "attention" }}
|
||||
{{ $.Scratch.Set "icon" "fas fa-exclamation-triangle" }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<div class="w-full notice-box notice-{{ $.Scratch.Get "theme" }}">
|
||||
{{- if $.Scratch.Get "title" -}}
|
||||
<div class="notice-title notice-title-{{ $.Scratch.Get "theme" }}">
|
||||
{{ $.Scratch.Get "title" }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
<div class="flex items-center notice-content">
|
||||
<i class="m-2 fa-3x fa-fw {{ $.Scratch.Get "icon" }}"></i>
|
||||
<div class="m-2">
|
||||
{{ .Inner | markdownify }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
{{- with $.Page.Resources.GetMatch (.Get 0) -}}
|
||||
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||
{{- end -}}
|
|
@ -0,0 +1,3 @@
|
|||
{{ define "main" }}
|
||||
{{ partial "post_list.html" . }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,22 @@
|
|||
{{ define "main" }}
|
||||
{{ if not (eq (len $.Site.Taxonomies.tags) 0) }}
|
||||
{{ $fontUnit := "rem" }}
|
||||
{{ $largestFontSize := 3 }}
|
||||
{{ $smallestFontSize := 1.0 }}
|
||||
{{ $fontSpread := sub $largestFontSize $smallestFontSize }}
|
||||
{{ $max := add (len (index $.Site.Taxonomies.tags.ByCount 0).Pages) 1 }}
|
||||
{{ $min := len (index $.Site.Taxonomies.tags.ByCount.Reverse 0).Pages }}
|
||||
{{ $spread := sub $max $min }}
|
||||
{{ $fontStep := div $fontSpread $spread }}
|
||||
<div style="py-5">
|
||||
{{ range $name, $taxonomy := $.Site.Taxonomies.tags }}
|
||||
{{ $currentTagCount := len $taxonomy.Pages }}
|
||||
{{ $currentFontSize := (add $smallestFontSize (mul (sub $currentTagCount $min) $fontStep) ) }}
|
||||
{{ $count := len $taxonomy.Pages }}
|
||||
{{ $weigth := div (sub (math.Log $count) (math.Log $min)) (sub (math.Log $max) (math.Log $min)) }}
|
||||
{{ $currentFontSize := (add $smallestFontSize (mul (sub $largestFontSize $smallestFontSize) $weigth) ) }}
|
||||
<a href="{{ "/tags/" | relLangURL }}{{ $name | urlize }}/" class="m-1" style="font-size:{{$currentFontSize}}{{$fontUnit}}">{{ $name }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,3 @@
|
|||
{{ define "main" }}
|
||||
{{ partial "wiki_page.html" . }}
|
||||
{{ end }}
|
|
@ -0,0 +1,3 @@
|
|||
{{ define "main" }}
|
||||
{{ partial "wiki_page.html" . }}
|
||||
{{ end }}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"name": "fvezzoli.villavasco.ovh",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "Francesco Vezzoli <fvezzoli@villavasco.ovh>",
|
||||
"license": "MIT",
|
||||
"browserslist": [
|
||||
"last 1 version",
|
||||
"> 1%",
|
||||
"maintained node versions",
|
||||
"not dead"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@fullhuman/postcss-purgecss": "^5.0.0",
|
||||
"@tailwindcss/aspect-ratio": "^0.4.2",
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@tailwindcss/line-clamp": "^0.4.2",
|
||||
"@tailwindcss/typography": "^0.5.7",
|
||||
"autoprefixer": "^10.4.12",
|
||||
"postcss": "^8.4.17",
|
||||
"postcss-cli": "^10.0.0",
|
||||
"tailwindcss": "^3.1.8"
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,21 @@
|
|||
# theme.toml template for a Hugo theme
|
||||
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
|
||||
|
||||
name = "Cleanwasteland"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
|
||||
description = ""
|
||||
homepage = "http://example.com/"
|
||||
tags = []
|
||||
features = []
|
||||
min_version = "0.41.0"
|
||||
|
||||
[author]
|
||||
name = ""
|
||||
homepage = ""
|
||||
|
||||
# If porting an existing theme
|
||||
[original]
|
||||
name = ""
|
||||
homepage = ""
|
||||
repo = ""
|
Loading…
Reference in New Issue