oneflow-jekyll 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.MD +7 -0
- data/README.md +29 -0
- data/_data/navigation.yml +18 -0
- data/_includes/editables/editables.html +15 -0
- data/_includes/figure +9 -0
- data/_includes/footer/custom.html +3 -0
- data/_includes/footer.html +27 -0
- data/_includes/gallery +35 -0
- data/_includes/head/custom.html +12 -0
- data/_includes/head.html +23 -0
- data/_includes/image-text-row +61 -0
- data/_includes/masthead.html +35 -0
- data/_includes/page__hero.html +46 -0
- data/_includes/popup.html +43 -0
- data/_includes/round-images +30 -0
- data/_includes/scripts.html +13 -0
- data/_includes/seo.html +158 -0
- data/_includes/video +24 -0
- data/_layouts/default.html +78 -0
- data/_layouts/page.html +13 -0
- data/_sass/oneflow/_animations.scss +21 -0
- data/_sass/oneflow/_base.scss +356 -0
- data/_sass/oneflow/_boxes.scss +46 -0
- data/_sass/oneflow/_buttons.scss +95 -0
- data/_sass/oneflow/_fonts.scss +18 -0
- data/_sass/oneflow/_footer.scss +121 -0
- data/_sass/oneflow/_masthead.scss +97 -0
- data/_sass/oneflow/_mixins.scss +92 -0
- data/_sass/oneflow/_navigation.scss +412 -0
- data/_sass/oneflow/_notices.scss +109 -0
- data/_sass/oneflow/_page.scss +287 -0
- data/_sass/oneflow/_print.scss +252 -0
- data/_sass/oneflow/_reset.scss +187 -0
- data/_sass/oneflow/_sections.scss +29 -0
- data/_sass/oneflow/_utilities.scss +307 -0
- data/_sass/oneflow/_variables.scss +140 -0
- data/_sass/oneflow/skins/_air.scss +23 -0
- data/_sass/oneflow/skins/_aqua.scss +34 -0
- data/_sass/oneflow/skins/_contrast.scss +52 -0
- data/_sass/oneflow/skins/_dark.scss +30 -0
- data/_sass/oneflow/skins/_default.scss +5 -0
- data/_sass/oneflow/skins/_dirt.scss +33 -0
- data/_sass/oneflow/skins/_mint.scss +24 -0
- data/_sass/oneflow/skins/_neon.scss +63 -0
- data/_sass/oneflow/skins/_plum.scss +70 -0
- data/_sass/oneflow/skins/_sunrise.scss +49 -0
- data/_sass/oneflow/vendor/breakpoint/_breakpoint.scss +114 -0
- data/_sass/oneflow/vendor/breakpoint/_context.scss +95 -0
- data/_sass/oneflow/vendor/breakpoint/_helpers.scss +151 -0
- data/_sass/oneflow/vendor/breakpoint/_legacy-settings.scss +50 -0
- data/_sass/oneflow/vendor/breakpoint/_no-query.scss +15 -0
- data/_sass/oneflow/vendor/breakpoint/_parsers.scss +215 -0
- data/_sass/oneflow/vendor/breakpoint/_respond-to.scss +82 -0
- data/_sass/oneflow/vendor/breakpoint/_settings.scss +71 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/_double.scss +33 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/_query.scss +82 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/_resolution.scss +31 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/_single.scss +26 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/_triple.scss +36 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/double/_default-pair.scss +21 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/double/_default.scss +22 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/double/_double-string.scss +22 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/single/_default.scss +13 -0
- data/_sass/oneflow/vendor/breakpoint/parsers/triple/_default.scss +18 -0
- data/_sass/oneflow/vendor/magnific-popup/_magnific-popup.scss +649 -0
- data/_sass/oneflow/vendor/magnific-popup/_settings.scss +46 -0
- data/_sass/oneflow/vendor/susy/_su.scss +4 -0
- data/_sass/oneflow/vendor/susy/_susy-prefix.scss +13 -0
- data/_sass/oneflow/vendor/susy/_susy.scss +5 -0
- data/_sass/oneflow/vendor/susy/plugins/_svg-grid.scss +5 -0
- data/_sass/oneflow/vendor/susy/plugins/svg-grid/_prefix.scss +7 -0
- data/_sass/oneflow/vendor/susy/plugins/svg-grid/_svg-api.scss +114 -0
- data/_sass/oneflow/vendor/susy/plugins/svg-grid/_svg-grid-math.scss +67 -0
- data/_sass/oneflow/vendor/susy/plugins/svg-grid/_svg-settings.scss +14 -0
- data/_sass/oneflow/vendor/susy/plugins/svg-grid/_svg-unprefix.scss +18 -0
- data/_sass/oneflow/vendor/susy/plugins/svg-grid/_svg-utilities.scss +133 -0
- data/_sass/oneflow/vendor/susy/susy/_api.scss +318 -0
- data/_sass/oneflow/vendor/susy/susy/_normalize.scss +261 -0
- data/_sass/oneflow/vendor/susy/susy/_parse.scss +163 -0
- data/_sass/oneflow/vendor/susy/susy/_settings.scss +329 -0
- data/_sass/oneflow/vendor/susy/susy/_su-math.scss +441 -0
- data/_sass/oneflow/vendor/susy/susy/_su-validate.scss +213 -0
- data/_sass/oneflow/vendor/susy/susy/_syntax-helpers.scss +191 -0
- data/_sass/oneflow/vendor/susy/susy/_unprefix.scss +56 -0
- data/_sass/oneflow/vendor/susy/susy/_utilities.scss +167 -0
- data/_sass/oneflow.scss +33 -0
- data/assets/css/all.min.css +9 -0
- data/assets/css/custom-styles.css +1 -0
- data/assets/css/main.scss +13 -0
- data/assets/fonts/great-vibes-v18-latin-regular.woff2 +0 -0
- data/assets/images/header.webp +0 -0
- data/assets/images/logo.webp +0 -0
- data/assets/images/sydney-2.webp +0 -0
- data/assets/images/sydney-3.webp +0 -0
- data/assets/images/sydney-4.webp +0 -0
- data/assets/images/sydney-5.webp +0 -0
- data/assets/images/sydney-6.webp +0 -0
- data/assets/js/_main.js +136 -0
- data/assets/js/lunr/lunr-en.js +73 -0
- data/assets/js/lunr/lunr-gr.js +526 -0
- data/assets/js/lunr/lunr-store.js +84 -0
- data/assets/js/lunr/lunr.js +3475 -0
- data/assets/js/lunr/lunr.min.js +6 -0
- data/assets/js/main.min.js +6 -0
- data/assets/js/plugins/gumshoe.js +484 -0
- data/assets/js/plugins/jquery.ba-throttle-debounce.js +252 -0
- data/assets/js/plugins/jquery.fitvids.js +82 -0
- data/assets/js/plugins/jquery.greedy-navigation.js +127 -0
- data/assets/js/plugins/jquery.magnific-popup.js +1860 -0
- data/assets/js/plugins/smooth-scroll.js +650 -0
- data/assets/js/vendor/jquery/jquery-3.6.0.js +10881 -0
- data/assets/webfonts/fa-brands-400.ttf +0 -0
- data/assets/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/webfonts/fa-regular-400.ttf +0 -0
- data/assets/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/webfonts/fa-solid-900.ttf +0 -0
- data/assets/webfonts/fa-solid-900.woff2 +0 -0
- data/assets/webfonts/fa-v4compatibility.ttf +0 -0
- data/assets/webfonts/fa-v4compatibility.woff2 +0 -0
- metadata +253 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 339b2193a86716c8c8befd80e4fe2e104d7c08d1577b429d63b7823531c71e23
|
4
|
+
data.tar.gz: 8ec11d35808b84eeaa88fb72fd3bf0f0ac33dcc54575f29e84b22fd40985ca0f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1b4dc1113c8713ee12e617c483a06b76ee701f72e3ee9184a2019fd682c71bca267a3202f27313b957dff5da2d53c5cdf3eb35b21e7c5a3e08a311f3e2bd3495
|
7
|
+
data.tar.gz: 154dbd18d7c2baa0e34d685d62afbaadd46417e909aa555500152fb466f374b19e6be5f4d66f21380ffd1ac632e49ba3a5dfa5346cfd393d79e5b916adc439dc
|
data/LICENSE.MD
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
Copyright 2024 Per Starke.
|
2
|
+
|
3
|
+
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:
|
4
|
+
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
6
|
+
|
7
|
+
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.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# OneFlow Jekyll Theme
|
2
|
+
|
3
|
+
## What is it
|
4
|
+
OneFlow is a Jekyll Theme designed to create stunning, clear and practical modern One-Pager Websites.
|
5
|
+
It offers lots of features and customization options, so you can easily create a Site that matches your own or your client's wishes for design and structure.
|
6
|
+
Check out the [Theme Website](https://oneflow-jekyll-theme.github.io/) showcasing and explaining the various opportunities the theme offers, and also check out the [first example website](https://oneflow-jekyll-theme-example-one.github.io/) and the [second example website](https://oneflow-jekyll-theme-example-two.github.io/) to see a few of the different design options the theme offers.
|
7
|
+
|
8
|
+
## Full documentation
|
9
|
+
Extensive documentation for OneFlow is available [here](https://perstarke-webdev.de/oneflow-jekyll-theme).
|
10
|
+
|
11
|
+
## Getting started & development
|
12
|
+
|
13
|
+
### Fork and clone this repository
|
14
|
+
The **vision of this theme** is **simplicity and accessibility**, to easily create stunning websites from scratch.
|
15
|
+
Therefore, it's not available as a classic gem-based Jekyll theme, but as a ready-to-use GitHub repository that you just need to fork and clone.
|
16
|
+
So, get ahead and make a fork of this repository, rename it if you like to suit the name of the site you want to create, locally clone it, and directly start editing!
|
17
|
+
|
18
|
+
### How to start a development docker container
|
19
|
+
To test your website and see all of your changes in real-time without deploying it online, you can easily build your site locally.
|
20
|
+
- Make sure you have [Bundler](https://bundler.io/) and [Docker](https://www.docker.com/) installed.
|
21
|
+
- Open up a terminal, navigate to your local repository, and run ```docker compose up```.
|
22
|
+
|
23
|
+
Your site will then be visible at ```http://0.0.0.0:4000/``` in any browser.
|
24
|
+
|
25
|
+
## News
|
26
|
+
|
27
|
+
- OneFlow is now featured on [Jamstackthemes](https://jamstackthemes.dev/theme/oneflow/)
|
28
|
+
- OneFlow is now featured on [jeyll-themes.com](https://jekyll-themes.com/perstarke-webdev/oneflow-jekyll-theme/)
|
29
|
+
- OneFlow has been used to create the [arc42 Trainings dates page](https://trainings.arc42.org/)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# main links
|
2
|
+
main:
|
3
|
+
- title: "Theme Documentation"
|
4
|
+
url: https://perstarke-webdev.de/oneflow-jekyll-theme
|
5
|
+
blank: true
|
6
|
+
description: "The documentation for this theme, on https://perstarke-webdev.de"
|
7
|
+
- title: "Section 1"
|
8
|
+
url: /#section-1
|
9
|
+
blank: false
|
10
|
+
- title: "Section 2"
|
11
|
+
url: /#section-2
|
12
|
+
blank: false
|
13
|
+
- title: "Section 3"
|
14
|
+
url: /#section-3
|
15
|
+
blank: false
|
16
|
+
- title: "Section 4"
|
17
|
+
url: /#section-4
|
18
|
+
blank: false
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<!--
|
2
|
+
{% comment %}
|
3
|
+
This is an example for an editable.
|
4
|
+
Tell the client where this is located, and let him/her edit just this file.
|
5
|
+
Drop it into the main page via {% include /editables/editables.html %}.
|
6
|
+
You can add as many files as you want in the editables folder and include them in this way.
|
7
|
+
This is great for example for upcoming dates that need regular change that the client him/herself wants to update,
|
8
|
+
or for similar scenarios.
|
9
|
+
{% endcomment %}
|
10
|
+
-->
|
11
|
+
|
12
|
+
Are you a Web Developer and using OneFlow to build a site for a client?
|
13
|
+
If the client him/herself regularly wants to change certain parts of the site, for example upcoming dates,
|
14
|
+
OneFlow offers easy editables within Jekyll's <code>/_includes</code> folder, so the client does not have to touch
|
15
|
+
the rest of the site, but can still edit whatever he/she needs to edit.
|
data/_includes/figure
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
<figure class="{{ include.class }}">
|
2
|
+
<img src="{{ include.image_path | relative_url }}"
|
3
|
+
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
|
4
|
+
{%- if include.caption -%}
|
5
|
+
<figcaption>
|
6
|
+
{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}
|
7
|
+
</figcaption>
|
8
|
+
{%- endif -%}
|
9
|
+
</figure>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<div class="page__footer-follow">
|
2
|
+
|
3
|
+
<ul class="socials">
|
4
|
+
|
5
|
+
<li></li>
|
6
|
+
|
7
|
+
{% for link in site.footer.links %}
|
8
|
+
{% if link.url %}
|
9
|
+
<li class="socials__item">
|
10
|
+
<a href="{{link.url}}" rel="noopener noreferrer nofollow" target="_blank" class="socials__item__link" title="{{link.label}}">
|
11
|
+
<i class="{{link.icon}} footer-icon" aria-hidden="true"></i>
|
12
|
+
</a>
|
13
|
+
</li>
|
14
|
+
{% endif %}
|
15
|
+
{% endfor %}
|
16
|
+
|
17
|
+
<li class="socials__item">
|
18
|
+
<a href="/imprint" rel="noopener noreferrer nofollow" target="_blank" class="socials__item__link" title="Imprint">
|
19
|
+
<i class="fas fa-gavel footer-icon" aria-hidden="true"></i>
|
20
|
+
</a>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
</ul>
|
24
|
+
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.footer.copyright | default: site.title }}. {% if site.footer.creator %} Created by <a rel="noopener noreferrer nofollow" target="_blank"href="{{site.footer.creator.url}}">{{site.footer.creator.name}}</a>{% endif %}</div>
|
data/_includes/gallery
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
{% if include.id %}
|
2
|
+
{% assign gallery = page[include.id] %}
|
3
|
+
{% else %}
|
4
|
+
{% assign gallery = page.gallery %}
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
{% if include.layout %}
|
8
|
+
{% assign gallery_layout = include.layout %}
|
9
|
+
{% else %}
|
10
|
+
{% if gallery.size == 2 %}
|
11
|
+
{% assign gallery_layout = 'half' %}
|
12
|
+
{% elsif gallery.size >= 3 %}
|
13
|
+
{% assign gallery_layout = 'third' %}
|
14
|
+
{% else %}
|
15
|
+
{% assign gallery_layout = '' %}
|
16
|
+
{% endif %}
|
17
|
+
{% endif %}
|
18
|
+
|
19
|
+
<figure class="{{ gallery_layout }} {{ include.class }}">
|
20
|
+
{% for img in gallery %}
|
21
|
+
{% if img.url %}
|
22
|
+
<a href="{{ img.url | relative_url }}"
|
23
|
+
{% if img.title %}title="{{ img.title }}"{% endif %}>
|
24
|
+
<img src="{{ img.image_path | relative_url }}"
|
25
|
+
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
26
|
+
</a>
|
27
|
+
{% else %}
|
28
|
+
<img src="{{ img.image_path | relative_url }}"
|
29
|
+
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
30
|
+
{% endif %}
|
31
|
+
{% endfor %}
|
32
|
+
{% if include.caption %}
|
33
|
+
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
|
34
|
+
{% endif %}
|
35
|
+
</figure>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!-- start custom head snippets -->
|
2
|
+
|
3
|
+
<!-- insert favicons. use https://realfavicongenerator.net/ -->
|
4
|
+
|
5
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
6
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
7
|
+
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
8
|
+
<link rel="manifest" href="/site.webmanifest">
|
9
|
+
<meta name="msapplication-TileColor" content="#da532c">
|
10
|
+
<meta name="theme-color" content="#ffffff">
|
11
|
+
|
12
|
+
<!-- end custom head snippets -->
|
data/_includes/head.html
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
<meta charset="utf-8">
|
2
|
+
|
3
|
+
{% include seo.html %}
|
4
|
+
|
5
|
+
{% unless site.atom_feed.hide %}
|
6
|
+
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
7
|
+
{% endunless %}
|
8
|
+
|
9
|
+
<!-- https://t.co/dKP3o1e -->
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
11
|
+
|
12
|
+
<script>
|
13
|
+
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
14
|
+
</script>
|
15
|
+
|
16
|
+
<!-- For all browsers -->
|
17
|
+
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
|
18
|
+
|
19
|
+
{% if site.head_scripts %}
|
20
|
+
{% for script in site.head_scripts %}
|
21
|
+
<script src="{{ script | relative_url }}"></script>
|
22
|
+
{% endfor %}
|
23
|
+
{% endif %}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
{% if include.id %}
|
2
|
+
{% assign itr-list = page[include.id] %}
|
3
|
+
{% else %}
|
4
|
+
{% assign itr-list = page.image-text-row %}
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
{% for itr in itr-list %}
|
8
|
+
|
9
|
+
{% if itr.image-right %}
|
10
|
+
|
11
|
+
<div class="itr-container">
|
12
|
+
<div class="itr-text">
|
13
|
+
{% if itr.header %}
|
14
|
+
<h3>{{itr.header}}</h3>
|
15
|
+
{% endif %}
|
16
|
+
{% if itr.excerpt %}
|
17
|
+
<p>{{itr.excerpt}}</p>
|
18
|
+
{% endif %}
|
19
|
+
{% if itr.btn-url %}
|
20
|
+
<a href="{{itr.btn-url}}"
|
21
|
+
{% if itr.blank %}
|
22
|
+
target="_blank" rel="noopener noreferrer nofollow" {% endif %}
|
23
|
+
class="btn btn--{{itr.btn-class | default: "primary"}}">
|
24
|
+
{{itr.btn-label | default: "Learn more"}}
|
25
|
+
</a>
|
26
|
+
{% endif %}
|
27
|
+
</div>
|
28
|
+
<div class="itr-image-container">
|
29
|
+
<img src="{{itr.image-url}}" alt="{{itr.alt-text | default: ""}}" class="itr-image" {% if itr.image-width%}
|
30
|
+
style="width:{{itr.image-width}}"{% endif %}>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
{% else %}
|
35
|
+
|
36
|
+
<div class="itr-container">
|
37
|
+
<div class="itr-image-container">
|
38
|
+
<img src="{{itr.image-url}}" alt="{{itr.alt-text | default: ""}}" class="itr-image" {% if itr.image-width%}
|
39
|
+
style="width:{{itr.image-width}}"{% endif %}>
|
40
|
+
</div>
|
41
|
+
<div class="itr-text">
|
42
|
+
{% if itr.header %}
|
43
|
+
<h3>{{itr.header}}</h3>
|
44
|
+
{% endif %}
|
45
|
+
{% if itr.excerpt %}
|
46
|
+
<p>{{itr.excerpt}}</p>
|
47
|
+
{% endif %}
|
48
|
+
{% if itr.btn-url %}
|
49
|
+
<a href="{{itr.btn-url}}"
|
50
|
+
{% if itr.blank %}
|
51
|
+
target="_blank" rel="noopener noreferrer nofollow" {% endif %}
|
52
|
+
class="btn btn--{{itr.btn-class | default: "primary"}}">
|
53
|
+
{{itr.btn-label | default: "Learn more"}}
|
54
|
+
</a>
|
55
|
+
{% endif %}
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
{% endif %}
|
60
|
+
|
61
|
+
{% endfor %}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
{% capture logo_path %}{{ site.logo }}{% endcapture %}
|
2
|
+
|
3
|
+
<div class="masthead" style="opacity: {{site.masthead-opacity}} !important; {% if site.sticky-masthead %} position: sticky;{% endif %}">
|
4
|
+
<div class="masthead__inner-wrap">
|
5
|
+
<div class="masthead__menu">
|
6
|
+
<nav id="site-nav" class="greedy-nav">
|
7
|
+
{% unless logo_path == empty %}
|
8
|
+
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt="{{ site.masthead_title | default: site.title }}"></a>
|
9
|
+
{% endunless %}
|
10
|
+
<a class="site-title" href="{{ '/' | relative_url }}">
|
11
|
+
{{ site.masthead_title | default: site.title }}
|
12
|
+
{% if site.subtitle %}<span class="site-subtitle">{{ site.subtitle }}</span>{% endif %}
|
13
|
+
</a>
|
14
|
+
<ul class="visible-links">
|
15
|
+
{%- for link in site.data.navigation.main -%}
|
16
|
+
<li class="masthead__menu-item">
|
17
|
+
<a href="{{ link.url | relative_url }}"{% if link.description %} title="{{ link.description }}"{% endif %} {% if link.blank %} target="_blank" rel="noopener noreferrer nofollow"{% endif %}>{{ link.title }}</a>
|
18
|
+
</li>
|
19
|
+
{%- endfor -%}
|
20
|
+
</ul>
|
21
|
+
{% if site.search == true %}
|
22
|
+
<button class="search__toggle" type="button">
|
23
|
+
<span class="visually-hidden">{{ site.data.ui-text[site.locale].search_label | default: "Toggle search" }}</span>
|
24
|
+
<i class="fas fa-search"></i>
|
25
|
+
</button>
|
26
|
+
{% endif %}
|
27
|
+
<button class="greedy-nav__toggle hidden" type="button">
|
28
|
+
<span class="visually-hidden">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle menu" }}</span>
|
29
|
+
<div class="navicon"></div>
|
30
|
+
</button>
|
31
|
+
<ul class="hidden-links hidden"></ul>
|
32
|
+
</nav>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
{% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %}
|
2
|
+
|
3
|
+
{% if page.header.overlay_filter contains "gradient" %}
|
4
|
+
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
|
5
|
+
{% elsif page.header.overlay_filter contains "rgba" %}
|
6
|
+
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
|
7
|
+
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
|
8
|
+
{% elsif page.header.overlay_filter %}
|
9
|
+
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
|
10
|
+
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
|
11
|
+
{% endif %}
|
12
|
+
|
13
|
+
{% if page.header.image_description %}
|
14
|
+
{% assign image_description = page.header.image_description %}
|
15
|
+
{% else %}
|
16
|
+
{% assign image_description = page.title %}
|
17
|
+
{% endif %}
|
18
|
+
|
19
|
+
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
|
20
|
+
|
21
|
+
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
|
22
|
+
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}; height: 100vh; background-size: cover; display: flex; flex-direction: column; justify-content: center; align-items: center;">
|
23
|
+
{% if page.header.overlay_color or page.header.overlay_image %}
|
24
|
+
<div class="wrapper">
|
25
|
+
<h1 id="page-title" class="page__title" itemprop="headline">
|
26
|
+
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
|
27
|
+
</h1>
|
28
|
+
{% if page.header.show_overlay_excerpt != false and page.excerpt %}
|
29
|
+
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
|
30
|
+
{% endif %}
|
31
|
+
{% if page.header.actions %}
|
32
|
+
<div style="text-align: center">
|
33
|
+
<p>
|
34
|
+
{% for action in page.header.actions %}
|
35
|
+
<a href="{{ action.url | relative_url }}" class="btn btn--light-outline btn--large" {% if action.blank %} target="_blank" rel="noopener noreferrer nofollow"{% endif %}>{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a>
|
36
|
+
{% endfor %}
|
37
|
+
</div>
|
38
|
+
{% endif %}
|
39
|
+
</div>
|
40
|
+
{% else %}
|
41
|
+
<img src="{{ page.header.image | relative_url }}" alt="{{ image_description }}" class="page__hero-image">
|
42
|
+
{% endif %}
|
43
|
+
{% if page.header.caption %}
|
44
|
+
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
|
45
|
+
{% endif %}
|
46
|
+
</div>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<div id="cookie-banner">
|
2
|
+
This website is made available via GitHub Pages, which means it uses a global distribution network (CDN) to reliably display content. When you use the website, some of your non-personal data, such as IP address and page usage information, may be transmitted over this network to ensure the proper functioning of the website.
|
3
|
+
You can find more information in the
|
4
|
+
<a href="/imprint#github-pages-und-cdn-nutzung"
|
5
|
+
target="_blank" rel="noopener noreferrer nofollow">
|
6
|
+
imprint</a><br><br>
|
7
|
+
|
8
|
+
|
9
|
+
Please confirm that you agree to this and that we use a consent cookie that is stored for a period of one day. This cookie enables us to save your consent to the use of non-personal data and the proper functioning of the website.<br><br>
|
10
|
+
|
11
|
+
<small>For information in german, refer to the
|
12
|
+
<a href="/imprint"
|
13
|
+
target="_blank" rel="noopener noreferrer nofollow">
|
14
|
+
imprint</a>
|
15
|
+
</small>
|
16
|
+
|
17
|
+
<br><br>
|
18
|
+
|
19
|
+
<button class="btn btn--warning" id="cookie-consent-btn">Agree</button>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
<!-- JavaScript-code for the cookie consent-banner -->
|
28
|
+
<script>
|
29
|
+
if (document.cookie.indexOf('cookieConsent=1') !== -1) {
|
30
|
+
document.getElementById('cookie-banner').style.display = 'none';
|
31
|
+
}
|
32
|
+
|
33
|
+
function setCookieConsent() {
|
34
|
+
document.getElementById('cookie-banner').style.display = 'none';
|
35
|
+
|
36
|
+
var expiresDate = new Date();
|
37
|
+
expiresDate.setDate(expiresDate.getDate() + 1);
|
38
|
+
|
39
|
+
document.cookie = 'cookieConsent=1; expires=' + expiresDate.toUTCString() + '; path=/';
|
40
|
+
}
|
41
|
+
|
42
|
+
document.getElementById('cookie-consent-btn').addEventListener('click', setCookieConsent);
|
43
|
+
</script>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{% if include.id %}
|
2
|
+
{% assign round-images = page[include.id] %}
|
3
|
+
{% else %}
|
4
|
+
{% assign round-images = page.round-images %}
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
<div class="round-image-container">
|
8
|
+
{% for part in round-images %}
|
9
|
+
{% if part.size == 'full' %}
|
10
|
+
<div class="round-image-box round-image-box-full">
|
11
|
+
{% elsif part.size == 'half' %}
|
12
|
+
<div class="round-image-box round-image-box-half">
|
13
|
+
{% elsif part.size == 'third' %}
|
14
|
+
<div class="round-image-box round-image-box-third">
|
15
|
+
{% else %}
|
16
|
+
{% elsif part.size == 'half' %}
|
17
|
+
<div class="round-image-box round-image-box-full">
|
18
|
+
{% endif %}
|
19
|
+
<div class="round-image">
|
20
|
+
<img src={{part.image-path}}>
|
21
|
+
</div>
|
22
|
+
{% if part.header %}
|
23
|
+
<h3>{{part.header}}</h3>
|
24
|
+
{% endif %}
|
25
|
+
{% if part.caption %}
|
26
|
+
<p>{{part.caption}}</p>
|
27
|
+
{% endif %}
|
28
|
+
</div>
|
29
|
+
{% endfor %}
|
30
|
+
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{% if site.footer_scripts %}
|
2
|
+
{% for script in site.footer_scripts %}
|
3
|
+
<script src="{{ script | relative_url }}"></script>
|
4
|
+
{% endfor %}
|
5
|
+
{% else %}
|
6
|
+
<script src="{{ '/assets/js/main.min.js' | relative_url }}"></script>
|
7
|
+
{% endif %}
|
8
|
+
|
9
|
+
{% if site.after_footer_scripts %}
|
10
|
+
{% for script in site.after_footer_scripts %}
|
11
|
+
<script src="{{ script | relative_url }}"></script>
|
12
|
+
{% endfor %}
|
13
|
+
{% endif %}
|
data/_includes/seo.html
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
<!-- begin _includes/seo.html -->
|
2
|
+
{%- if site.url -%}
|
3
|
+
{%- assign seo_url = site.url | append: site.baseurl -%}
|
4
|
+
{%- endif -%}
|
5
|
+
{%- assign seo_url = seo_url | default: site.github.url -%}
|
6
|
+
|
7
|
+
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
8
|
+
|
9
|
+
{%- if page.title -%}
|
10
|
+
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
|
11
|
+
{%- endif -%}
|
12
|
+
|
13
|
+
{%- if seo_title -%}
|
14
|
+
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
15
|
+
{%- endif -%}
|
16
|
+
|
17
|
+
{% if page.canonical_url %}
|
18
|
+
{%- assign canonical_url = page.canonical_url %}
|
19
|
+
{% else %}
|
20
|
+
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
|
21
|
+
{% endif %}
|
22
|
+
|
23
|
+
{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
|
24
|
+
{%- if seo_description -%}
|
25
|
+
{%- assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '<br />', ' ' | escape_once | strip -%}
|
26
|
+
{%- endif -%}
|
27
|
+
|
28
|
+
{%- assign author = page.author | default: page.authors[0] | default: site.author -%}
|
29
|
+
{%- assign author = site.data.authors[author] | default: author -%}
|
30
|
+
|
31
|
+
{%- if author.twitter -%}
|
32
|
+
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
|
33
|
+
{%- endif -%}
|
34
|
+
|
35
|
+
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url -%}
|
36
|
+
{%- assign page_large_image = page_large_image | escape -%}
|
37
|
+
|
38
|
+
{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url -%}
|
39
|
+
{%- assign page_teaser_image = page_teaser_image | escape -%}
|
40
|
+
|
41
|
+
{%- assign site_og_image = site.og_image | absolute_url -%}
|
42
|
+
{%- assign site_og_image = site_og_image | escape -%}
|
43
|
+
|
44
|
+
{%- if page.date -%}
|
45
|
+
{%- assign og_type = "article" -%}
|
46
|
+
{%- else -%}
|
47
|
+
{%- assign og_type = "website" -%}
|
48
|
+
{%- endif -%}
|
49
|
+
|
50
|
+
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
51
|
+
<meta name="description" content="{{ seo_description }}">
|
52
|
+
|
53
|
+
{% if author.name %}
|
54
|
+
<meta name="author" content="{{ author.name | default: author }}">
|
55
|
+
{% if og_type == "article" %}
|
56
|
+
<meta property="article:author" content="{{ author.name | default: author }}">
|
57
|
+
{% endif %}
|
58
|
+
{% endif %}
|
59
|
+
|
60
|
+
<meta property="og:type" content="{{ og_type }}">
|
61
|
+
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
|
62
|
+
<meta property="og:site_name" content="{{ site.title }}">
|
63
|
+
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
64
|
+
<meta property="og:url" content="{{ canonical_url }}">
|
65
|
+
|
66
|
+
{% if seo_description %}
|
67
|
+
<meta property="og:description" content="{{ seo_description }}">
|
68
|
+
{% endif %}
|
69
|
+
|
70
|
+
{% if page_large_image %}
|
71
|
+
<meta property="og:image" content="{{ page_large_image }}">
|
72
|
+
{% elsif page_teaser_image %}
|
73
|
+
<meta property="og:image" content="{{ page_teaser_image }}">
|
74
|
+
{% endif %}
|
75
|
+
|
76
|
+
{% if site.twitter.username %}
|
77
|
+
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
78
|
+
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
79
|
+
<meta name="twitter:description" content="{{ seo_description }}">
|
80
|
+
<meta name="twitter:url" content="{{ canonical_url }}">
|
81
|
+
|
82
|
+
{% if page_large_image %}
|
83
|
+
<meta name="twitter:card" content="summary_large_image">
|
84
|
+
<meta name="twitter:image" content="{{ page_large_image }}">
|
85
|
+
{% else %}
|
86
|
+
<meta name="twitter:card" content="summary">
|
87
|
+
{% if page_teaser_image %}
|
88
|
+
<meta name="twitter:image" content="{{ page_teaser_image }}">
|
89
|
+
{% endif %}
|
90
|
+
{% endif %}
|
91
|
+
|
92
|
+
{% if author_twitter %}
|
93
|
+
<meta name="twitter:creator" content="@{{ author_twitter }}">
|
94
|
+
{% endif %}
|
95
|
+
{% endif %}
|
96
|
+
|
97
|
+
{% if page.date %}
|
98
|
+
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
|
99
|
+
{% endif %}
|
100
|
+
|
101
|
+
{% if og_type == "article" and page.last_modified_at %}
|
102
|
+
<meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
|
103
|
+
{% endif %}
|
104
|
+
|
105
|
+
{% if site.facebook %}
|
106
|
+
{% if site.facebook.publisher %}
|
107
|
+
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
|
108
|
+
{% endif %}
|
109
|
+
|
110
|
+
{% if site.facebook.app_id %}
|
111
|
+
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
|
112
|
+
{% endif %}
|
113
|
+
{% endif %}
|
114
|
+
|
115
|
+
<link rel="canonical" href="{{ canonical_url }}">
|
116
|
+
|
117
|
+
{% if paginator.previous_page %}
|
118
|
+
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
|
119
|
+
{% endif %}
|
120
|
+
{% if paginator.next_page %}
|
121
|
+
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
122
|
+
{% endif %}
|
123
|
+
|
124
|
+
<script type="application/ld+json">
|
125
|
+
{
|
126
|
+
"@context": "https://schema.org",
|
127
|
+
{% if site.social.type == "Organization" %}
|
128
|
+
"@type": "Organization",
|
129
|
+
"url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
|
130
|
+
"logo": {{ site_og_image | jsonify }}{% endif %}
|
131
|
+
{% else %}
|
132
|
+
"@type": "Person",
|
133
|
+
"name": {{ site.social.name | default: site.name | jsonify }},
|
134
|
+
"url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %},
|
135
|
+
"sameAs": {{ site.social.links | jsonify }}{% endif %}
|
136
|
+
{% endif %}
|
137
|
+
}
|
138
|
+
</script>
|
139
|
+
|
140
|
+
{% if site.google_site_verification %}
|
141
|
+
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
142
|
+
{% endif %}
|
143
|
+
{% if site.bing_site_verification %}
|
144
|
+
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
145
|
+
{% endif %}
|
146
|
+
{% if site.alexa_site_verification %}
|
147
|
+
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
148
|
+
{% endif %}
|
149
|
+
{% if site.yandex_site_verification %}
|
150
|
+
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
151
|
+
{% endif %}
|
152
|
+
{% if site.naver_site_verification %}
|
153
|
+
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
|
154
|
+
{% endif %}
|
155
|
+
{% if site.baidu_site_verification %}
|
156
|
+
<meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}">
|
157
|
+
{% endif %}
|
158
|
+
<!-- end _includes/seo.html -->
|
data/_includes/video
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
{% capture video_id %}{{ include.id }}{% endcapture %}
|
2
|
+
{% capture video_provider %}{{ include.provider }}{% endcapture %}
|
3
|
+
{% capture video_danmaku %}{{ include.danmaku | default: 0 }}{% endcapture %}
|
4
|
+
|
5
|
+
{% capture video_src %}
|
6
|
+
{% case video_provider %}
|
7
|
+
{% when "vimeo" %}
|
8
|
+
https://player.vimeo.com/video/{{ video_id }}?dnt=true
|
9
|
+
{% when "youtube" %}
|
10
|
+
https://www.youtube-nocookie.com/embed/{{ video_id }}
|
11
|
+
{% when "google-drive" %}
|
12
|
+
https://drive.google.com/file/d/{{ video_id }}/preview
|
13
|
+
{% when "bilibili" %}
|
14
|
+
https://player.bilibili.com/player.html?bvid={{ video_id }}&page=1&as_wide=1&high_quality=1&danmaku={{ video_danmaku }}
|
15
|
+
{% endcase %}
|
16
|
+
{% endcapture %}
|
17
|
+
{% assign video_src = video_src | strip %}
|
18
|
+
|
19
|
+
<!-- Courtesy of embedresponsively.com -->
|
20
|
+
{% unless video_src == "" %}
|
21
|
+
<div class="responsive-video-container">
|
22
|
+
<iframe src="{{ video_src }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>
|
23
|
+
</div>
|
24
|
+
{% endunless %}
|