Merge dev into main branch #2

Merged
vrifox merged 11 commits from dev into main 2023-01-06 22:53:36 +01:00
37 changed files with 613 additions and 231 deletions

1
.gitignore vendored
View file

@ -1,6 +1,7 @@
# generated directories
/public/*
/resources/_gen/*
.vscode/
# ignored files
.directory

25
assets/footer.scss Normal file
View file

@ -0,0 +1,25 @@
footer {
color: var(--text-secondary);
grid-area: footer;
margin: 1em auto;
text-align: center;
p{
margin: .25em;
span {
&:not(:last-child) {
&::after {
content: '·';
padding: .25em;
}
}
a {
color: var(--text-secondary);
text-decoration-color: transparent;
&:hover {
text-decoration: underline;
text-decoration-color: var(--text-secondary);
}
}
}
}
}

25
assets/home.scss Normal file
View file

@ -0,0 +1,25 @@
#introduction {
background: var(--vriish-gradient);
}
section {
position: relative;
h2 {
.more{
font-size: .75em;
font-weight: normal;
hyphens: none;
&::after {
content: "\27F6";
margin-left: .25em;
transition: margin .5s;
}
&:hover::after {
margin-left: .5em !important;
}
}
&:hover .more::after {
margin-left: .35em;
}
}
}

View file

@ -0,0 +1 @@
@import "verticalposts";

View file

@ -0,0 +1,31 @@
.verticalposts {
hyphens: auto;
margin-top: 4em;
.verticalposts-wrapper {
border-radius: .5em;
display: flex;
flex-direction: row;
gap: 1em;
overflow-x: scroll;
scroll-snap-type: x proximity;
.post-group {
background: var(--vriish-gradient);
border-radius: .5em;
display: flex;
flex-direction: column;
scroll-snap-align: start;
min-width: 15em;
width: 33.333%;
.title {
flex: auto;
margin: 1em;
}
aside {
margin: 1em;
}
}
}
a {
text-decoration: none;
}
}

156
assets/sidebar.scss Normal file
View file

@ -0,0 +1,156 @@
// -----------
// - sidebar -
// -----------
#sidebar {
background: var(--sidebar-background);
border-top: 2px solid var(--vriish-rose);
display: flex;
flex-direction: column;
grid-area: sidebar;
margin-top: -2px;
position: sticky;
top: 0;
z-index: 1;
gap: 1em;
padding: 1em;
@media (min-width: 921px) {
bottom: 0;
height: 100%;
}
header {
text-align: center;
user-select: none;
#avatar {
border-radius: 100%;
width: calc(100% - 2em);
max-width: 200px;
}
#name {
margin: 0;
font-weight: bold;
font-size: 1.8em;
}
#information {
margin: 0;
font-size: .8em;
}
}
#sidebar-menu {
user-select: none;
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
border-radius: .5em;
margin: .5em 0;
position: relative;
letter-spacing: .025em;
a {
display: block;
padding: .25em .5em;
}
::after {
background: var(--vriish-gradient);
border-radius: .5em;
bottom: 0;
content: "";
left: 0;
position: absolute;
right: 100%;
top: 0;
transition: opacity .5s, width .5s;
opacity: 0;
width: 0;
z-index: -1;
}
&.active {
background: var(--vriish-gradient);
}
&:hover {
::after {
opacity: 1;
right: 0;
width: 100%;
}
}
}
a {
text-decoration: none;
}
}
aside {
bottom: 1em;
position: absolute;
left: 1em;
right: 1em;
@media (max-width: 920px) {
position: initial;
}
#language-select {
position: relative;
pointer-events: none;
&:hover {
#languages {
//display: block;
bottom: 2em;
opacity: 100%;
pointer-events: all;
* {
pointer-events: all;
}
}
}
#language-icon {
text-decoration: none;
padding-top: 1em;
pointer-events: all;
&::after {
content: attr(data-page-lang);
position: absolute;
left: -4px;
font-size: 0.6em;
line-height: 1.5em;
bottom: 0;
text-transform: uppercase;
}
}
#languages {
background-color: var(--background);
border-radius: .5em;
margin: 0;
padding: 0;
user-select: none;
position: absolute;
//display: none;
bottom: 1em;
opacity: 0%;
transition: bottom .5s, opacity .5s;
li {
list-style: none;
overflow: hidden;
padding: .25em .5em;
position: relative;
transition: background .5s;
border-radius: .5em;
margin: .2em;
&:not(:last-of-type) {
margin-bottom: .5em;
}
&.active {
background: var(--vriish-gradient);
}
&:hover {
background: var(--vriish-gradient);
}
a {
text-decoration: none;
display: block;
}
}
}
}
}
}

View file

@ -1,98 +1,108 @@
:root {
--background: hsl(210, 21%, 15%);
--border: hsl(210, 21%, 20%);
--text: hsl(210, 21%, 95%);
--text-2: hsl(210, 21%, 80%);
--text-secondary: hsl(210, 21%, 40%);
--vriish-red: hsl(0, 100%, 75%);
--rose: hsl(0, 100%, 75%);
--orange: hsl(25, 100%, 75%);
--gold: hsl(50, 100%, 75%);
--emerald: hsl(130, 100%, 75%);
--sky: hsl(215, 100%, 75%);
--purpur: hsl(275, 100%, 75%);
--white: hsl(360, 100%, 100%);
}
@media (prefers-color-scheme: light) {
:root {
--background: rgb(255, 245, 235);
--border: rgb(225, 215, 205);
--text: rgb(50, 40, 30);
--text-2: rgb(90, 80, 70);
}
}
// general
@import "variables";
@import "shortcodes";
// site parts
@import "sidebar";
@import "footer";
// pages
@import "home";
* {
box-sizing: border-box;
scrollbar-color: var(--vriish-red) var(--background);
scrollbar-color: var(--vriish-rose) var(--background);
scrollbar-width: thin;
&::-webkit-scrollbar {
background: var(--background);
width: 6px;
}
&::-webkit-scrollbar-thumb { background: var(--vriish-red); }
&::-webkit-scrollbar-thumb { background: var(--vriish-rose); }
}
html {
margin: 0;
overflow-x: hidden;
overflow-y: scroll;
}
body {
background: var(--background);
color: var(--text);
display: grid;
font-family: system-ui, sans-serif;
font-size: 1.2em;
line-height: 1.7;
margin: 0;
}
h1, h2, h3, h4, h5, h6 {
line-height: 1em;
margin: .8em 0;
}
a {
color: var(--text);
text-decoration: underline;
text-decoration-color: var(--vriish-red);
text-underline-offset: 3px;
transition: text-decoration-color .2s;
&:hover { text-decoration-color: var(--text); }
}
center {
margin: 19.2px 0;
text-align: center;
}
pre {
border: 1px solid var(--vriish-red);
border-radius: 4px;
overflow: auto;
padding: 10px 15px;
}
p {
hyphens: auto;
img {
border: 2px solid var(--border);
border-radius: 4px;
display: block;
margin: 0 auto;
padding: 0;
body {
background: var(--background);
color: var(--text);
display: grid;
font-family: system-ui, sans-serif;
font-size: 1.2em;
grid-template-areas:
"header header"
"sidebar content"
"sidebar footer";
grid-template-columns: 250px 1fr;
grid-template-rows: min-content;
line-height: 1.7;
margin: 0;
min-height: 100vh;
@media (max-width: 920px) {
font-size: 1em;
grid-template-areas:
"header"
"content"
"sidebar"
"footer";
grid-template-columns: 1fr;
}
h1, h2, h3, h4, h5, h6 {
line-height: 1em;
margin: .8em 0;
}
a {
color: var(--text);
text-decoration: underline;
text-decoration-color: var(--vriish-rose);
text-underline-offset: 3px;
transition: text-decoration-color .2s;
&:hover { text-decoration-color: var(--text); }
}
pre {
border: 1px solid var(--vriish-rose);
border-radius: 4px;
overflow: auto;
padding: 10px 15px;
}
p {
hyphens: auto;
img {
border: 2px solid var(--border);
border-radius: 4px;
display: block;
margin: 0 auto;
}
}
hr {
border: 1px solid var(--border);
color: var(--border);
margin: 60px 0;
}
}
}
hr {
border: 1px solid var(--border);
color: var(--border);
margin: 60px 0;
.global-header {
align-items: center;
grid-area: header;
position: relative;
display: flex;
flex-direction: column;
gap: .5em;
justify-content: center;
padding: 3em 0;
z-index: 2;
h1, p {
margin: 0;
}
}
// ------------------------
// - header / nav; footer -
// ------------------------
header, footer {
/*header, footer {
align-items: center;
display: flex;
overflow: auto;
@ -104,7 +114,7 @@ header, footer {
text-decoration-thickness: 2px !important;
text-underline-offset: 6px;
margin: 0 15px;
&:hover { text-decoration-color: var(--vriish-red); }
&:hover { text-decoration-color: var(--vriish-rose); }
}
}
header {
@ -116,7 +126,7 @@ header {
font-size: 1em;
margin: 0;
a {
color: var(--vriish-red);
color: var(--vriish-rose);
}
}
nav {
@ -126,51 +136,25 @@ header {
aside {
margin-left: auto;
}
}
footer {
bottom: 0;
color: var(--text-secondary);
position: absolute;
a { color: var(--text-secondary); }
span {
padding: 17.6px 30px;
margin-right: auto;
}
}
}*/
// --------
// - main -
// --------
main {
grid-area: content;
margin: 20px auto;
max-width: 720px;
max-width: 1000px;
overflow: hidden;
padding: 30px;
width: 100%;
span { font-size: .8em; }
}
#intro-heading {
background-image: linear-gradient(180deg, var(--rose) 0%, var(--rose) 50%, var(--gold) 95%, var(--rose) 100%);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
display: inline-block;
margin: 0.55em 0;
}
span[title="Freude"], span[title="happiness"] {
font-size: 1em;
}
p.date-published {
margin-bottom: -1.5em;
font-size: smaller;
font-style: italic;
}
@media (max-width: 576px) {
main {
margin: 0 auto;
}
}

32
assets/variables.scss Normal file
View file

@ -0,0 +1,32 @@
:root {
--background: hsl(210, 21%, 15%);
--border: hsl(210, 21%, 20%);
--text: hsl(210, 21%, 95%);
--text-2: hsl(210, 21%, 80%);
--text-secondary: hsl(210, 21%, 40%);
--sidebar-background: hsl(210, 21%, 10%);
--vriish-rose: hsl(0, 100%, 75%);
--orange: hsl(25, 100%, 75%);
--gold: hsl(50, 100%, 75%);
--emerald: hsl(130, 100%, 75%);
--sky: hsl(215, 100%, 75%);
--purpur: hsl(275, 100%, 75%);
--white: hsl(360, 100%, 100%);
--vriish-gradient: linear-gradient(30deg, var(--orange) -100%, var(--vriish-rose) 100%);
--vriish-gradient-shadow: 2px 2px 10px var(--background);
}
@media (prefers-color-scheme: light) {
:root {
--background: hsl(0, 100%, 97.5%);
--border: hsl(0, 100%, 90%);
--text: hsl(0, 100%, 5%);
--text-2: hsl(0, 100%, 10%);
--sidebar-background: hsl(0, 100%, 95%);
}
}

View file

@ -1,42 +0,0 @@
baseURL = "https://vrifox.cc/"
title = "Vris Cute Corner"
enableRobotsTXT = true
[menu]
[[menu.name]]
identifier = "vrifox.cc"
name = "VrifoxCC"
url = "/"
weight = 1
[[menu.main]]
identifier = "kenntnisse"
name = "Kenntnisse"
url = "/kenntnisse/"
weight = 1
[[menu.main]]
identifier = "Portfolio"
name = "Portfolio"
url = "/portfolio/"
weight = 2
[[menu.footer]]
identifier = "blog"
name = "Blog"
url = "/blog/"
weight = 1
[[menu.footer]]
identifier = "blogroll"
name = "Empfehlungen"
url = "/blogroll/"
weight = 2
[markup]
[highlight]
anchorLineNos = false
lineNos = false
lineNumbersInTable = false
noClasses = false
style = "dracula"
tabWidth = 4
[goldmark]
[extensions]
linkify = false
[renderer]
unsafe = true

View file

@ -1,40 +0,0 @@
baseURL: https://vrifox.cc/
title: "Vris Cute Corner"
menu:
name:
- identifier: vrifox.cc
name: VrifoxCC
url: /
weight: 1
main:
- identifier: kenntnisse
name: Kenntnisse
url: /kenntnisse/
weight: 1
- identifier: Portfolio
name: Portfolio
url: /portfolio/
weight: 2
footer:
- identifier: blog
name: Blog
url: /blog/
weight: 1
- identifier: blogroll
name: Empfehlungen
url: /blogroll/
weight: 2
enableRobotsTXT: true
markup:
highlight:
anchorLineNos: false
lineNos: false
lineNumbersInTable: false
noClasses: false
style: dracula
tabWidth: 4
goldmark:
extensions:
linkify: false
renderer:
unsafe: true

View file

@ -0,0 +1,29 @@
baseURL: "https://vrifox.cc/"
title: "Vris Cute Corner"
enableRobotsTXT: true
defaultContentLanguage: de
defaultContentLanguageInSubdir: true
params:
displayName: "Vri 🌈"
username: "@vrifox"
staticSiteGenerator: "Hugo"
staticSiteGeneratorLink: "https://gohugo.io/"
markup:
highlight:
anchorLineNos: false
lineNos: false
lineNumbersInTable: false
noClasses: false
style: "dracula"
tabWidth: 4
goldmark:
extensions:
linkify: false
renderer:
unsafe: true
disableKinds:
- sitemap

View file

@ -0,0 +1,6 @@
de:
languageName: Deutsch
weight: 1
en:
languageName: English
weight: 2

26
config/_default/menu.yaml Normal file
View file

@ -0,0 +1,26 @@
main:
- identifier: "home"
name: "Start"
pageref: "/"
weight: 1
# - identifier: "skills"
# name: "Kenntnisse"
# pageref: "/kenntnisse/"
# weight: 2
# - identifier: "projects"
# name: "Projekte"
# pageref: "/portfolio/"
# weight: 3
- identifier: "blog"
name: "Blog"
pageref: "/blog/"
weight: 4
# - identifier: "blogroll"
# name: "Empfehlungen"
# pageref: "/blogroll/"
# weight: 5
footer_source:
- identifier: "sourcecode"
name: "Quellcode"
url: "https://code.cozy.town/vri/website"
weight: 1

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

@ -0,0 +1,8 @@
---
title: "Hola 🖖"
---
Ich erstelle gerne Grafiken und Websites.
Ich betreibe und pflege Dienste auf [Cozy Town](https://cozy.town).
{{< verticalposts header="latest-posts-heading" >}}

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

@ -0,0 +1,8 @@
---
title: "Hola 🖖"
---
I like to create Graphics and Websites.
I host and maintain services at [Cozy Town](https://cozy.town).
{{< verticalposts header="latest-posts-heading" >}}

View file

@ -1,14 +0,0 @@
---
title: "Über Vri"
---
# Vris Atelier {#intro-heading}
**Grafik.**
Vektorgrafiken setzen und Rastergrafiken pixeln.
**Gestaltung.**
Webseiten entwerfen, umsetzen und optimieren.
**Infrastruktur.**
Server und Dienste aufsetzen, absichern und betreiben.

View file

@ -0,0 +1,26 @@
---
title: "Der dunkle Modus von Firefox"
author: ""
date: 2021-05-15T11:54:53+02:00
categories:
tags:
draft: false
type: "post"
description: ""
slug: "dunkler-modus-von-firefox"
---
In diesem Artikel möchte ich zeigen, wie man den Dark-Mode auf kompatiblen Websites in Firefox aktiviert.
## Erweiterte Einstellungen von Firefox
Um den Dark-Mode von Firefox zu aktivieren, öffne [about:config](https://support.mozilla.org/en-US/kb/about-config-editor-firefox) und füge einen **neuen** Boolean mit dem Namen `ui.systemUsesDarkTheme` hinzu und setze ihn auf `1`.
## Websites Entwickeln
Falls du Websites entwickelst, könnte es hilfreich sein, schnell zwischen dem hellen und dem dunklen Modus zu wechseln. Öffne hierzu den *Inspektor* (Rechtsklick → Untersuchen):
![Dark- und Light-Mode im Firefox Inspektor](/upload/2021-05-15%20Firefox%20Inspector%20Dark%20Light%20Mode.png)
Du kannst das übrigens direkt auf meiner Website testen 🙂

View file

@ -1,5 +1,5 @@
---
title: "Firefox Dark Mode"
title: "Firefox' Dark Mode"
author: ""
date: 2021-05-15T11:54:53+02:00
categories:
@ -8,6 +8,7 @@ tags:
draft: false
type: "post"
description: ""
slug: "firefox-dark-mode"
---
This is how to enable the dark mode for all compatible websites in your Firefox.
@ -18,7 +19,7 @@ To enable the Firefox Dark Mode open your Firefox' [about:config](https://suppor
## Debugging
For debugging purposes you can switch between dark and light mode using the *Inspector* (right-click > Inspect):
For debugging purposes you can switch between dark and light mode using the *Inspector* (right-click Inspect):
![Firefox' Inspector dark and light mode](/upload/2021-05-15%20Firefox%20Inspector%20Dark%20Light%20Mode.png)

32
i18n/de.yaml Normal file
View file

@ -0,0 +1,32 @@
# Menus
home:
other: Start
projects:
other: Projekte
blog:
other: Blog
sourcecode:
other: "Quellcode"
# Footer
build:
other: "Build "
build-title-tag:
other: "Build von "
made-with:
other: "Erstellt mit "
# Shortcodes
verticalposts-more:
other: mehr
# Content
introduction-heading:
other: Hola 🖖
introduction-sub:
other: Ich bin Vri 🙂
latest-posts-heading:
other: Aus meinem Blog

32
i18n/en.yaml Normal file
View file

@ -0,0 +1,32 @@
# Menus
home:
other: Home
projects:
other: Projects
blog:
other: Blog
sourcecode:
other: "Sourcecode"
# Footer
build:
other: "Build "
build-title-tag:
other: "Build from "
made-with:
other: "Made with "
# Shortcodes
verticalposts-more:
other: more
# Content
introduction-heading:
other: Hola 🖖
introduction-sub:
other: I am Vri 🙂
latest-posts-heading:
other: From my Blog

View file

@ -1,5 +1,5 @@
<!doctype html>
<html lang="en">
<html lang="{{ .Page.Lang }}">
<head>
<title>{{ with .Title }} {{ . }} {{ end }}{{ .Site.Title }}</title>
{{- $style := resources.Get "/style.scss" | resources.ToCSS (dict "outputStyle" "compressed") }}
@ -8,8 +8,9 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
{{ partial "nav.html" . }}
<body id="{{ .Page.Title }}">
{{- block "header" . }}{{ end }}
{{ partial "sidebar.html" . }}
{{- block "main" . }}{{ end }}
{{ partial "footer.html" . }}
</body>

View file

@ -0,0 +1,2 @@
User-agent: *
Disallow: /

View file

@ -1,7 +1,7 @@
{{- define "main" }}
<main>
{{- if eq .Params.type "post" }}
<p class="date-published" title="{{ .Date.Format "2. January 2006, 15:04 MST" }}">{{ .Date.Day }}. {{ if eq .Params.lang "de"}} {{ index $.Site.Data.monate (printf "%d" .Date.Month) }} {{ else }} {{ .Date.Month }} {{ end }} {{ .Date.Year }}</p>
<p class="date-published" title="{{ .Date | time.Format "2. January 2006, 15:04 MST" }}">{{ .Date | time.Format "2. January 2006" }}</p>
{{- end }}
<h1 class="title">{{ .Title }}</h1>
{{ .Content -}}

View file

@ -1,5 +1,12 @@
{{- define "header" }}
<header id="introduction" class="global-header">
<h1>{{ i18n "introduction-heading" }}</h1>
<p>{{ i18n "introduction-sub" }}</p>
</header>
{{ end }}
{{- define "main" }}
<main>
{{ .Content -}}
{{ .Content }}
</main>
{{- end }}

View file

@ -1,7 +1,12 @@
<footer>
<span title="Revision: {{ now.Format "2. January 2006, 15:04 MST" }}">R {{ now.Format "2006-01-02" }}</span>
{{- range .Site.Menus.footer }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{- end }}
<p>
<span title='{{ i18n "build-title-tag" }}{{ now | time.Format ":date_full" }}, {{ now | time.Format ":time_full" }}'>{{ i18n "build" }}{{ now | time.Format ":date_short" }}</span>
{{- range .Site.Menus.footer_source -}}
<span><a href="{{ .URL }}">{{ i18n .Identifier | default .Name }}</a></span>
{{- end }}
</p>
<p>
<span>{{ i18n "made-with" }}<a href='{{ .Site.Params.staticSiteGeneratorLink }}'>{{ .Site.Params.staticSiteGenerator }}</a></span>
</p>
</footer>

View file

@ -1,18 +0,0 @@
{{- $currentPage := . }}
<header>
{{- range .Site.Menus.name }}
<h1> <a href="{{ .URL }}">{{ .Name }}</a> </h1>
{{- end }}
<nav>
{{- range .Site.Menus.main }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{- end }}
</nav>
{{- if .IsTranslated }}
<aside>
{{- range .Translations }}
<a href="{{ .Permalink }}">{{ .Site.Params.languageName }}</a>
{{- end }}
</aside>
{{- end }}
</header>

View file

@ -0,0 +1,44 @@
{{ $currentPage := . }}
<nav id="sidebar">
<header>
<img id="avatar" src="/2021_vrifox-avatar.png">
<p id="name">{{ .Site.Params.displayName }}</p>
<p id="information">
<span>{{ .Site.Params.username }}</span>
</p>
</header>
<section id="sidebar-menu">
<ul>
{{- range .Site.Menus.main }}
{{ if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }}
<li class="active"><a href="{{ .URL }}">{{ i18n .Identifier | default .Name }}</a></li>
{{ else }}
<li><a href="{{ .URL }}">{{ i18n .Identifier | default .Name }}</a></li>
{{ end }}
{{- end }}
</ul>
</section>
<aside>
{{- if .Site.IsMultiLingual }}
{{ $siteLanguages := .Site.Languages }}
{{ $pageLanguage := .Page.Lang }}
<div id="language-select">
<span id="language-icon" href="#" data-page-lang="{{ .Page.Lang }}">🌐</span>
<ul id="languages">
{{ range .Page.AllTranslations }}
{{ $translation := . }}
{{ range $siteLanguages }}
{{ if eq $translation.Lang .Lang }}
{{ if eq $pageLanguage .Lang }}
<li class="active"><a href="{{ $translation.Permalink }}">{{ .LanguageName }}</a></li>
{{ else }}
<li><a href="{{ $translation.Permalink }}">{{ .LanguageName }}</a></li>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</ul>
</div>
{{- end }}
</nav>

View file

@ -0,0 +1,14 @@
<section class="verticalposts">
{{ with .Get "header" }}<h2>{{ i18n . }} <a href="blog/"class="more">{{ i18n "verticalposts-more" }}</a></h2>{{ end }}
<div class="verticalposts-wrapper">
{{ range first 3 (where .Site.RegularPages "Section" "blog") }}
<a href="{{ .Permalink }}" class="post-group">
<p class="title">{{ .Title }}</p>
<aside class="meta" title="{{ .Date | time.Format "2 Jan 2006, 15:04 MST" }}">
<span class="date">{{ .Date | time.Format "2. January 2006" }}</span>
<span class="author">{{ with .Params.author }}by {{ end }}{{ .Params.author }}</span>
</aside>
</a>
{{ end }}
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB