Remove proprietary template sources

This commit is contained in:
2025-10-12 19:46:17 +02:00
parent e0aed95739
commit 8a5e6cea51
97 changed files with 3 additions and 2809 deletions

2
.gitignore vendored
View File

@@ -1,4 +1,4 @@
.stack-work/ .stack-work/
/var/ /var/
/dist-newstyle/ /dist-newstyle/
/vendor/ /dist/

View File

@@ -4,7 +4,7 @@ name: flevum
version: 1.0 version: 1.0
author: Eugen Wissner author: Eugen Wissner
maintainer: belka@caraus.de maintainer: belka@caraus.de
copyright: 2018-2024 Eugen Wissner copyright: 2018-2025 Eugen Wissner
build-type: Simple build-type: Simple
executable flevum executable flevum
@@ -16,7 +16,7 @@ executable flevum
base >= 4.14 && < 5, base >= 4.14 && < 5,
filepath ^>= 1.5.3, filepath ^>= 1.5.3,
hakyll ^>= 4.16.0, hakyll ^>= 4.16.0,
pandoc ^>= 3.7, pandoc ^>= 3.8,
process ^>= 1.6.13, process ^>= 1.6.13,
time, time,
time-locale-compat ^>= 0.1.1, time-locale-compat ^>= 0.1.1,

5
henry/.gitignore vendored
View File

@@ -1,5 +0,0 @@
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor

View File

@@ -1,4 +0,0 @@
---
layout: 404
permalink: /404.html
---

View File

@@ -1,29 +0,0 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 4.2.0"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed"
gem "jekyll-paginate"
gem 'jekyll-sitemap'
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", "~> 1.2"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

View File

@@ -1,87 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.8)
em-websocket (0.5.2)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7-x64-mingw32)
ffi (1.14.2-x64-mingw32)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (1.8.7)
concurrent-ruby (~> 1.0)
jekyll (4.2.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.4.0)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 2.0)
jekyll-feed (0.15.1)
jekyll (>= 3.7, < 5.0)
jekyll-paginate (1.1.0)
jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0)
jekyll-seo-tag (2.7.1)
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.3.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.4.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.6)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.4)
rouge (3.26.0)
safe_yaml (1.0.5)
sassc (2.4.0-x64-mingw32)
ffi (~> 1.9)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
tzinfo (1.2.9)
thread_safe (~> 0.1)
tzinfo-data (1.2020.6)
tzinfo (>= 1.0.0)
unicode-display_width (1.7.0)
wdm (0.1.1)
PLATFORMS
x64-mingw32
DEPENDENCIES
jekyll (~> 4.2.0)
jekyll-feed
jekyll-paginate
jekyll-seo-tag
jekyll-sitemap
tzinfo (~> 1.2)
tzinfo-data
wdm (~> 0.1.1)
BUNDLED WITH
2.1.4

View File

@@ -1,3 +0,0 @@
---
category: docs
---

View File

@@ -1,3 +0,0 @@
---
category: jekyll
---

View File

@@ -1,93 +0,0 @@
# General
title: Henry
description: 'Simple, yet powerful Jekyll theme'
# Paths
baseurl: ""
url: ""
# Options
darkMode: true
showTags: true
showCategories: true
showSearch: true
showSharePost: true
showFavIcon: true
showComments: true
showCookieBanner: false
useExternalContactForm: false
useAnalytics: true
# Third Party / Social
facebook: 'https://facebook.com/'
twitter: 'https://twitter.com/'
instagram: 'https://instagram.com/'
email: 'your@email.com'
formspree: https://formspree.io/f/xxxxxxxx
googleAnalyticsTrackingCode: UA-XXXXXXX-2
disqusID: 'disqusID'
twitterHandle: 'twitterHandle'
# Collections
collections:
projects:
output: true
category:
output: true
tag:
output: true
defaults:
- scope:
path: ""
type: "posts"
values:
layout: "post"
comments: "true"
- scope:
path: ""
type: "pages"
values:
showInMenu: true
- scope:
path: ""
type: "projects"
values:
layout: "project"
- scope:
path: ""
type: "category"
values:
layout: "category"
- scope:
path: ""
type: "tag"
values:
layout: "tag"
- scope:
path: ""
values:
layout: "default"
# Permalinks
permalink: /:categories/:year/:month/:day/:title/
# Pagination
paginate: 10
paginate_path: "/blog/page:num/"
# Includes
include: ["_pages"]
# Post Separator
excerpt_separator: <!--more-->
# Assets
sass:
sass_dir: _sass
style: compressed
# Plugins
plugins:
- jekyll-feed
- jekyll-sitemap

View File

@@ -1,8 +0,0 @@
henry:
name: Henry Dawson
title: Ordinary Gentleman
avatar: /assets/images/user1.webp
guest:
name: Guest Star
title: Guest Author
avatar: /assets/images/user2.webp

View File

@@ -1,19 +0,0 @@
<div id="disqus_thread"></div>
<script>
/**
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables */
var disqus_config = function () {
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://{{site.disqusID}}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

View File

@@ -1,23 +0,0 @@
<div class="modal-container">
<div class="modal">
<div class="modal-header">
<strong class="modal-title">Contact Me</strong>
<svg class="close-modal" width="50" height="50"><use href={{"/assets/images/other-icons.svg#close" | absolute_url}}></use></svg>
</div>
<div class="modal-body">
<p id="contact-form-message" class="form-message"></p>
<form id="contact-form" action="{{site.formspree}}" method="POST" role="form">
<label for="contact-name">
<input type="text" placeholder="Your Name" name="name" id="contact-name" class="input">
</label>
<label for="contact-email">
<input type="email" placeholder="Your Email" name="_replyto" id="contact-email" class="input">
</label>
<label for="contact-message">
<textarea placeholder="Message" name="message" id="contact-message" class="textarea"></textarea>
</label>
<button type="submit" id="submit-contact-form" class="button">Send Message</button>
</form>
</div>
</div>
</div>

View File

@@ -1,7 +0,0 @@
<div class="cookie-banner">
<div>
<svg width="50" height="50"><use href={{"/assets/images/other-icons.svg#cookie" | absolute_url}}></use></svg>
<p>This website uses cookies to ensure you get the best experience. Please accept for optimal performance!</p>
</div>
<span id="acceptCookiesButton" class="button">Accept</span>
</div>

View File

@@ -1,10 +0,0 @@
<div id="custom-lightbox" class="custom-lightbox">
<div class="lightbox-content">
<div onClick="prevImage()" class="prev-image"><svg width="32" height="32"><use href={{"/assets/images/other-icons.svg#arrow-right" | absolute_url}}></use></svg></div>
<div class="current-image">
<img id="current-image" src="" alt="Gallery" width="400" height="300" />
</div>
<div onClick="nextImage()" class="next-image"><svg width="32" height="32"><use href={{"/assets/images/other-icons.svg#arrow-right" | absolute_url}}></use></svg></div>
</div>
<button class="lightbox-close" onClick="closeLightbox()"><svg width="32" height="32"><use href={{"/assets/images/other-icons.svg#close" | absolute_url}}></use></svg></button>
</div>

View File

@@ -1,17 +0,0 @@
{% if paginator.total_pages > 1 %}
<div class="pagination{% if paginator.next_page == 2 %} next{% endif %}">
{% if paginator.previous_page %}
<a href="{{paginator.previous_page_path | absolute_url}}" class="previous">&larr; Previous</a>
{% else %}
<span>&nbsp;</span>
{% endif %}
<span class="page_number">Page {{paginator.page}} of {{paginator.total_pages}}</span>
{% if paginator.next_page %}
<a href="{{paginator.next_page_path | absolute_url}}" class="next">Next &rarr;</a>
{% else %}
<span>&nbsp;</span>
{% endif %}
</div>
{% endif %}

View File

@@ -1,83 +0,0 @@
<article class="post" role="article">
{% if page.layout != 'post' %}
{% assign post = post %}
{% else %}
{% assign post = page %}
{% endif %}
{% assign author = site.data.authors[post.author] %}
<h2 class="post-title">
{% if page.layout != 'post' %}
<a href="{{post.url | absolute_url}}">{{post.title}}</a>
{% else %}
{{post.title}}
{% endif %}
</h2>
<div class="post-author">
{% if author %}
<img class="author-avatar" src="{{author.avatar | absolute_url}}" alt="{{author.name}}" width="50" height="50" />
{% else %}
{% assign author = site.data.authors['noavatar'] %}
<svg class="author-avatar" width="50" height="50"><use href={{"/assets/images/other-icons.svg#no-avatar" | absolute_url}}></use></svg>
{% endif %}
<div class="author-info">
<span class="author-name">{{author.name}}</span>
<span class="author-title">{{author.title}}</span>
</div>
<div class="post-meta">
<time class="post-date" datetime="{{post.date | date_to_xmlschema}}">{{post.date | date: "%-d %b, %Y"}}</time>
{% include partials/readingTimeCalculator.html %}
{% if site.showCategories and post.categories %}
<div class="post-categories">
{% for category in post.categories %}
{% capture categoryURL %}/category/{{category}}/{% endcapture %}
<a href={{categoryURL | absolute_url}}>{{category}}</a>
{% endfor %}
</div>
{% endif %}
</div>
</div>
<div class="post-content">
{% if page.layout != 'post' %}
{{post.excerpt}}
{% else %}
{{post.content | markdownify }}
{% endif %}
{% if page.layout != 'post' %}
{% if post.excerpt != post.content %}
<p><a href="{{post.url | absolute_url}}" class="read-more-button" role="button">Continue reading...</a></p>
{% endif %}
{% endif %}
</div>
<div class="post-footer">
{% if site.showTags and post.tags %}
<ul class="post-tags">
{% for tag in post.tags %}
{% capture tagURL %}/tag/{{tag}}{% endcapture %}
<li><a href="{{tagURL | absolute_url}}">#{{tag}}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if page.layout == 'post' and site.showSharePost %}
<div class="post-share">
<span>Share</span>
<ul class="social-networks">
<li><a href="https://facebook.com/sharer.php?u={{page.url | absolute_url}}" rel="nofollow" target="_blank"><svg width="16" height="16"><use href={{"/assets/images/social-icons.svg#facebook" | absolute_url}}></use></svg></a></li>
<li><a href="http://twitter.com/share?url={{page.url | absolute_url | escape}}&text={{post.content | strip_html | strip | truncate: 130}}&via={{site.twitterHandle}}" rel="nofollow" target="_blank"><svg width="16" height="16"><use href={{"/assets/images/social-icons.svg#twitter" | absolute_url}}></use></svg></a></li>
</ul>
</div>
{% endif %}
</div>
{% if page.layout == 'post' and post.comments and site.showComments %}
<aside class="post-comments" role="complementary">
{% include components/comments.html %}
<aside>
{% endif %}
</article>

View File

@@ -1,8 +0,0 @@
<div class="site-search" role="search">
<div>
<label for="site-search-input" class="hidden">Search</label>
<input type="text" name="site-search" id="site-search-input" onInput="this.parentNode.dataset.value = this.value" placeholder="Type here to search..." />
</div>
<ul id="site-search-results-container"></ul>
</div>

View File

@@ -1,308 +0,0 @@
<style>
/* latin-ext */
@font-face {
font-family: 'Bebas Neue';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/bebasneue/v2/JTUSjIg69CK48gW7PXoo9Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Bebas Neue';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/bebasneue/v2/JTUSjIg69CK48gW7PXoo9Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizYRExUiTo99u79D0e0ysmIEDQ.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizYRExUiTo99u79D0e0w8mIEDQ.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizYRExUiTo99u79D0e0ycmIEDQ.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizYRExUiTo99u79D0e0x8mI.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizdRExUiTo99u79D0e8fOydIhUdwzM.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizdRExUiTo99u79D0e8fOydKxUdwzM.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizdRExUiTo99u79D0e8fOydIRUdwzM.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizdRExUiTo99u79D0e8fOydLxUd.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizaRExUiTo99u79D0-ExdGM.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizaRExUiTo99u79D0aExdGM.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizaRExUiTo99u79D0yExdGM.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizaRExUiTo99u79D0KExQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizfRExUiTo99u79B_mh0OOtLQ0Z.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizfRExUiTo99u79B_mh0OqtLQ0Z.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizfRExUiTo99u79B_mh0OCtLQ0Z.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptsans/v12/jizfRExUiTo99u79B_mh0O6tLQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRTQgYoZZY2vCFuvAFT_rC1chb-.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRTQgYoZZY2vCFuvAFT_rm1chb-.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRTQgYoZZY2vCFuvAFT_rO1chb-.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRTQgYoZZY2vCFuvAFT_r21cg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRQQgYoZZY2vCFuvAFT9gaQZyTfoPNB.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRQQgYoZZY2vCFuvAFT9gaQZy3foPNB.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRQQgYoZZY2vCFuvAFT9gaQZyffoPNB.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Serif';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRQQgYoZZY2vCFuvAFT9gaQZynfoA.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRVQgYoZZY2vCFuvAFbzr-tdg.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRVQgYoZZY2vCFuvAFSzr-tdg.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRVQgYoZZY2vCFuvAFYzr-tdg.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRVQgYoZZY2vCFuvAFWzr8.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRSQgYoZZY2vCFuvAnt66qfVyvHpA.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRSQgYoZZY2vCFuvAnt66qWVyvHpA.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRSQgYoZZY2vCFuvAnt66qcVyvHpA.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'PT Serif';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/ptserif/v12/EJRSQgYoZZY2vCFuvAnt66qSVys.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>

View File

@@ -1 +0,0 @@
<footer class="site-footer">{{site.title}} &copy; {{site.time | date: '%Y'}}. All rights reserved.</footer>

View File

@@ -1,9 +0,0 @@
<header class="site-header">
<a class="site-header-wrapper" href="{{'/' | absolute_url}}">
<span class="site-logo">
<img src={{"/assets/images/logo.svg" | absolute_url}} width="56" height="56" alt="Logo" />
</span>
<span class="site-subtitle">Est. {{site.time | date: '%Y'}}</span>
<span class="site-title">{{site.title}}</span>
</a>
</header>

View File

@@ -1,19 +0,0 @@
<nav class="site-navigation" role="navigation">
<a href="{{'/' | absolute_url}}" {% if page.url == "/" %}class="active"{% endif %}>Blog</a>
{% if site.pages %}
{% assign pages = site.pages | sort: 'order' %}
{% for p in pages | sort: 'title' %}
{% if p.layout == 'page' and p.showInMenu %}
<a href="{{p.url | absolute_url}}" {% if p.url == page.url %}class="active"{% endif %}>{{p.title}}</a>
{% elsif p.showInMenu and p.customPage %}
<a href="{{p.url | absolute_url}}" {% if p.url == page.url %}class="active"{% endif %}>{{p.title}}</a>
{% endif %}
{% endfor %}
{% endif %}
{% if site.useExternalContactForm %}
<span class="open-contact">Contact</a>
{% else %}
<a href="mailto:{{site.email}}">Contact</a>
{% endif %}
</nav>

View File

@@ -1,40 +0,0 @@
<meta property="og:url" content="{{page.url | absolute_url}}" />
{% if page.title %}
<meta property="og:type" content="article" />
{% else %}
<meta property="og:type" content="website" />
{% endif %}
{% if page.categories %}
{% for category in page.categories limit:1 %}
<meta property="article:section" content="{{category}}" />
{% endfor %}
{% endif %}
{% if page.tags %}
{% for tag in page.tags limit:1 %}
<meta property="article:tag" content="{{tag}}" />
{% endfor %}
{% endif %}
{% if page.title %}
<meta property="og:title" content="{{page.title | escape}}" />
{% else %}
<meta property="og:title" content="{{site.title | escape}}" />
{% endif %}
<meta property="og:site_name" content="{{site.title}}" />
<meta property="og:description" content="{% if page.description %}{{page.description | strip_html | strip | strip_newlines | truncate: 200}}{% else %}{{page.content | markdownify | strip_html | strip | strip_newlines | truncate: 200}}{% endif %}" />
<meta property="article:published_time" content="{{page.date | date_to_xmlschema}}" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="{{site.twitterHandle}}" />
<meta name="twitter:creator" content="{{site.twitterHandle}}" />
{% if page.title %}
<meta name="twitter:title" content="{{page.title | escape}}" />
{% else %}
<meta name="twitter:title" content="{{site.title | escape}}" />
{% endif %}
<meta name="twitter:url" content="{{page.url | absolute_url}}" />
<meta name="twitter:description" content="{% if page.description %}{{page.description | strip_html | strip | strip_newlines | truncate: 200}}{% else %}{{page.content | markdownify | strip_html | strip | strip_newlines | truncate: 200}}{% endif %}" />

View File

@@ -1,4 +0,0 @@
<input type="checkbox" class="toggleBurger" id="toggleBurger">
<label for="toggleBurger" class="toggleBurgerWrapper">
<span></span>
</label>

View File

@@ -1 +0,0 @@
<div class="header-content-separator"></div>

View File

@@ -1 +0,0 @@
<div class="reading-progress-bar"></div>

View File

@@ -1,8 +0,0 @@
<span class="post-reading-time">
{% assign words = post.content | number_of_words %}
{% if words < 360 %}
1 Min
{% else %}
{{words | divided_by:180}} Mins
{% endif %}
</span>

View File

@@ -1,3 +0,0 @@
<div class="changeTheme">
<div class="modeIcon"></div>
</div>

View File

@@ -1,39 +0,0 @@
<script src={{"/assets/js/simple-jekyll-search.min.js" | absolute_url}}></script>
<script src={{"/assets/js/theme-changer.js" | absolute_url}}></script>
{% if site.showCookieBanner %}
<script src={{"/assets/js/cookie-banner.js" | absolute_url}}></script>
{% endif %}
{% if page.layout == "project" %}
<script src={{"/assets/js/carousel.js" | absolute_url}}></script>
<script src={{"/assets/js/lightbox.js" | absolute_url}}></script>
{% endif %}
{% if site.useExternalContactForm %}
<script src={{"/assets/js/contact-form.js" | absolute_url}}></script>
{% endif %}
{% if page.layout == "post" %}
<script src={{"/assets/js/reading-progress-bar.js" | absolute_url}}></script>
{% endif %}
<script>
SimpleJekyllSearch({
searchInput: document.getElementById('site-search-input'),
resultsContainer: document.getElementById('site-search-results-container'),
json: '{{site.url}}/search.json',
searchResultTemplate: '<li><a href="{url}">{title}</a></li>',
noResultsText: '<div class="no-results">No results found.</div>',
})
</script>
{% if site.useAnalytics %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{site.googleAnalyticsTrackingCode}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{site.googleAnalyticsTrackingCode}}');
</script>
{% endif %}

View File

@@ -1,8 +0,0 @@
---
layout: default
---
<div class="page-not-found">
<svg width="150" height="200"><use href={{"/assets/images/other-icons.svg#gentleman" | absolute_url}}></use></svg>
<p>Oops! There is nothing here.</p>
</div>

View File

@@ -1,11 +0,0 @@
---
layout: default
---
<section class="post-list">
{% for post in paginator.posts %}
{% include components/post.html %}
{% endfor %}
</section>
{% include components/pagination.html %}

View File

@@ -1,11 +0,0 @@
---
layout: default
---
<h1 class="post-lists-title">Posts From Category: <span>{{page.category}}</span></h1>
<section class="post-list">
{% for post in site.categories[page.category] %}
{% include components/post.html %}
{% endfor %}
</section>

View File

@@ -1,72 +0,0 @@
<!doctype html>
<html lang="en" data-theme="light">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="{{page.author}}" />
<meta name="copyright" content="Copyright by {{site.title}}. All Rights Reserved." />
<meta name="description" content="{% if page.description %}{{ page.description | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
<meta name="description" property="og:description" content="{% if page.description %}{{ page.description | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}" />
<meta name="twitter:description" content="{% if page.description %}{{ page.description | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}" />
{% if page.description %}
<meta name="description" content="{{page.description | markdownify | strip_html | strip | strip_newlines | truncate: 200}}" />
{% else %}
<meta name="description" content="{{site.title}} &mdash; {{site.description}}" />
{% endif %}
{% feed_meta %}
{% include meta.html %}
<title>{% if page.title %}{{page.title | escape}} |{% endif %} {{site.title | escape}} {% if site.description %}&mdash; {{site.description | escape }} {% endif %}</title>
{% if site.showFavIcon %}
<link rel="icon" type="image/svg+xml" href={{"/assets/images/favicon.svg" | absolute_url}}>
{% endif %}
{% include fonts.html %}
<link rel="stylesheet" href={{"/assets/css/styles.css" | absolute_url}}>
</head>
<body>
{% if site.darkMode %}
{% include partials/themeChanger.html %}
{% endif %}
{% include partials/burgerMenu.html %}
{% include layout/header.html %}
{% include layout/navigation.html %}
{% if site.showSearch %}
{% include components/siteSearch.html %}
{% endif %}
{% include partials/headerSeparator.html %}
<main class="{% if page.layout == 'blog' or page.layout == 'post' or page.layout == 'category' or page.layout == 'tag' %}wrapper{% else %}wrapper long{% endif %}" role="main">
{{content}}
</main>
{% include layout/footer.html %}
{% if site.useExternalContactForm %}
{% include components/contactForm.html %}
{% endif %}
{% if page.layout == 'project' %}
{% include components/lightbox.html %}
{% endif %}
{% if site.showCookieBanner %}
{% include components/cookieBanner.html %}
{% endif %}
{% include scripts.html %}
</body>
</html>

View File

@@ -1,10 +0,0 @@
---
layout: default
---
<article class="page single" role="article">
<h2 class="page-title" role="heading">{{page.title}}</h2>
<div class="page-content">
{{content}}
</div>
</article>

View File

@@ -1,6 +0,0 @@
---
layout: default
---
{% include partials/readingProgressBar.html %}
{% include components/post.html %}

View File

@@ -1,48 +0,0 @@
---
layout: default
---
<section class="page-project">
<div class="project-gallery">
<div class="slides">
{% for picture in page.gallery %}
{% assign index = forloop.index0 %}
<div class="slide" id="slide_{{index}}">
<figure>
<a href="{{picture | absolute_url}}" ref="lightbox">
<img src="{{picture | absolute_url}}" alt="image_{{index}}" />
</a>
</figure>
</div>
{% endfor %}
</div>
<div class="gallery-nav">
{% for picture in page.gallery %}
{% assign index = forloop.index0 %}
<label for="#slide_{{index}}" onClick="moveToSlide(`{{index}}`, this)" class="{% if index == 0 %}active{% endif %}"></label>
{% endfor %}
</div>
</div>
<div class="project-overview">
<strong class="section-title">Overview</strong>
<h1 class="project-title">{{page.name}}</h1>
<div class="project-description">{{content}}</div>
</div>
<div class="project-meta">
<div>
<div>
<strong class="section-title">Date</strong>
<time>{{page.creationDate | date_to_string}}</time>
</div>
<div>
<strong class="section-title">Client</strong>
<span>{{page.client}}</span>
</div>
<div>
<strong class="section-title">Role</strong>
<span>{{page.role}}</span>
</div>
<a href="{{page.website}}" class="button" target="_blank">View Project</a>
</div>
</div>
</section>

View File

@@ -1,13 +0,0 @@
---
layout: default
---
<h1 class="post-lists-title">Posts With Tag: <span>{{page.tag}}</span></h1>
<section class="post-list">
{% for post in site.posts %}
{% if post.tags contains page.tag %}
{% include components/post.html %}
{% endif %}
{% endfor %}
</section>

View File

@@ -1,25 +0,0 @@
---
layout: default
title: About
order: 2
customPage: true
permalink: /about/
---
<section class="page-about">
<div class="profile">
<img src={{"/assets/images/henry.webp" | absolute_url}} width="250" height="300" alt="{{site.title}}" />
<ul>
<li><a href="{{site.facebook}}" rel="noreferrer" target="_blank"><svg width="16" height="16"><use href={{"/assets/images/social-icons.svg#facebook" | absolute_url}}></use></svg></a></li>
<li><a href="{{site.twitter}}" rel="noreferrer" target="_blank"><svg width="16" height="16"><use href={{"/assets/images/social-icons.svg#twitter" | absolute_url}}></use></svg></a></li>
<li><a href="{{site.instagram}}" rel="noreferrer" target="_blank"><svg width="16" height="16"><use href={{"/assets/images/social-icons.svg#instagram" | absolute_url}}></use></svg></a></li>
<li><a href="{{site.email}}" rel="noreferrer" target="_blank"><svg width="16" height="16"><use href={{"/assets/images/social-icons.svg#email" | absolute_url}}></use></svg></a></li>
</ul>
</div>
<h1>Hello, I'm {{site.title}}!</h1>
<p class="intro-paragraph">I'm a London-based front-end web developer with over ten years of experience. I design and build beautiful, responsive websites.</p>
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>The Old High German name is recorded from the 8th century, in the variants Haimirich, Haimerich, Heimerich, Hemirih. Harry, its English short form, was considered the "spoken form" of Henry in medieval England. Most English kings named Henry were called Harry. The name became so popular in England that the phrase "Tom, Dick, and Harry" began to be used to refer to men in general. The common English feminine forms of the name are Harriet and Henrietta.</p>
</section>

View File

@@ -1,20 +0,0 @@
---
layout: default
title: Work
order: 1
customPage: true
permalink: /work/
---
<section class="page-work">
<div class="projects-list">
{% assign sortedProjects = site.projects | sort: 'creationDate' | reverse %}
{% for project in sortedProjects %}
<div class="project">
<a class="project-cover" href="{{project.url | absolute_url}}"><img src="{{project.cover | absolute_url}}" alt="{{project.name}}" width="600" height="450" /></a>
<h2 class="project-title"><a href="{{project.url | absolute_url}}">{{project.name}}</a></h2>
<span class="project-category">{{project.category}}</span>
</div>
{% endfor %}
</ul>
</section>

View File

@@ -1,127 +0,0 @@
---
title: "Sample Data"
categories: docs
tags: jekyll demo documentation
---
<figure class="aligncenter">
<img src="http://joro.me/demo-assets/jekyll/henry/1917.webp" width="800" height="400" alt="1917" />
</figure>
Markdown (or Textile), Liquid, HTML & CSS go in. Static sites come out ready for deployment.
**Headings**
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
<!--more-->
**Blockquote**
> No more databases, comment moderation, or pesky updates to install—just your content.
**Unordered List**
* Jekyll
* Nested Jekyll
* Nested Ruby
* Ruby
* Markdown
* Liquid
**Ordered List**
1. Jekyll
1. Nested Jekyll
2. Nested Ruby
2. Ruby
3. Markdown
4. Liquid
**Link**
This is <a href="http://example.com/" title="Title">an example</a> inline link.
**Paragraph w/ strong, em, etc.**
These are just a few of the *available* **configuration** options. Many configuration options can <strike>either</strike> be specified as flags on the <abbr title="Command Line Tool">command line</abbr>, or alternatively (and more commonly) they can be specified in a _config.yml file at the root of the source directory. Jekyll will <a href="http://joro.me/" target="_blank">automatically use</a> the options from this file when run. For example, if you place the following lines in your _config.yml file.
**Image**
<figure class="aligncenter">
<img src="http://joro.me/demo-assets/jekyll/henry/dunkirk.webp" alt="Dunkirk" />
<figcaption>From the movie <a href="https://en.wikipedia.org/wiki/Dunkirk_(2017_film)" target="_blank">Dunkirk</a>.</figcaption>
</figure>
**Video**
<div class="iframe-wrapper">
<iframe width="560" height="315" src="https://www.youtube.com/embed/iWowJBRMtpc" frameborder="0" allowfullscreen></iframe>
</div>
**Default Code Tag**
I'm <code>code</code> block.
**Styled Code Block**
{% highlight ruby linenos %}
#!/usr/bin/ruby
$LOAD_PATH << '.'
require "support"
class Decade
include Week
no_of_yrs=10
def no_of_months
puts Week::FIRST_DAY
number=10*12
puts number
end
end
d1=Decade.new
puts Week::FIRST_DAY
Week.weeks_in_month
Week.weeks_in_year
d1.no_of_months
{% endhighlight %}
**Definition Lists**
<dl>
<dt>Definition Title</dt>
<dd>Definition Description</dd>
</dl>
**Paragraphs w/ Aligned Images**
The Jekyll gem makes a jekyll executable available to you in your Terminal window. You can use this command in a number of ways.
<figure class="alignleft">
<img width="250" src="http://joro.me/demo-assets/jekyll/henry/joker.webp" alt="Joker" />
<figcaption>From the movie <a href="https://en.wikipedia.org/wiki/Joker_(2019_film)" target="_blank">Joker</a>.</figcaption>
</figure>
This site aims to be a comprehensive guide to Jekyll. Well cover topics such as getting your site up and running, creating and managing your content, customizing the way your site works and looks, deploying to various environments, and give you some advice on participating in the future development of Jekyll itself.
Jekyll is a simple, blog-aware, static site generator. It takes a template directory containing raw text files in various formats, runs it through a converter (like Markdown) and our Liquid renderer, and spits out a complete, ready-to-publish static website suitable for serving with your favorite web server. Jekyll also happens to be the engine behind GitHub Pages, which means you can use Jekyll to host your projects page, blog, or website from GitHub's servers for free.
<figure class="alignright">
<img width="250" src="http://joro.me/demo-assets/jekyll/henry/fightclub.webp" alt="Fight Club" />
<figcaption>From the movie <a href="https://en.wikipedia.org/wiki/Fight_Club" target="_blank">Fight Club</a>.</figcaption>
</figure>
Throughout this guide there are a number of small-but-handy pieces of information that can make using Jekyll easier, more interesting, and less hazardous. Here's what to look out for.
If you come across anything along the way that we havent covered, or if you know of a tip you think others would find handy, please file an issue and well see about including it in this guide.
The front matter is where Jekyll starts to get really cool. Any file that contains a YAML front matter block will be processed by Jekyll as a special file. The front matter must be the first thing in the file and must take the form of valid YAML set between triple-dashed lines.

View File

@@ -1,188 +0,0 @@
---
author: guest
title: "How To Use"
categories: docs jekyll
tags: jekyll settings
---
<figure class="aligncenter">
<img src="http://joro.me/demo-assets/jekyll/henry/matrix.webp" width="800" height="300" alt="The Matrix" />
</figure>
### Configuration
All configuration options are in the <code>_config.yml</code> file. Let's take a look of the important ones.
#### General
* **title**: Site name.
* **description**: Site description.
#### Paths
These options are pretty important, so take a closer look. If you experience any problems with your paths you should check here.
* **url**: A lot of people have problems when they try to setup their paths. That's why I've decided to keep things as simple as possible. So, usually you'll have to paste here your domain <code>https://mysite.com</code> and then in the baseurl you paste your subdomain (if there is one). The theme is configured to use absolute paths, so you'll have to paste the whole path here — domain + subdomain. For example, if your website is in the root folder, write down <code>https://mysite.com</code>, if there is a subfolder — <code>https://mysite.com/subfolder</code>. In this case you don't need the baseurl anymore.
* **baseurl**: No longer needed due theme configuration. I left it just in case.
#### Options
* **darkMode**: Enable/disable dark theme for the theme. If enabled you'll see an icon in the upper right corner.
* **showTags**: Enable/disable visibility of post's tags.
* **showCategories**: Enable/disable visibility of post's categories.
* **showSearch**: Enable/disable visibility of global site search.
* **showSharePost**: Enable/disable visibility of post's share options.
* **showFavIcon**: Enable/disable visibility of favicon.
* **showComments**: Enable/disable visibility of post's comments.
* **showCookieBanner**: Enable/disable visibility of the cookie banner. This theme supports Google Analytics (GA), so there have to be some kind of user notification. If you don't use GA or other tracking service, you should disable it. Keep in mind that the banner is pretty basic, so in some cases you may need to customize it or entirely replace it with another third-party cookie service.
* **useExternalContactForm**: Enable/disable usage of [Formspree](https://formspree.io/){:target="_blank"} as default contact form. If this option is disabled, when you click **Contact** link in the main menu you'll be redirected directly to your default mail client. If enabled, a modal box will pop up and you'll be introduced to a more user-friendly contact form.
* **useAnalytics**: Enable/disable usage of Google Analytics.
#### Third Party / Social
* **facebook**: Link to your facebook page.
* **twitter**: Link to your twitter page.
* **instagram**: Link to your instagram page.
* **email**: Your email address.
* **formspree**: Link to your [Formspree](https://formspree.io/){:target="_blank"} form. If you use Formspree, generate form ID and paste it here. Works only if you activated <code>useExternalContactForm</code> option in the previos section.
* **googleAnalyticsTrackingCode**: Add your Google Analytics Tracking ID. Example ID: *UA-XXXXXXX-2*.
* **disqusID**: Add your website shortname from Disqus. Keep in mind that by default Disqus comments are not configured. If you use this make sure <code>showComments</code> option is set to **true**.
* **twitterHandle**: Add your Twitter handle.
<!--more-->
#### Permalinks
There is a default structure of your links. If you want a different one, please check [Jekyll documentation](https://jekyllrb.com/docs/permalinks/){:target="_blank"}.
#### Pagination
* **paginate**: Number of posts per page.
* **paginate_path**: The default path is <code>/blog/page:num/</code>, so for example if you go to the second page you'll see something like this <code>http://mysite.com/blog/page2/</code>.
**Important Note:** Due to theme's compatibility with GitHub Pages, pagination is only supported on the default posts/blog page — **Blog**. When you list categories or tags, there is no pagination.
#### Includes
* **include**: Force the inclusion of the <code>pages</code> directory.
#### Post Separator
* **excerpt_separator**: By default when you're writing a post, you should add <code>&lt;!--more--&gt;</code> to define the end of the excerpt. If you remove this option your excerpt will show with the default settings and you'll not have control over the content. If you want to keep the custom separator (I strongly suggest) you can leave it as is or change the <code>&lt;!--more--&gt;</code> tag as well.
#### Assets Settings
* **sass_dir**: Choose the path to your SCSS files.
* **style**: Choose the compression method for the final CSS file.
If you need extra help, just check out the [official Jekyll documentation](https://jekyllrb.com/docs/home/){:target="_blank"}.
### How To Add a Post
All you need to do is to add a file to your <code>_posts</code> directory with the following format: <code>YEAR-MONTH-DAY-title.MARKUP</code>. Where YEAR is a four-digit number, MONTH and DAY are both two-digit numbers, and MARKUP is the file extension representing the format used in the file. You can overwrite these in the post's front matter. Take for example the current file. The title is different from the one in the filename.
In the beginning of the every post you have a so called [front matter](https://jekyllrb.com/docs/frontmatter/){:target="_blank"} block which contains some data about the post. Here is the short description of the options.
* **layout**: Post's layout. This setting is configured by default. Use only if you want a custom post layout.
* **author**: Post's author. You can see all authors in the <code>authors.yml</code> file in the <code>_data</code> folder.
* **title**: Post's title. Overwrites the one from the filename.
* **date**: Post's date. Overwrites the one from the filename.
* **categories**: This post can be included under one or many categories. List them here. Keep in mind that you have to create a file for every new category. Check out the guide for creating a new category below.
* **tags**: List the specific post tags. Keep in mind that you have to create a file for every new tag. Check out the guide for creating a new category below.
* **description**: Meta description used for better SEO.
* **comments**: By default they are always <code>true</code>, but if you want to turn them off for a specific post just set this to <code>false</code>.
You can add more or different data in the front matter by yourself. You'll just have to learn how to display it :).
### How To Add a Page
Adding page is even simpler than adding post. Go go <code>_pages</code> folder and add a file with the following format: <code>page-title.FORMAT</code>. FORMAT is the file extension and it can be <code>.md</code>, <code>.markdown</code> or <code>.html</code>. Pages are also using front matter to add information to your page. Just like posts, pages have default front matter.
* **layout**: The page's layout. Unlike posts, setting the layout for the page is required.
* **title**: Page's title.
* **permalink**: This is important. If you do not enter the permalink, your URL will be something like this <code>http://example.com/_pages/about</code>. Enter the permalink and get rid of <code>/_pages/</code> part. Do not forget the trailing slash!
* **showInMenu**: By default every page is shown in the main menu. Set it to <code>false</code> if you don't want it to be visible there.
There are two "special" or in other words hardcoded pages that are custom for this theme - **About Page** and **Work Page**. They have some additional front matter that I'd like to share with you.
Special pages do not use <code>page</code> layout so they'll need another property to show up in the main menu.
* **customPage**: If you want a special page to be visible in the menu you'll have to keep this option set to <code>true</code> along with <code>showInMenu</code>. If false or removed the page will not be visible.
* **order**: Custom pages can be ordered. Just place a number here.
### How To Add a New Project
Go to the <code>_projects</code> folder and create a new file. There is a little bit of front matter that you'll have to fill:
{% highlight ruby linenos %}
---
name: App
category: App Design
creationDate: 2021-02-01
client: Tesla
role: App Deisgner
website: https://project.website.com
cover: http://path.to.cover.image.jpg
gallery:
- http://path.to.image1.jpg
- http://path.to.image2.jpg
---
{% endhighlight %}
I think all of the properties are self-explanatory. Keep in mind that demo projects are using <code>webp</code> format for the images and they are hosted on my server to keep the size of the theme as low as possible. If you keep your images in the <code>images</code> folder (as you should be) the path is <code>/assets/images/image.FORMAT</code>.
### How To Add a New Category
I wanted to keep this theme as light and clean as possible, so the use of external plugins was not an option. Besides, I also wanted to be GitHub Pages compatible.
Adding a category is pretty simple, but some empty file creation is needed. Categories and tags are collections (just like projects) and every collection item require a dedicated file. Here are the steps of new category creation.
1. Go to <code>_category</code> folder and create new file. For example: <code>documentation.html</code>.
2. Open that file and add <code>category</code> property in the front matter. *Note: Filename and category must be exactly the same.*
{% highlight ruby linenos %}
---
category: documentation
---
{% endhighlight %}
{:start="3"}
3. *Optional*: Go to a post and add category name to the list.
### How To Add a New Tag
I wanted to keep this theme as light and clean as possible, so the use of external plugins was not an option. Besides, I also wanted to be GitHub Pages compatible.
Adding a tag is pretty simple, but some file creation is needed. Categories and tags are collections (just like projects) and every collection item require a dedicated file. Here are the steps of new tag creation.
1. Go to <code>_tag</code> folder and create new file. For example: <code>jekyll.html</code>.
2. Open that file and add <code>tag</code> property in the front matter. *Note: Filename and tag must be exactly the same.*
{% highlight ruby linenos %}
---
tag: jekyll
---
{% endhighlight %}
{:start="3"}
3. *Optional*: Go to a post and add tag name to the list.
### How To Add a New Author
1. Go to <code>_data</code> folder and open <code>authors.yml</code> file. Take a look at the examples and add another author.
2. Then go to a specific post and add author's name in the front matter.
{% highlight ruby linenos %}
henry:
name: Henry Dawson
title: Ordinary Gentleman
avatar: /assets/images/user1.webp
{% endhighlight %}
Take a look at the example above. <code>henry</code> is the name that you put in the post's front matter and the <code>name</code> is just a display name that is used thereafter.
### Enable & Configure Disqus Comments
To enable and configure comments you must do the following:
1. Go to <code>_config.yml</code> and under **Options** enable <code>showComments</code>.
2. Go to <code>_includes/components/comments.html</code> file and edit your <code>PAGE_URL</code> and <code>PAGE_IDENTIFIER</code> variables. [Read about Disqus](https://disqus.com/admin/install/platforms/universalcode){:target="_blank"}.
### Formspree (Contact Form)
Go to [Formspree](https://formspree.io/){:target="_blank"} and register. Create a new project and then a form. Paste form's endpoint to the <code>_config.yml</code> file, section **Third Party / Social**. Voilà!
### Site Search
This theme use a third-party search library that is completely JavaScript. In the root folder you'll find the <code>search.json</code> file which is basically the search result's config. If you go to <code>_includes/scripts.html</code> you can also configure the library itself. You can change the settings but make sure you know what you are doing.
### GitHub Pages
Here is the one of many ways to upload the theme to GitHub Pages.
1. Go to [GitHub](https://github.com/){:target="_blank"} and create a new repository. It can be private or public for now, just don't forget to make it public when you finish editing.
2. Clone your repo and create a new branch called <code>gh-pages</code>.
3. Go to your Henry theme and open <code>_config.yml</code> file. After <code>url</code> in the **Paths** section write down your full URL. Example: <code>https://githubusername.github.io/repositoryname</code>. Build using <code>bundle exec jekyll build</code>.
4. Copy the contents of <code>_site</code> folder to the newly created GitHub Pages repo.
5. Then define user by executing two commands: <code>git config user.email "Your Email"</code> and <code>git config user.name "Your Name"</code>.
6. Use <code>git add .</code> to stage all files, then type <code>git commit -m "Initial commit"</code> to make your first commit and that followed by <code>git push -u origin gh-pages</code> to push the changes.
7. Open <code>https://githubusername.github.io/repositoryname</code> (remember, you'll have to make it public). If you want to push new changes to the website, repeat step 6 and in the end just use <code>git push</code>.
That's it! Do not hesitate to ask if you have any questions. Happy blogging!

View File

@@ -1,19 +0,0 @@
---
author: henry
title: "How To Install"
categories: docs
tags: jekyll ruby bundler documentation
---
<figure class="aligncenter">
<img src="http://joro.me/demo-assets/jekyll/henry/arrival.webp" width="800" height="300" alt="Arrival" />
</figure>
I assume that you have already downloaded and installed Ruby. Here's what you need to do next:
1. Run <code>gem install jekyll bundler</code>.
2. Extract the theme to a desired folder.
3. Go into that folder by executing <code>cd name-of-the-folder</code>.
4. Run <code>bundle install</code>.
5. If you want to access and customize the theme, use <code>bundle exec jekyll serve</code>. This way it will be accessible on <code>http://localhost:4000/</code> or <code>http://127.0.0.1:4000/</code>. Also, after every change you make the theme will rebuild itself automatically.
6. Run <code>bundle exec jekyll build</code> and upload the content of the compiled <code>_site</code> folder on your host server.

View File

@@ -1,14 +0,0 @@
---
name: App
category: App Design
creationDate: 2021-02-01
client: Tesla
role: App Deisgner
website: https://dribbble.com/UpNow_Studio
cover: http://joro.me/demo-assets/jekyll/henry/project6-main.webp
gallery:
- http://joro.me/demo-assets/jekyll/henry/project6-lb1.webp
- http://joro.me/demo-assets/jekyll/henry/project6-lb2.webp
---
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>Images from <a href="https://dribbble.com/UpNow_Studio">Upnow Studio</a>.</p>

View File

@@ -1,14 +0,0 @@
---
name: Customer Logo
category: Logo Design
creationDate: 2021-02-13
client: Forbes
role: Deisgner
website: https://dribbble.com/christinescarcelli
cover: http://joro.me/demo-assets/jekyll/henry/project3-main.webp
gallery:
- http://joro.me/demo-assets/jekyll/henry/project3-lb1.webp
- http://joro.me/demo-assets/jekyll/henry/project3-lb2.webp
---
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>Images from <a href="https://dribbble.com/christinescarcelli">Christine Scarcelli</a>.</p>

View File

@@ -1,15 +0,0 @@
---
name: Dashboard
category: UI/UX
creationDate: 2021-02-20
client: Amazon
role: Web Developer
website: https://dribbble.com/RikoSapto
cover: http://joro.me/demo-assets/jekyll/henry/project1-main.webp
gallery:
- http://joro.me/demo-assets/jekyll/henry/project1-lb1.webp
- http://joro.me/demo-assets/jekyll/henry/project1-lb2.webp
---
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>Images from <a href="https://dribbble.com/RikoSapto">Riko Sapto Dimo</a>.</p>

View File

@@ -1,14 +0,0 @@
---
name: Illustration
category: Vector Graphics
creationDate: 2021-02-08
client: FitBit
role: Deisgner
website: https://dribbble.com/mspasova
cover: http://joro.me/demo-assets/jekyll/henry/project4-main.webp
gallery:
- http://joro.me/demo-assets/jekyll/henry/project4-lb1.webp
- http://joro.me/demo-assets/jekyll/henry/project4-lb2.webp
---
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>Images from <a href="https://dribbble.com/mspasova">Mila Spasova</a>.</p>

View File

@@ -1,14 +0,0 @@
---
name: Product Page
category: Web Design
creationDate: 2021-02-16
client: Nike
role: Front-End Developer
website: https://dribbble.com/OrangePeelStudiosUK
cover: http://joro.me/demo-assets/jekyll/henry/project2-main.webp
gallery:
- http://joro.me/demo-assets/jekyll/henry/project2-lb1.webp
- http://joro.me/demo-assets/jekyll/henry/project2-lb2.webp
---
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>Images from <a href="https://dribbble.com/OrangePeelStudiosUK">OrangePeelStudios</a>.</p>

View File

@@ -1,14 +0,0 @@
---
name: Website
category: Web Design
creationDate: 2021-02-03
client: Time Magazine
role: Web Deisgner
website: https://dribbble.com/sauqidesign
cover: http://joro.me/demo-assets/jekyll/henry/project5-main.webp
gallery:
- http://joro.me/demo-assets/jekyll/henry/project5-lb1.webp
- http://joro.me/demo-assets/jekyll/henry/project5-lb2.webp
---
<p>Henry is an English male given name and surname derived from Old French Henri/Henry, itself derived from the Middle High German name Heinrich, from Old High German Haimirich (from haim- "home" and rich "ruler"), which was conflated with the name Haginrich (from hagin "enclosure" and rich "ruler").</p>
<p>Images from <a href="https://dribbble.com/sauqidesign">Sauqi Arif</a>.</p>

View File

@@ -1,24 +0,0 @@
@keyframes headerShine {
100% { left: 150%; }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@keyframes zoomIn {
from { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
to { opacity: 1; }
}
@keyframes zoomOut {
from { opacity: 1; }
50% { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
to { opacity: 0; }
}

View File

@@ -1 +0,0 @@
.hidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }

View File

@@ -1,95 +0,0 @@
@mixin transition($transitions...) {
transition: $transitions;
-moz-transition: $transitions;
-webkit-transition: $transitions;
-o-transition: $transitions;
}
@mixin no-select {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@mixin placeholder {
&.placeholder { @content }
&:-ms-input-placeholder { @content }
&:-moz-placeholder { @content }
&::-moz-placeholder { @content }
&::-webkit-input-placeholder { @content }
}
@mixin translate($val1, $val2) {
-webkit-transform: translate(#{$val1}, #{$val2});
-moz-transform: translate(#{$val1}, #{$val2});
-ms-transform: translate(#{$val1}, #{$val2});
-o-transform: translate(#{$val1}, #{$val2});
transform: translate(#{$val1}, #{$val2});
}
@mixin skew($x, $y) {
-webkit-transform: skew(#{$x}, #{$y});
-moz-transform: skew(#{$x}, #{$y});
-ms-transform: skew(#{$x}, #{$y});
-o-transform: skew(#{$x}, #{$y});
transform: skew(#{$x}, #{$y});
}
@mixin scale($val) {
-webkit-transform: scale(#{$val});
-moz-transform: scale(#{$val});
-ms-transform: scale(#{$val});
-o-transform: scale(#{$val});
transform: scale(#{$val});
}
@mixin rotate($deg) {
-webkit-transform: rotate(#{$deg});
-moz-transform: rotate(#{$deg});
-ms-transform: rotate(#{$deg});
-o-transform: rotate(#{$deg});
transform: rotate(#{$deg});
}
@mixin flexbox() {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
@mixin inline-flex() {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -moz-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
}
@mixin flex($grow: 1, $shrink: 1, $basis: auto) {
-webkit-flex: $grow $shrink $basis;
-moz-flex: $grow $shrink $basis;
-ms-flex: $grow $shrink $basis;
flex: $grow $shrink $basis;
}
@mixin flex-flow($values: (row wrap)) {
-webkit-flex-flow: $values;
-moz-flex-flow: $values;
-ms-flex-flow: $values;
flex-flow: $values;
}
@mixin justify-content($pos: center) {
-webkit-justify-content: $pos;
justify-content: $pos;
}
@mixin align-items($align: center) {
-webkit-align-items: $align;
align-items: $align;
}

View File

@@ -1,7 +0,0 @@
* { box-sizing: border-box; -moz-box-sizing: border-box; }
body { margin: 0; padding: 0; font-family: 'PT Serif', serif; font-size: 18px; line-height: 30px; color: var(--grey-555); background: var(--body-bg); }
header, nav, section, main, article, aside, figure, footer, iframe, object, svg { display: block; margin: 0; }
@media screen and (max-width: 800px) {
body { padding: 80px 0 0; }
}

View File

@@ -1,62 +0,0 @@
.highlight { background: var(--grey-fa); border: 1px solid var(--grey-ccc); padding: 30px;
.lineno { padding: 0 15px 0 0; }
.c { color: #998; font-style: italic } // Comment
.err { color: #a61717; background-color: #e3d2d2 } // Error
.k { font-weight: bold } // Keyword
.o { font-weight: bold } // Operator
.cm { color: #998; font-style: italic } // Comment.Multiline
.cp { color: #999; font-weight: bold } // Comment.Preproc
.c1 { color: #998; font-style: italic } // Comment.Single
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
.gd { color: #000; background-color: #fdd } // Generic.Deleted
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
.ge { font-style: italic } // Generic.Emph
.gr { color: #a00 } // Generic.Error
.gh { color: #999 } // Generic.Heading
.gi { color: #000; background-color: #dfd } // Generic.Inserted
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
.go { color: #888 } // Generic.Output
.gp { color: #555 } // Generic.Prompt
.gs { font-weight: bold } // Generic.Strong
.gu { color: #aaa } // Generic.Subheading
.gt { color: #a00 } // Generic.Traceback
.kc { font-weight: bold } // Keyword.Constant
.kd { font-weight: bold } // Keyword.Declaration
.kp { font-weight: bold } // Keyword.Pseudo
.kr { font-weight: bold } // Keyword.Reserved
.kt { color: #458; font-weight: bold } // Keyword.Type
.m { color: #099 } // Literal.Number
.s { color: #d14 } // Literal.String
.na { color: #008080 } // Name.Attribute
.nb { color: #0086B3 } // Name.Builtin
.nc { color: #458; font-weight: bold } // Name.Class
.no { color: #008080 } // Name.Constant
.ni { color: #800080 } // Name.Entity
.ne { color: #900; font-weight: bold } // Name.Exception
.nf { color: #900; font-weight: bold } // Name.Function
.nn { color: #555 } // Name.Namespace
.nt { color: #000080 } // Name.Tag
.nv { color: #008080 } // Name.Variable
.ow { font-weight: bold } // Operator.Word
.w { color: #bbb } // Text.Whitespace
.mf { color: #099 } // Literal.Number.Float
.mh { color: #099 } // Literal.Number.Hex
.mi { color: #099 } // Literal.Number.Integer
.mo { color: #099 } // Literal.Number.Oct
.sb { color: #d14 } // Literal.String.Backtick
.sc { color: #d14 } // Literal.String.Char
.sd { color: #d14 } // Literal.String.Doc
.s2 { color: #d14 } // Literal.String.Double
.se { color: #d14 } // Literal.String.Escape
.sh { color: #d14 } // Literal.String.Heredoc
.si { color: #d14 } // Literal.String.Interpol
.sx { color: #d14 } // Literal.String.Other
.sr { color: #009926 } // Literal.String.Regex
.s1 { color: #d14 } // Literal.String.Single
.ss { color: #990073 } // Literal.String.Symbol
.bp { color: #999 } // Name.Builtin.Pseudo
.vc { color: #008080 } // Name.Variable.Class
.vg { color: #008080 } // Name.Variable.Global
.vi { color: #008080 } // Name.Variable.Instance
.il { color: #099 } // Literal.Number.Integer.Long
}

View File

@@ -1,41 +0,0 @@
:root, [data-theme="light"] {
--body-bg: #fafafa;
--main-color: #639f93;
--main-color-hover: #5b9287;
--form-success-bg: #d0f1cc;
--form-success-text: #597755;
--form-error-bg: #f1cccc;
--form-error-text: #775555;
--grey-222: #222;
--grey-555: #555;
--grey-aaa: #aaa;
--grey-ccc: #ccc;
--grey-ddd: #ddd;
--grey-eee: #eee;
--grey-fc: #fcfcfc;
--grey-fa: #fafafa;
}
[data-theme="dark"] {
--body-bg: #050505;
--main-color: #639f93;
--main-color-hover: #5b9287;
--form-success-bg: #d0f1cc;
--form-success-text: #597755;
--form-error-bg: #f1cccc;
--form-error-text: #775555;
--grey-222: #ddd;
--grey-555: #ddd;
--grey-aaa: #777;
--grey-ccc: #666;
--grey-ddd: #666;
--grey-eee: #222;
--grey-fc: #fcfcfc;
--grey-fa: #151515;
}

View File

@@ -1,29 +0,0 @@
.modal-container { @include flexbox(); @include align-items(); @include justify-content(); position: fixed; width: 100%; height: 100%; bottom: 0; right: 0; background: rgba(0,0,0,.7); opacity: 0; pointer-events: none; z-index: 9999;
.modal { @include flexbox(); @include flex-flow(column wrap); width: 100%; max-width: 450px; margin: 0 20px; background: var(--grey-fa); border-radius: 5px;
&.zoomIn { animation-name: zoomIn; animation-duration: .4s; animation-fill-mode: both; }
&.zoomOut { animation-name: zoomOut; animation-duration: .4s; animation-fill-mode: both; }
.modal-header { @include flexbox(); @include align-items(); @include justify-content(space-between); background: var(--main-color); padding: 18px 20px; border-radius: 5px 5px 0 0; font-family: 'PT Sans', sans-serif; font-size: 20px; font-weight: 700; color: var(--grey-fc);
svg { width: 16px; height: 16px; @include transition(all .1s ease); fill: currentColor; opacity: .5; cursor: pointer; @include transition(opacity .15s ease);
&:hover { opacity: 1; }
}
}
.modal-body { padding: 20px;
.form-message { display: none; margin-top: 0; text-align: center; padding: 10px 15px;
&.success { display: block; background: var(--form-success-bg); color: var(--form-success-text); }
&.error { display: block; background: var(--form-error-bg); color: var(--form-error-text); }
}
form { @include flexbox(); @include align-items(); @include flex-flow(column wrap); gap: 10px;
label { display: block; width: 100%; }
.input, .textarea { width: 100%; height: 40px; padding: 10px; background: transparent; border: 1px solid var(--grey-ddd); border-radius: 5px; font-family: 'PT Sans', sans-serif; font-size: 16px; color: var(--grey-555); @include placeholder() { color: var(--grey-ccc); font-family: 'PT Sans', serif; font-size: 16px; } outline: none; }
.textarea { height: auto; min-height: 200px; }
.button { display: inline-block; background: var(--main-color); padding: 14px 30px; text-transform: uppercase; color: var(--grey-fc); border-radius: 5px; font-family: 'PT Sans', sans-serif; font-size: 14px; font-weight: 700; border: none; cursor: pointer; @include transition(background .1s ease);
&:hover { background: var(--main-color-hover); }
&:active, &:focus { outline: none; }
}
}
}
}
&.fadeIn { pointer-events: auto; animation-name: fadeIn; animation-duration: .4s; animation-fill-mode: both; }
&.fadeOut { animation-name: fadeOut; animation-duration: .4s; animation-fill-mode: both; }
}

View File

@@ -1,19 +0,0 @@
.cookie-banner { display: none; position: fixed; width: 100%; max-width: 1200px; left: 50%; bottom: 15px; padding: 20px 30px; @include translate(-50%, 0); @include align-items(); @include justify-content(space-between); background: var(--grey-fa); box-shadow: 0 0 100px rgba(0, 0, 0, .2); border-radius: 10px;
&.active { @include flexbox(); }
div { @include flexbox(); @include align-items();
svg { fill: currentColor; color: var(--grey-666); @include flex(1, 0, auto); }
p { max-width: 980px; padding: 0 30px; }
}
.button { display: inline-block; background: var(--main-color); padding: 10px 30px; text-transform: uppercase; color: var(--grey-fc); border-radius: 5px; font-family: 'PT Sans', sans-serif; font-size: 14px; font-weight: 700; border: none; cursor: pointer; @include transition(background .1s ease); text-decoration: none; text-align: center;
&:hover { background: var(--main-color-hover); }
&:active, &:focus { outline: none; }
}
}
@media screen and (max-width: 640px) {
.cookie-banner { @include flex-flow(column nowrap); }
}
@media screen and (max-width: 468px) {
.cookie-banner div { @include flex-flow(column nowrap); }
}

View File

@@ -1,25 +0,0 @@
.custom-lightbox { position: fixed; visibility: hidden; opacity: 0; @include transition(opacity .2s ease); @include flexbox(); top: 0; left: 0; bottom: 0; right: 0; background: rgba(0,0,0, .7); z-index: 9000;
&.active { visibility: visible; opacity: 1; }
.lightbox-content { position: relative; display: grid; grid-template-columns: 1fr 8fr 1fr; gap: 40px; @include align-items(); justify-items: center; width: 100%; @include no-select(); }
.prev-image, .next-image, .lightbox-close { cursor: pointer; opacity: .5; @include transition(opacity .1s ease); color: var(--grey-fa);
&:hover { opacity: .9; }
svg { width: 32px; height: 32px; fill: currentColor; }
}
.prev-image svg { @include rotate(180deg); }
.current-image {
img { width: 100%; max-width: 100%; height: auto; }
}
.lightbox-close { position: fixed; top: 30px; right: 30px; width: 24px; height: 24px; padding: 0; background: none; border: 0; outline: none; }
}
@media screen and (max-width: 960px) {
.custom-lightbox .lightbox-content { grid-template-columns: 1fr;
.prev-image, .next-image { position: absolute; opacity: .8;
svg { width: 40px; height: 40px; }
}
.prev-image { left: 20px; }
.next-image { right: 20px; }
}
}

View File

@@ -1,55 +0,0 @@
.page {
.page-title { margin: 0 0 25px; font-family: 'PT Sans', sans-serif; font-size: 32px; line-height: 42px; font-weight: 700; color: var(--grey-222); }
.page-content {
abbr { border-bottom: 1px dotted var(--grey-555); text-decoration: none; cursor: help; }
code, kbd, pre { margin: 0; font-family: monospace; word-wrap: break-word; word-break: break-word; white-space: pre-wrap; }
address, cite, var { font-style: italic; }
blockquote { margin: 40px 0; padding: 0 0 0 20px; border-left: 3px solid var(--grey-555); color: var(--grey-222); font-weight: 700; }
em, strong { color: var(--grey-222); }
h1, h2, h3, h4, h5, h6 { font-family: 'PT Sans', sans-serif; margin: 40px 0 25px 0; color: var(--grey-222); }
h4, h5, h6 { margin: 25px 0; }
h1 { font-size: 28px; }
h2 { font-size: 26px; }
h3 { font-size: 22px; }
h4 { font-size: 20px; }
h5 { font-size: 18px; }
h6 { font-size: 16px; }
a { color: var(--main-color);
&:hover { text-decoration: none; }
}
img { display: block; max-width: 100%; height: auto; }
ul { list-style-type: disc; list-style-position: inside; }
ul, ol { margin: 15px 0; padding: 0 0 0 20px;
ul, ol { padding: 0 0 0 20px; }
li { margin: 5px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
}
dl { margin: 40px 0;
dt { margin: 10px 0 0; font-weight: 700; }
dd { margin: 5px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
}
p { margin: 15px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
.alignleft { float: left; margin: 20px 30px 10px 0; }
.alignright { float: right; margin: 20px 0 10px 20px; }
.aligncenter { clear: both; margin: 0 auto 20px; }
figcaption { font-size: 13px; font-style: italic; padding-top: 10px; }
.iframe-wrapper { position: relative; padding-top: 56.25%;
& > iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
}
}
}

View File

@@ -1,6 +0,0 @@
.pagination { display: grid; grid-template-columns: 100px 1fr 100px; margin: 50px 0 0; font-size: 16px;
.previous, .next { text-decoration: none; color: var(--grey-555);
&:hover { text-decoration: underline; }
}
.page_number { text-align: center; color: var(--grey-ccc); }
}

View File

@@ -1,135 +0,0 @@
.post-lists-title { font-family: 'PT Sans', sans-serif; font-size: 24px; line-height: 42px; font-weight: 700; color: var(--grey-aaa); margin: 0 0 40px; text-align: center;
span { color: var(--grey-222); }
}
.post-list { display: grid; gap: 100px 0; }
.post { position: relative;
.post-title { margin: 0 0 25px; font-family: 'PT Sans', sans-serif; font-size: 32px; line-height: 42px; font-weight: 700; color: var(--grey-222);
a { color: var(--grey-222); text-decoration: none;
&:hover { text-decoration: underline; }
}
}
.post-author { position: absolute; top: 10px; left: -200px; width: 150px; text-align: right;
.author-avatar { display: inline-block; width: 50px; height: 50px; border-radius: 50%; fill: currentColor; color: var(--grey-ddd); }
.author-info {
.author-name { display: block; margin: 10px 0 4px; font-family: 'PT Sans', sans-serif; font-size: 16px; line-height: 20px; font-weight: 700; color: var(--grey-222); text-transform: uppercase; }
.author-title { display: block; font-size: 12px; line-height: 16px; font-style: italic; color: var(--grey-aaa); }
}
.post-meta { position: relative; margin: 15px 0 0; padding: 15px 0 0; line-height: 20px; font-size: 14px; color: var(--grey-aaa);
&:before { position: absolute; top: 0; right: 0; width: 30px; height: 1px; background: var(--grey-ddd); content: ""; }
.post-date { position: relative; margin: 0 5px 0 0; padding: 0 10px 0 0;
&:after { position: absolute; top: 50%; right: 0; width: 3px; height: 3px; border-radius: 50%; background: var(--grey-ccc); content: ""; }
}
.post-categories { position: relative; @include flexbox(); @include justify-content(flex-end); gap: 5px; margin: 8px 0 0;
a { color: var(--main-color); text-decoration: none;
&:hover { text-decoration: underline; }
}
}
}
}
.post-content {
abbr { border-bottom: 1px dotted var(--grey-555); text-decoration: none; cursor: help; }
code, kbd, pre { margin: 0; font-family: monospace; word-wrap: break-word; word-break: break-word; white-space: pre-wrap; }
address, cite, var { font-style: italic; }
blockquote { margin: 40px 0; padding: 0 0 0 20px; border-left: 3px solid var(--grey-555); color: var(--grey-222); font-weight: 700; }
em, strong { color: var(--grey-222); }
h1, h2, h3, h4, h5, h6 { font-family: 'PT Sans', sans-serif; margin: 40px 0 25px 0; color: var(--grey-222); }
h4, h5, h6 { margin: 25px 0; }
h1 { font-size: 28px; }
h2 { font-size: 26px; }
h3 { font-size: 22px; }
h4 { font-size: 20px; }
h5 { font-size: 18px; }
h6 { font-size: 16px; }
a { color: var(--main-color);
&:hover { text-decoration: none; }
}
img { display: block; max-width: 100%; height: auto; }
ul { list-style-type: disc; list-style-position: inside; }
ul, ol { margin: 15px 0; padding: 0 0 0 20px;
ul, ol { padding: 0 0 0 20px; }
li { margin: 5px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
}
dl { margin: 40px 0;
dt { margin: 10px 0 0; font-weight: 700; }
dd { margin: 5px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
}
p { margin: 15px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
.alignleft { float: left; margin: 20px 30px 10px 0; }
.alignright { float: right; margin: 20px 0 10px 20px; }
.aligncenter { clear: both; margin: 0 auto 20px; }
figcaption { font-size: 13px; font-style: italic; padding-top: 10px; }
.iframe-wrapper { position: relative; padding-top: 56.25%;
& > iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
}
.read-more-button { font-size: 16px; color: var(--grey-555); }
}
.post-footer { @include flexbox(); @include justify-content(space-between); @include align-items(flex-start); gap: 0 20px; margin: 50px 0 0;
.post-tags { @include flexbox(); @include flex-flow(row wrap); @include flex(9, 1, auto); gap: 0 20px; list-style: none; margin: 0; padding: 0;
li {
a { font-size: 14px; font-family: 'PT Sans', sans-serif; color: var(--grey-ccc); text-decoration: none; @include transition(all .15s ease);
&:hover { color: var(--grey-555); }
}
}
}
.post-share { position: relative; @include flex(0, 0, auto); border: 1px solid var(--grey-ddd); overflow: hidden;
&:hover {
& > span { margin-left: -100%; }
& > ul { left: 0; }
}
span { display: block; width: 100%; padding: 0 15px; font-family: 'PT Sans', sans-serif; font-size: 12px; text-transform: uppercase; text-align: center; letter-spacing: .1em; color: var(--grey-aaa); cursor: pointer; @include transition(margin .2s ease); }
ul { position: absolute; top: 0; left: 100%; width: 100%; height: 100%; @include flexbox(); list-style: none; margin: 0; padding: 0; @include transition(left .2s ease);
li { @include flex(1, 0, auto); cursor: pointer;
&:last-child { border-left: 1px solid var(--grey-ddd); }
a { @include flexbox(); @include align-items(); @include justify-content(); height: 100%; color: var(--grey-ccc);
&:hover { background: var(--grey-eee); }
svg { fill: currentColor; }
}
}
}
}
}
.post-comments { position: relative; margin: 40px 0 0; padding: 20px 0 0; border-top: 1px solid var(--grey-ddd); }
}
@media screen and (max-width: 960px) {
.post {
.post-title { margin: 0 0 15px; }
.post-author { @include flexbox(); @include align-items(); @include flex-flow(row wrap); gap: 15px; position: static; width: 100%; margin: 0 0 20px; text-align: left;
.author-avatar { width: 36px; height: 36px; }
.author-info {
.author-name { margin: 0; color: var(--grey-555); text-transform: initial; }
.author-title { display: none; }
}
.post-meta { @include flexbox(); @include flex-flow(row wrap); margin: 0; margin-left: auto; padding: 0;
&:before { content: none; }
.post-categories { margin: 0 0 0 5px; padding: 0 0 0 10px;
&:before { position: absolute; top: 50%; left: 0; width: 3px; height: 3px; border-radius: 50%; background: var(--grey-ccc); content: ""; }
}
}
}
}
}

View File

@@ -1,19 +0,0 @@
.site-search { position: relative; @include flexbox(); @include align-items(); @include flex-flow(column wrap); max-width: 600px; margin: 30px auto 0; padding: 0 20px;
& > div { display: inline-grid; max-width: 400px;
&:after { content: attr(data-value); visibility: hidden; white-space: pre-wrap; height: 0; }
#site-search-input { max-width: 400px; height: 30px; font-family: 'PT Serif', serif; font-style: italic; color: var(--grey-222); font-size: 18px; background: transparent; border: none; outline: none; @include placeholder() { color: var(--grey-ccc); font-family: 'PT Serif', serif; font-style: italic; font-size: 18px; } }
}
#site-search-results-container { position: absolute; width: 90%; background: var(--grey-fa); top: 40px; margin: 0; padding: 0; list-style: none; box-shadow: 0 10px 200px rgba(0,0,0,.15); z-index: 1; border-radius: 5px;
&:empty { display: none; }
.no-results { padding: 10px 15px; text-align: center; }
li { border-top: 1px solid var(--grey-ddd);
&:first-of-type { border-top: none;
a { border-radius: 5px 5px 0 0; }
}
&:last-of-type a { border-radius: 0 0 5px 5px; }
a { display: block; padding: 10px 15px; text-decoration: none; color: var(--grey-555); background: transparent; @include transition(background .1s ease);
&:hover { background: var(--grey-eee); }
}
}
}
}

View File

@@ -1 +0,0 @@
.site-footer { max-width: 800px; margin: 0 auto; padding: 40px 20px; font-size: 14px; line-height: 22px; color: var(--grey-ccc); text-align: center; }

View File

@@ -1,3 +0,0 @@
.wrapper { max-width: 600px; margin: 0 auto; padding: 0 20px 35px; border-bottom: 1px solid var(--grey-eee);
&.long { max-width: 800px; }
}

View File

@@ -1,27 +0,0 @@
.site-header { display: grid; @include justify-content(); padding: 0 20px; text-align: center;
.site-header-wrapper { position: relative; overflow: hidden; background: var(--main-color); padding: 10px 25px 20px 25px; border-radius: 0 0 5px 5px; text-decoration: none; @include transition(background .2s ease);
&:before { position: absolute; top: 0; left: -150%; content: ""; width: 50%; height: 100%;
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .3) 100%);
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .3) 100%);
@include skew(-45deg, 0);
}
&:hover { background: var(--main-color-hover);
&:before { animation: headerShine .35s; }
}
.site-logo { display: block; margin: 0 0 10px;
img { display: block; }
}
.site-subtitle { display: block; font-family: 'Bebas Neue', sans-serif; font-size: 11px; line-height: 14px; color: var(--grey-fc); }
.site-title { display: block; font-family: 'Bebas Neue', sans-serif; font-size: 26px; line-height: 28px; color: var(--grey-fc); }
}
}
@media screen and (max-width: 800px) {
.site-header { position: fixed; left: 0; top: 0; width: 100%; z-index: 9; background: var(--body-bg); box-shadow: 0 2px 5px rgba(0, 0, 0, .1);
.site-header-wrapper { @include flexbox(); @include align-items(); @include justify-content(); @include flex-flow(row wrap); gap: 0 15px; border-radius: 0; padding: 20px; background: transparent;
&:hover { background: transparent; }
.site-logo, .site-subtitle { display: none; }
.site-title { font-size: 32px; line-height: 36px; color: var(--main-color); }
}
}
}

View File

@@ -1,14 +0,0 @@
.site-navigation { @include flexbox(); @include justify-content(); @include align-items(); @include flex-flow(row wrap); gap: 10px 40px; max-width: 800px; margin: 30px auto 0; padding: 0 20px; text-align: center;
a, span { position: relative; text-decoration: none; color: var(--grey-555); padding: 0 0 2px; @include transition(color .2s ease); cursor: pointer;
&:before { position: absolute; opacity: 0; left: 0; bottom: 0; width: 0%; border-bottom: 2px solid var(--grey-222); @include transition(width .18s ease, opacity .18s ease); content: ""; }
&:hover, &.active { color: var(--grey-222);
&:before { width: 100%; opacity: 1; }
}
}
}
@media screen and (max-width: 800px) {
.site-navigation { position: fixed; bottom: 0; left: 0; width: 100%; height: 100%; @include justify-content(flex-start); @include flex-flow(column nowrap); gap: 20px 0; @include translate(0, -100%); @include transition(transform .25s ease-in-out); padding: 100px 20px 0; background: rgba(255, 255, 255, .9); z-index: 10;
a, span { color: var(--grey-222); font-size: 30px; line-height: 40px; }
}
}

View File

@@ -1,32 +0,0 @@
@import 'base/vars';
@import 'base/mixins';
@import 'base/reset';
@import 'base/syntax';
@import 'base/animations';
@import 'base/helpers';
//Layout
@import 'layout/general';
@import 'layout/header';
@import 'layout/navigation';
@import 'layout/footer';
//Pages
@import 'pages/work';
@import 'pages/about';
@import 'pages/fourofour';
//Components
@import 'components/post';
@import 'components/page';
@import 'components/site-search';
@import 'components/pagination';
@import 'components/contact-form';
@import 'components/lightbox';
@import 'components/cookie-banner';
//Partials
@import 'partials/reading-progress-bar';
@import 'partials/theme-changer';
@import 'partials/header-separator';
@import 'partials/burger-menu';

View File

@@ -1,22 +0,0 @@
.page-about {
.profile { float: right; margin: 20px 20px 20px 50px;
img { display: block; max-width: 100%; height: auto; }
ul { @include flexbox(); @include flex-flow(row wrap); list-style: none; margin: 20px 0 0; padding: 0; border-right: 1px solid var(--grey-ddd); border-bottom: 1px solid var(--grey-ddd);
li { flex: 1;
a { @include flexbox(); @include align-items(); @include justify-content(); padding: 15px; border-left: 1px solid var(--grey-ddd); border-top: 1px solid var(--grey-ddd); @include transition(background .15s ease); color: var(--grey-aaa);
&:hover { background: var(--main-color);
svg { fill: var(--grey-fc); }
}
svg { fill: currentColor; }
}
}
}
}
h1 { font-size: 48px; line-height: 52px; color: var(--grey-222); margin: 0 0 30px; }
.intro-paragraph { font-size: 20px; line-height: 32px; color: var(--grey-222); }
}
@media screen and (max-width: 640px) {
.page-about .profile { @include flexbox(); @include align-items(); @include flex-flow(column nowrap); float: none; margin: 0 0 30px; }
}

View File

@@ -1,3 +0,0 @@
.page-not-found { text-align: center;
svg { fill: currentColor; color: var(--grey-ddd); margin: 0 auto; }
}

View File

@@ -1,78 +0,0 @@
.page-work {
.projects-list { display: grid; gap: 40px 20px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
.project { text-align: center;
.project-cover { display: block; margin: 0 0 15px; @include transition(transform .2s ease);
&:hover { @include scale(1.08); }
img { display: block; width: 100%; height: auto; }
}
.project-title { font-size: 18px; margin: 0 0 5px;
a { color: var(--grey-222); text-decoration: none;
&:hover { text-decoration: underline; }
}
}
.project-category { display: block; font-family: 'PT Sans', sans-serif; font-size: 12px; line-height: 16px; color: var(--grey-aaa); text-transform: uppercase; letter-spacing: .1em; }
}
}
}
.page-project { display: grid; gap: 50px; grid-template-columns: 7fr 3fr; grid-template-rows: auto; grid-template-areas: "carousel carousel" "content sidebar";
.section-title { display: block; font-family: 'PT Sans', sans-serif; font-size: 13px; color: var(--grey-222); text-transform: uppercase; letter-spacing: .1em; }
.project-gallery { grid-area: carousel; position: relative; overflow: hidden;
.slides { @include flexbox(); @include transition(transform .5s ease);
.slide { position: relative; width: 100%; @include flexbox(); @include flex(1, 0, auto); padding: 50% 0 0;
figure a { display: block;
img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; }
}
}
}
.gallery-nav { display: grid; gap: 0 5px; grid-auto-flow: column; position: absolute; bottom: 20px; right: 20px; z-index: 1;
label { width: 12px; height: 12px; background: transparent; border: 2px solid var(--grey-222); display: block; border-radius: 50%; @include transition(background .1s ease); cursor: pointer;
&.active, &:hover { background: var(--grey-222); }
}
}
}
.project-overview { grid-area: content;
.project-title { margin: 0 0 20px; font-size: 40px; line-height: 44px; color: var(--grey-222); }
a { color: var(--main-color);
&:hover { text-decoration: none; }
}
abbr { border-bottom: 1px dotted var(--grey-555); text-decoration: none; cursor: help; }
code, kbd, pre { margin: 0; font-family: monospace; word-wrap: break-word; word-break: break-word; white-space: pre-wrap; }
address, cite, var { font-style: italic; }
blockquote { margin: 40px 0; padding: 0 0 0 20px; border-left: 3px solid var(--grey-555); color: var(--grey-222); font-weight: 700; }
em, strong { color: var(--grey-222); }
p { margin: 15px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
img { display: block; max-width: 100%; height: auto; }
ul { list-style-type: disc; list-style-position: inside; }
ul, ol { margin: 15px 0; padding: 0 0 0 20px;
ul, ol { padding: 0 0 0 20px; }
li { margin: 5px 0;
& > code { font-size: 14px; padding: 3px 6px; margin: 0 4px; background: var(--grey-fa); border: 1px solid var(--grey-ccc); }
}
}
}
.project-meta { grid-area: sidebar;
& > div { position: sticky; top: 0; display: grid; gap: 30px; justify-items: start; align-items: start; align-content: start; font-size: 16px;
.button { display: inline-block; background: var(--main-color); padding: 10px 30px; text-transform: uppercase; color: var(--grey-fc); border-radius: 5px; font-family: 'PT Sans', sans-serif; font-size: 14px; font-weight: 700; border: none; cursor: pointer; @include transition(background .1s ease); text-decoration: none; text-align: center;
&:hover { background: var(--main-color-hover); }
&:active, &:focus { outline: none; }
}
}
}
}
@media screen and (max-width: 640px) {
.page-project { grid-template-areas: "carousel carousel" "content content" "sidebar sidebar"; grid-template-columns: 1fr 1fr;
.project-meta {
& > div { position: static; @include flexbox(); @include flex-flow(row wrap);
& > div { @include flex(1, 0, auto); }
}
}
}
}

View File

@@ -1,23 +0,0 @@
.toggleBurger { display: none;
&:checked {
& ~ .site-navigation { @include translate(0, 0); }
& ~ .toggleBurgerWrapper {
span { background: transparent;
&:before { top: 0; @include rotate(135deg); }
&:after { top: 0; @include rotate(-135deg); }
}
}
}
}
.toggleBurgerWrapper { display: none; position: fixed; top: 20px; left: 20px; width: 25px; height: 30px; cursor: pointer; z-index: 100; @include no-select();
span { position: absolute; top: 50%; height: 2px; width: 100%; background: var(--grey-222); @include transition(all .3s ease); @include translate(0, -50%);
&:before, &:after { position: absolute; height: 2px; width: 100%; background: var(--grey-222); content: ""; @include transition(all .3s ease); }
&:before { top: -6px; }
&:after { top: 6px; }
}
}
@media screen and (max-width: 800px) {
.toggleBurgerWrapper { display: block; }
}

View File

@@ -1,4 +0,0 @@
.header-content-separator { position: relative; margin: 40px auto; width: 4px; height: 4px; border-radius: 50%; background: var(--grey-ccc);
&:before { position: absolute; left: -8px; width: 4px; height: 4px; border-radius: 50%; background: var(--grey-ccc); content: ""; }
&:after { position: absolute; left: 8px; width: 4px; height: 4px; border-radius: 50%; background: var(--grey-ccc); content: ""; }
}

View File

@@ -1,3 +0,0 @@
.reading-progress-bar { position: fixed; top: 0; left: 0; min-width: 100%; height: 5px; z-index: 9; @include transition(width .05s ease);
&:before { position: absolute; top: 0; left: 0; content: ""; height: 5px; background: var(--main-color); width: inherit; }
}

View File

@@ -1,16 +0,0 @@
.changeTheme { position: fixed; top: 20px; right: 20px; overflow: hidden; @include flexbox(); @include justify-content(); @include align-items(); background: transparent; width: 25px; height: 30px; cursor: pointer; z-index: 10;
.modeIcon { position: relative; width: 20px; height: 20px; border-radius: 50%; background: var(--grey-ccc); @include transition(transform .35s ease);
&:before { position: absolute; width: 6px; height: 6px; top: 50%; left: 50%; @include translate(-50%, -50%); @include transition(box-shadow .3s ease); border-radius: 50%; opacity: 0; content: ""; }
&:after { position: absolute; width: 100%; height: 100%; top: -30%; left: 30%; @include transition(transform .35s ease); border-radius: 50%; background: var(--body-bg); content: ""; }
}
}
[data-theme="dark"] .changeTheme .modeIcon { background: var(--grey-fc); @include scale(0.5);
&:before { opacity: 1;
box-shadow: 0 -20px 0 0 var(--grey-fc), 0 20px 0 0 var(--grey-fc), -20px 0 0 0 var(--grey-fc),
20px 0 0 0 var(--grey-fc), 15px 15px 0 0 var(--grey-fc), 15px -15px 0 0 var(--grey-fc),
-15px 15px 0 0 var(--grey-fc), -15px -15px 0 0 var(--grey-fc);
}
&:after { opacity: 0; @include translate(50%, -50%); }
}

View File

@@ -1,3 +0,0 @@
---
tag: bundler
---

View File

@@ -1,3 +0,0 @@
---
tag: demo
---

View File

@@ -1,3 +0,0 @@
---
tag: documentation
---

View File

@@ -1,3 +0,0 @@
---
tag: jekyll
---

View File

@@ -1,3 +0,0 @@
---
tag: ruby
---

View File

@@ -1,3 +0,0 @@
---
tag: settings
---

View File

@@ -1,3 +0,0 @@
---
---
@import "main";

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" viewBox="0 0 51.4 51.4" enable-background="new 0 0 51.4 51.4" xml:space="preserve"><circle fill="#639F93" cx="25.7" cy="25.7" r="25.7"/><path fill="#FFFFFF" d="M22.5 39.1h-9.7V38c1-0.4 2.1-0.7 3.1-0.9V14.3c-1.2-0.2-2.2-0.5-3.1-1v-1.1h9.7v1.1c-0.4 0.2-0.9 0.4-1.4 0.6 -0.5 0.2-1 0.3-1.5 0.4v10h12v-10c-0.5-0.1-1-0.3-1.5-0.4 -0.5-0.2-0.9-0.3-1.4-0.5v-1.1h9.7v1.1c-0.5 0.3-1 0.5-1.5 0.6 -0.6 0.1-1.1 0.3-1.6 0.4v22.7c0.6 0.1 1.2 0.2 1.7 0.4 0.5 0.2 1 0.3 1.5 0.5v1.1h-9.7V38c0.9-0.4 1.9-0.7 2.9-0.9V26.3h-12v10.7c0.5 0.1 1 0.2 1.5 0.4 0.5 0.2 0.9 0.3 1.4 0.5V39.1z"/></svg>

Before

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,19 +0,0 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol id="no-avatar" viewBox="0 0 90 81.4">
<path d="M45 0C20.1 0 0 20.1 0 45c0 15 7.3 28.2 18.5 36.4C22.1 70.2 32.6 62.1 45 62.1c12.4 0 22.9 8.1 26.5 19.2C82.7 73.2 90 59.9 90 45 90 20.1 69.9 0 45 0zM45 55.7c-9.5 0-17.1-7.7-17.1-17.1S35.5 21.4 45 21.4c9.5 0 17.1 7.7 17.1 17.1S54.5 55.7 45 55.7z"/>
</symbol>
<symbol id="close" viewBox="0 0 55.2 55.1">
<polygon points="33.2 27.6 55.1 49.5 49.5 55.1 27.6 33.2 5.7 55.1 0 49.5 21.9 27.6 0 5.7 5.7 0 27.6 21.9 49.5 0 55.1 5.7 33.2 27.6"/>
</symbol>
<symbol id="arrow-right" viewBox="0 0 95 95">
<path d="M47.5 0C21.3 0 0 21.3 0 47.5S21.3 95 47.5 95 95 73.7 95 47.5 73.7 0 47.5 0zM53.6 70.8l-7.4-7.4 10.7-10.7H20.3V42.3h36.6L46.2 31.6l7.4-7.4 23.2 23.3L53.6 70.8z"/>
</symbol>
<symbol id="gentleman" viewBox="0 0 70.2 82.8">
<path d="M42.4 68.4c-4.3-1-7.3 1.8-7.3 1.8s-3-2.8-7.3-1.8C21.9 69.8 20 79.1 13 76.9c0 0 1.5 5.8 10.1 5.9s12-6.7 12-6.7 3.4 6.8 12 6.7c8.6-0.1 10.1-5.9 10.1-5.9C50.2 79.1 48.3 69.8 42.4 68.4zM68.7 26.8c-0.9-0.6-2-0.7-3.1-0.5L57.3 28c-0.6 0.1-1.2-0.4-1.2-1l0.8-13.6C57.3 8 54.2 3 49.2 1.1c-4.5-1.6-9.4-1-14.1-1s-9.6-0.6-14.1 1C16 3 12.9 8 13.2 13.4L14.1 27c0 0.6-0.5 1.1-1.2 1l-8.3-1.7c-1-0.2-2.2-0.1-3.1 0.5 -2.1 1.3-1.9 4.5-0.1 6 0.9 0.7 1.9 1.1 3 1.5 6.6 2.3 13.5 3 20.4 3.4 6.9 0.4 13.8 0.4 20.7 0 6.9-0.4 13.8-1.2 20.4-3.4 1.1-0.4 2.1-0.8 3-1.5C70.6 31.2 70.8 28.1 68.7 26.8zM33.6 53.4c1-0.2 2-0.2 3 0 0.5 4.6 4.4 8.2 9.1 8.2 5.1 0 9.2-4.1 9.2-9.2s-4.1-9.2-9.2-9.2c-4.4 0-8.1 3.1-9 7.2 -1.1-0.2-2.2-0.2-3.3 0 -0.9-4.1-4.6-7.2-9-7.2 -5.1 0-9.2 4.1-9.2 9.2s4.1 9.2 9.2 9.2C29.2 61.6 33.1 58 33.6 53.4zM45.7 46.1c3.4 0 6.2 2.8 6.2 6.2 0 3.4-2.8 6.2-6.2 6.2s-6.2-2.8-6.2-6.2S42.3 46.1 45.7 46.1zM18.3 52.4c0-3.4 2.8-6.2 6.2-6.2s6.2 2.8 6.2 6.2c0 3.4-2.8 6.2-6.2 6.2S18.3 55.8 18.3 52.4z"/>
</symbol>
<symbol id="cookie" viewBox="0 0 99 97.7">
<g><path d="M49.5 97.7C22.2 97.7 0 75.5 0 48.2 0 29.3 11.1 11.7 28.2 3.5c1.2-0.6 2.6-0.6 3.8 0 1.2 0.6 2.1 1.7 2.3 3.1 0.4 2.1 2.1 7.1 8.6 7.1 4.5 0 6.7-2.5 7.7-4.5 0.9-1.8 3-2.8 5-2.3 2 0.5 3.4 2.3 3.3 4.4 -0.1 3.3 0.8 6.3 2.5 8 2.2 2.2 5.9 2.4 11 0.6 1.8-0.7 3.9 0 5 1.6 1.1 1.6 1.1 3.7-0.1 5.3 -1.9 2.4-2.1 6-0.5 9.3 1.9 3.9 5.8 6.3 10.3 6.3 2 0 3.7-0.4 5.3-1.3 1.3-0.7 2.9-0.7 4.2 0 1.3 0.7 2.1 2 2.3 3.5l0 0.5c0.1 1 0.1 2 0.1 3C99 75.5 76.8 97.7 49.5 97.7zM27.7 13.8c-11.7 7.4-19 20.5-19 34.4C8.7 70.7 27 89 49.5 89c21.6 0 39.3-16.9 40.7-38.1 -1 0.1-2 0.2-3.1 0.2 -7.8 0-14.8-4.3-18.2-11.2 -1.6-3.3-2.2-6.7-1.9-10 -0.2 0-0.5 0-0.7 0h0c-4.5 0-8.3-1.5-11.2-4.4 -1.4-1.4-2.5-3.2-3.3-5.1 -2.6 1.5-5.6 2.2-8.9 2.2C36.2 22.5 30.7 19.2 27.7 13.8zM95.4 8.1c0 2-1.6 3.6-3.6 3.6 -2 0-3.6-1.6-3.6-3.6 0-2 1.6-3.6 3.6-3.6C93.8 4.5 95.4 6.1 95.4 8.1z"/><circle cx="28.2" cy="37.5" r="6.2"/><circle cx="32.6" cy="61.8" r="6.2"/><circle cx="55.3" cy="69.5" r="6.2"/><circle cx="52.6" cy="44.8" r="6.2"/><path d="M77.8 5.7c0 3.1-2.6 5.7-5.7 5.7 -3.1 0-5.7-2.6-5.7-5.7 0-3.2 2.6-5.7 5.7-5.7C75.2 0 77.8 2.6 77.8 5.7z"/><circle cx="92.5" cy="27.4" r="4"/></g>
</symbol>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,99 +0,0 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol id="facebook" viewBox="0 0 12 23.1">
<path d="M12,3.8H9.8c-1.7,0-2,.8-2,2V8.5h4.1l-0.5,4.1H7.8V23.1H3.5V12.6H0V8.5H3.5v-3C3.5,1.9,5.7,0,8.8,0L12,0.2V3.8Z" />
</symbol>
<symbol id="twitter" viewBox="0 0 12 9.7">
<path d="M10.8,2.4c0,0.1,0,.2,0,0.3a6.9,6.9,0,0,1-7,7A7,7,0,0,1,0,8.6H0.6A4.9,4.9,0,0,0,3.6,7.6,2.5,2.5,0,0,1,1.3,5.9H2.5a2.5,2.5,0,0,1-2-2.4h0L1.6,3.7A2.5,2.5,0,0,1,.8.4,7,7,0,0,0,5.9,3a2.8,2.8,0,0,1-.1-0.6A2.5,2.5,0,0,1,10.1.8,4.8,4.8,0,0,0,11.7.2a2.5,2.5,0,0,1-1.1,1.4L12,1.2A5.3,5.3,0,0,1,10.8,2.4Z" />
</symbol>
<symbol id="instagram" viewBox="0 0 512 512">
<g><path d="M256 49.5c67.3 0 75.2 0.3 101.8 1.5 24.6 1.1 37.9 5.2 46.8 8.7 11.8 4.6 20.2 10 29 18.8 8.8 8.8 14.3 17.2 18.8 29 3.4 8.9 7.6 22.2 8.7 46.8 1.2 26.6 1.5 34.5 1.5 101.8s-0.3 75.2-1.5 101.8c-1.1 24.6-5.2 37.9-8.7 46.8 -4.6 11.8-10 20.2-18.8 29 -8.8 8.8-17.2 14.3-29 18.8 -8.9 3.4-22.2 7.6-46.8 8.7 -26.6 1.2-34.5 1.5-101.8 1.5s-75.2-0.3-101.8-1.5c-24.6-1.1-37.9-5.2-46.8-8.7 -11.8-4.6-20.2-10-29-18.8 -8.8-8.8-14.3-17.2-18.8-29 -3.4-8.9-7.6-22.2-8.7-46.8 -1.2-26.6-1.5-34.5-1.5-101.8s0.3-75.2 1.5-101.8c1.1-24.6 5.2-37.9 8.7-46.8 4.6-11.8 10-20.2 18.8-29 8.8-8.8 17.2-14.3 29-18.8 8.9-3.4 22.2-7.6 46.8-8.7C180.8 49.7 188.7 49.5 256 49.5M256 4.1c-68.4 0-77 0.3-103.9 1.5C125.3 6.8 107 11.1 91 17.3c-16.6 6.4-30.6 15.1-44.6 29.1 -14 14-22.6 28.1-29.1 44.6 -6.2 16-10.5 34.3-11.7 61.2C4.4 179 4.1 187.6 4.1 256c0 68.4 0.3 77 1.5 103.9 1.2 26.8 5.5 45.1 11.7 61.2 6.4 16.6 15.1 30.6 29.1 44.6 14 14 28.1 22.6 44.6 29.1 16 6.2 34.3 10.5 61.2 11.7 26.9 1.2 35.4 1.5 103.9 1.5s77-0.3 103.9-1.5c26.8-1.2 45.1-5.5 61.2-11.7 16.6-6.4 30.6-15.1 44.6-29.1 14-14 22.6-28.1 29.1-44.6 6.2-16 10.5-34.3 11.7-61.2 1.2-26.9 1.5-35.4 1.5-103.9s-0.3-77-1.5-103.9c-1.2-26.8-5.5-45.1-11.7-61.2 -6.4-16.6-15.1-30.6-29.1-44.6 -14-14-28.1-22.6-44.6-29.1 -16-6.2-34.3-10.5-61.2-11.7C333 4.4 324.4 4.1 256 4.1L256 4.1zM256 126.6c-71.4 0-129.4 57.9-129.4 129.4S184.6 385.4 256 385.4 385.4 327.4 385.4 256 327.4 126.6 256 126.6zM256 340c-46.4 0-84-37.6-84-84s37.6-84 84-84c46.4 0 84 37.6 84 84S302.4 340 256 340z"/><circle cx="390.5" cy="121.5" r="30.2"/></g>
</symbol>
<symbol id="linkedin" viewBox="0 0 12 11.5">
<path d="M1.4,2.7h0A1.3,1.3,0,0,1,0,1.3,1.3,1.3,0,0,1,1.5,0,1.3,1.3,0,0,1,2.9,1.3,1.3,1.3,0,0,1,1.4,2.7Zm1.3,8.8H0.1V3.7H2.7v7.7Zm9.3,0H9.4V7.3c0-1-.4-1.7-1.3-1.7a1.4,1.4,0,0,0-1.3.9,1.9,1.9,0,0,0-.1.6v4.3H4.1c0-7,0-7.7,0-7.7H6.7V4.9h0A2.6,2.6,0,0,1,9,3.5c1.7,0,3,1.1,3,3.5v4.4Z" />
</symbol>
<symbol id="skype" viewBox="0 0 12 12">
<path d="M9,12a3,3,0,0,1-1.8-.6H6A5.5,5.5,0,0,1,.5,6,5.8,5.8,0,0,1,.6,4.8,3,3,0,0,1,4.8.6H6A5.5,5.5,0,0,1,11.5,6a5.8,5.8,0,0,1-.1,1.2A3,3,0,0,1,9,12ZM6.7,5.2L5.9,5c-0.6-.1-1-0.2-1-0.7S5.3,3.7,6,3.7s1.3,0.9,2,.9a0.8,0.8,0,0,0,.8-0.9c0-.9-1.5-1.5-3-1.5s-2.9.6-2.9,2.2S3.8,6.3,5,6.5L6.1,6.8C6.8,7,7.2,7.1,7.2,7.6a0.9,0.9,0,0,1-1.1.7c-1.4,0-1.5-1.2-2.4-1.2a0.8,0.8,0,0,0-.8.8c0,1,1.5,1.7,3.2,1.7s3-.7,3-2.3S7.8,5.5,6.7,5.2Z" />
</symbol>
<symbol id="github" viewBox="0 0 12 10.2">
<path d="M11.6,8c-1,1.9-3.6,2.1-5.4,2.1S1.4,10,.4,8A5.3,5.3,0,0,1,0,5.7,4.3,4.3,0,0,1,1,2.8,4,4,0,0,1,.8,1.6,3.5,3.5,0,0,1,1.2,0,4.2,4.2,0,0,1,3.9,1.2l2.2-.3,2,0.2A4.1,4.1,0,0,1,10.8,0a3.5,3.5,0,0,1,.4,1.6A3.8,3.8,0,0,1,11,2.8a4.3,4.3,0,0,1,1,2.9A5.4,5.4,0,0,1,11.6,8Zm-3-3.2L7.1,5H4.9L3.5,4.8A1.9,1.9,0,0,0,1.6,6.9c0,2.2,2,2.5,3.8,2.5H6.6c1.8,0,3.8-.3,3.8-2.5A1.9,1.9,0,0,0,8.5,4.8ZM3.7,8.3a1.3,1.3,0,0,1-.9-1.4,1.3,1.3,0,0,1,.9-1.4,1.3,1.3,0,0,1,.9,1.4A1.3,1.3,0,0,1,3.7,8.3Zm4.6,0a1.3,1.3,0,0,1-.9-1.4,1.3,1.3,0,0,1,.9-1.4,1.3,1.3,0,0,1,.9,1.4A1.3,1.3,0,0,1,8.3,8.3Z" />
</symbol>
<symbol id="codepen" viewBox="0 0 12 12">
<path d="M12,7.8a0.5,0.5,0,0,1-.2.4L6.3,11.9H5.7L0.2,8.3A0.5,0.5,0,0,1,0,7.8V4.2A0.5,0.5,0,0,1,.2,3.7L5.7,0.1H6.3l5.5,3.7a0.5,0.5,0,0,1,.2.4V7.8ZM2.3,6L1,5.1V6.9ZM5.5,3.9V1.5l-4,2.7L3.2,5.4Zm0,6.6V8.1L3.2,6.6,1.4,7.8ZM7.8,6L6,4.8,4.2,6,6,7.2Zm2.7-1.8-4-2.7V3.9L8.8,5.4Zm0,3.7L8.8,6.6,6.5,8.1v2.4Zm0.4-1V5.1L9.7,6Z" />
</symbol>
<symbol id="stack-overflow" viewBox="0 0 12 14.2">
<path d="M10.1,12.9V9.1h1.3v5.1H0V9.1H1.3v3.8h8.9ZM2.5,11.7H8.9V10.4H2.5v1.3ZM2.7,8.8l6.2,1.3L9.1,8.8,2.9,7.5Zm0.8-3L9.2,8.5,9.8,7.3,4,4.7ZM5.1,3L9.9,7.1l0.8-1L5.9,2ZM8.2,0l-1,.8L11,5.8l1-.8Z" />
</symbol>
<symbol id="dribbble" viewBox="0 0 12 12">
<path d="M6,12a6,6,0,1,1,6-6A6,6,0,0,1,6,12ZM6.1,5.1a18.8,18.8,0,0,1-5.3.7A1.2,1.2,0,0,0,.9,6,5.1,5.1,0,0,0,2.2,9.4,8.1,8.1,0,0,1,6.4,6H6.6ZM3.8,1.4A5.1,5.1,0,0,0,1,4.9a19.4,19.4,0,0,0,4.7-.6A31,31,0,0,0,3.8,1.4ZM6.9,6.8h0s-3,1.1-4,3.2H2.7a5.1,5.1,0,0,0,5.3.8A21.6,21.6,0,0,0,6.9,6.8ZM4.8,1h0ZM6,0.9H4.8A25,25,0,0,1,6.7,4,5.5,5.5,0,0,0,9.4,2.2,5.1,5.1,0,0,0,6,.9Zm4,1.9a6.7,6.7,0,0,1-2.9,2L7.4,5.5V5.8a12,12,0,0,1,3.6.2A5.1,5.1,0,0,0,10,2.7ZM7.9,6.6a22.9,22.9,0,0,1,1,3.7,5.1,5.1,0,0,0,2.2-3.4A7.6,7.6,0,0,0,7.9,6.6Z" />
</symbol>
<symbol id="behance" viewBox="0 0 12 7.5">
<path d="M3.5,0C4.7,0,5.8.4,5.8,1.8a1.6,1.6,0,0,1-1,1.5A1.8,1.8,0,0,1,6.2,5.2c0,1.5-1.3,2.1-2.6,2.1H0V0H3.5ZM3.3,3a0.8,0.8,0,0,0,1-.9,0.9,0.9,0,0,0-1.1-.8H1.6V3H3.3ZM3.4,6.1a1,1,0,0,0,1.2-1A1,1,0,0,0,3.4,4.1H1.6v2H3.4Zm7.2-.4h1.3A2.4,2.4,0,0,1,9.4,7.5,2.6,2.6,0,0,1,6.7,4.7,2.7,2.7,0,0,1,9.4,1.9,2.6,2.6,0,0,1,12,4.8V5.1H8.1A1.2,1.2,0,0,0,9.4,6.4,1.2,1.2,0,0,0,10.6,5.7ZM7.8,0.5V1.2h3V0.5h-3ZM8.1,4.1h2.4A1.1,1.1,0,0,0,9.4,3,1.1,1.1,0,0,0,8.1,4.1Z" />
</symbol>
<symbol id="pinterest" viewBox="0 0 12 15.6">
<path d="M6.4,0C9.3,0,12,2,12,5.1s-1.5,6.1-4.8,6.1A2.5,2.5,0,0,1,5,10.2c-0.7,2.8-.7,3.2-2.2,5.4H2.6c-0.1-.6-0.1-1.2-0.1-1.8S3.3,9.1,3.8,7.2a3.7,3.7,0,0,1-.3-1.6A2,2,0,0,1,5.2,3.5,1.2,1.2,0,0,1,6.4,4.8c0,1.2-.8,2.4-0.8,3.5A1.4,1.4,0,0,0,7,9.7C9.2,9.7,9.8,6.6,9.8,5S8.3,1.5,6.1,1.5A4.2,4.2,0,0,0,1.7,5.8a5.1,5.1,0,0,0,.7,2.1A1.3,1.3,0,0,1,2,9H1.8C0.5,8.6,0,6.8,0,5.6,0,2.1,3.2,0,6.4,0Z" />
</symbol>
<symbol id="tumblr" viewBox="0 0 12 20.9">
<path d="M12,19.7c-0.4.6-2.1,1.2-3.6,1.2-4.6.1-6.3-3.2-6.3-5.6V8.5H0V5.8A6.4,6.4,0,0,0,4.1.2L4.3,0H7.3V5.3h4.2V8.5H7.3V15a1.8,1.8,0,0,0,2,2.1,4.8,4.8,0,0,0,1.7-.4Z" />
</symbol>
<symbol id="youtube" viewBox="0 0 12 14.5">
<path d="M11.8,13.2a1.5,1.5,0,0,1-1.3,1.2,39.6,39.6,0,0,1-4.5.2,39.6,39.6,0,0,1-4.5-.2A1.5,1.5,0,0,1,.2,13.2,12.8,12.8,0,0,1,0,10.3,13.2,13.2,0,0,1,.2,7.5,1.5,1.5,0,0,1,1.5,6.3,41.4,41.4,0,0,1,6,6.2a41.6,41.6,0,0,1,4.5.2,1.5,1.5,0,0,1,1.3,1.2,12.7,12.7,0,0,1,.2,2.8A13.3,13.3,0,0,1,11.8,13.2ZM3.4,8.3V7.6H0.9V8.3H1.7v4.6H2.6V8.3H3.4ZM4.7,0l-1,3.2V5.4H3V3.2a12.9,12.9,0,0,0-.5-1.7L1.9,0H2.8L3.4,2.1,3.9,0H4.7ZM5.6,12.9v-4H4.9V12a0.6,0.6,0,0,1-.5.3l-0.2-.2a1.9,1.9,0,0,1,0-.3V8.9H3.5v3.2a2,2,0,0,0,.1.6,0.4,0.4,0,0,0,.5.3,1.2,1.2,0,0,0,.8-0.5v0.4H5.6ZM6.9,4.1a1.6,1.6,0,0,1-.2,1,1,1,0,0,1-.9.4A1,1,0,0,1,5,5.1a1.6,1.6,0,0,1-.2-1V2.7A1.6,1.6,0,0,1,5,1.7a1,1,0,0,1,.9-0.4,1,1,0,0,1,.9.4,1.6,1.6,0,0,1,.2.9V4.1ZM6.2,2.6C6.2,2.2,6.1,2,5.8,2s-0.3.2-.3,0.6V4.3c0,0.4.1,0.6,0.3,0.6s0.3-.2.3-0.6V2.6Zm2.2,7.6a2.8,2.8,0,0,0-.1-0.8,0.6,0.6,0,0,0-.6-0.5,1,1,0,0,0-.8.4V7.6H6.2v5.4H7V12.5a1,1,0,0,0,.8.4,0.6,0.6,0,0,0,.6-0.4,2.9,2.9,0,0,0,.1-0.8V10.1ZM7.6,11.8c0,0.4-.1.5-0.3,0.5L7,12.1V9.7l0.4-.2c0.2,0,.3.2,0.3,0.5v1.7Zm2-6.4H8.9V5a1.2,1.2,0,0,1-.8.5,0.5,0.5,0,0,1-.5-0.3,2.1,2.1,0,0,1-.1-0.6V1.4H8.3v3a1.8,1.8,0,0,0,0,.3,0.2,0.2,0,0,0,.2.2,0.6,0.6,0,0,0,.5-0.3V1.4H9.6v4Zm1.5,6.1H10.4a4.3,4.3,0,0,1,0,.5,0.3,0.3,0,0,1-.3.3c-0.3,0-.4-0.2-0.4-0.6V11.1h1.4V10.2a1.6,1.6,0,0,0-.2-0.9,1.1,1.1,0,0,0-1.7,0,1.5,1.5,0,0,0-.2.9v1.4a1.5,1.5,0,0,0,.2.9,1,1,0,0,0,.9.4,1,1,0,0,0,.9-0.4,0.9,0.9,0,0,0,.2-0.4,3.2,3.2,0,0,0,0-.5h0Zm-0.7-1.1H9.7V10.1c0-.4.1-0.6,0.4-0.6s0.4,0.2.4,0.6v0.4Z" />
</symbol>
<symbol id="vimeo" viewBox="0 0 12 10.4">
<path d="M9.5,7.2c-1.6,2.1-3,3.2-4.1,3.2S4.1,9.7,3.6,8.4l-1-3.6C2.3,3.6,1.9,3,1.5,3l-0.9.6L0,2.8,1.8,1.2A3.8,3.8,0,0,1,3.5.2C4.5,0.1,5,.7,5.3,2.1s0.4,2.4.5,2.7,0.6,1.8.9,1.8A2.3,2.3,0,0,0,7.8,5.5a4.7,4.7,0,0,0,.8-1.8,0.8,0.8,0,0,0-.8-1l-0.9.2Q7.8-.1,10.3,0c1.2,0,1.8.8,1.7,2.4S11.1,5.2,9.5,7.2Z" />
</symbol>
<symbol id="500px" viewBox="0 0 12 15.4">
<path d="M11.9,13.4a7,7,0,0,1-7.7,1.5A6.9,6.9,0,0,1,2,13.4,6.9,6.9,0,0,1,.5,11.1,6.8,6.8,0,0,1,0,9.5c0-.2.3-0.3,0.4-0.3s0.4,0,.5.2h0a6.9,6.9,0,0,0,.4,1.4,5.8,5.8,0,0,0,1.3,1.9,6.1,6.1,0,0,0,8.6,0h0.3l0.3,0.2c0.3,0.3.2,0.4,0.1,0.5H11.9Zm-0.4-2.9a5.1,5.1,0,0,1-2.7,2.7,5.1,5.1,0,0,1-3.9,0,5.1,5.1,0,0,1-1.6-1.1,4.9,4.9,0,0,1-1.1-1.6V10.1h0C2,9.9,2.4,9.8,2.5,9.8s0.4-.1.5,0.1a4.9,4.9,0,0,0,.8,1.4h0V8.4h0a2.9,2.9,0,0,1,.9-2,3.1,3.1,0,0,1,2.2-.9,3,3,0,1,1,0,6.1h-1s-0.2-.1-0.1-0.5,0.1-.4.4-0.4H6.8A2.1,2.1,0,0,0,9,8.5,2.1,2.1,0,0,0,8.4,7a2.1,2.1,0,0,0-1.5-.6,2,2,0,0,0-1.5.7,2.2,2.2,0,0,0-.6,1.4v3.6a4,4,0,0,0,2.1.6,4.2,4.2,0,0,0,2.9-1.2A4.1,4.1,0,0,0,3.9,5.6l-0.7.7h0a0.5,0.5,0,0,1-.6.2,0.5,0.5,0,0,1-.4-0.4V0.3A0.3,0.3,0,0,1,2.5,0h7.5c0.3,0,.3.4,0.3,0.5s0,0.5-.3.5h-7V5.1h0A6.4,6.4,0,0,1,4.9,3.9a5.2,5.2,0,0,1,2-.4,4.9,4.9,0,0,1,2,.4A5.1,5.1,0,0,1,11.5,10.5Zm0-6.5-0.3.2H11.1A6.5,6.5,0,0,0,9.3,3a5.9,5.9,0,0,0-2.4-.5A6.5,6.5,0,0,0,4.7,3C4.4,3,4.3,2.8,4.3,2.6a0.8,0.8,0,0,1-.1-0.3V2.1a6.8,6.8,0,0,1,2.6-.5,7,7,0,0,1,2.7.6,6.5,6.5,0,0,1,2,1.3C11.8,3.7,11.7,3.8,11.6,4ZM7.3,8.6L7.9,9.1c0.1,0.1.2,0.2-.1,0.4H7.4L6.8,9.1l-0.6.6H5.8a0.4,0.4,0,0,1-.2-0.2H5.8l0.6-.6L5.8,8c-0.1-.1-0.1-0.2.1-0.4l0.3-.2H6.3L6.8,8.1l0.6-.6c0.1-.1.2-0.1,0.4,0.1a0.3,0.3,0,0,1,.1.4Z" />
</symbol>
<symbol id="flickr" viewBox="0 0 12 12">
<path d="M12,2.3V9.8A2.3,2.3,0,0,1,9.8,12H2.3A2.3,2.3,0,0,1,0,9.8V2.3A2.3,2.3,0,0,1,2.3,0H9.8A2.3,2.3,0,0,1,12,2.3ZM3.8,4.3A1.7,1.7,0,1,0,5.5,6,1.7,1.7,0,0,0,3.8,4.3Zm4.4,0A1.7,1.7,0,1,0,9.9,6,1.7,1.7,0,0,0,8.2,4.3Z" />
</symbol>
<symbol id="spotify" viewBox="0 0 12 8">
<path d="M9.8,7.5a0.5,0.5,0,0,1-.5.5H8.9A8.5,8.5,0,0,0,4.5,6.7L1.9,7H1.5A0.5,0.5,0,0,1,.9,6.6,0.5,0.5,0,0,1,1.4,6a14.9,14.9,0,0,1,3.2-.4A9.5,9.5,0,0,1,9.4,6.9,0.6,0.6,0,0,1,9.8,7.5Z" /><path d="M10.8,5.1a0.6,0.6,0,0,1-.7.7H9.7A10.7,10.7,0,0,0,4.4,4.3a10.6,10.6,0,0,0-2.8.4H1.2A0.7,0.7,0,0,1,.6,4.1a0.7,0.7,0,0,1,.5-0.7,11.2,11.2,0,0,1,3.3-.5,11.8,11.8,0,0,1,6,1.6A0.7,0.7,0,0,1,10.8,5.1Z" /><path d="M12,2.4a0.8,0.8,0,0,1-.8.8H10.8A12.8,12.8,0,0,0,4.6,1.6,12.5,12.5,0,0,0,1.2,2H0.8A0.8,0.8,0,0,1,0,1.3,0.8,0.8,0,0,1,.6.5a14.4,14.4,0,0,1,4-.5,14.4,14.4,0,0,1,7,1.6A0.8,0.8,0,0,1,12,2.4Z" />
</symbol>
<symbol id="steam" viewBox="0 0 12 10.3">
<path d="M9,6.1L6,8.2a2.3,2.3,0,0,1-4.5.3L0,7.9V5L2.6,6.1a2.2,2.2,0,0,1,1.2-.3H4L5.9,3A3.1,3.1,0,1,1,9,6.1Zm-5.2.2H3.4L4.1,6.7a1.3,1.3,0,1,1-1,2.5L2.3,8.8A1.7,1.7,0,1,0,3.8,6.3ZM9,1a2,2,0,1,0,2,2A2,2,0,0,0,9,1ZM9,4.7A1.6,1.6,0,1,1,10.6,3,1.6,1.6,0,0,1,9,4.7Z" />
</symbol>
<symbol id="wordpress" viewBox="0 0 12 12">
<path d="M12,6A6,6,0,1,1,6,0,6,6,0,0,1,12,6ZM11.7,6A5.7,5.7,0,1,0,6,11.7,5.7,5.7,0,0,0,11.7,6ZM1.3,3.9l2.5,6.7A5.1,5.1,0,0,1,1.3,3.9ZM9.1,7.4L8.6,9.1,6.7,3.6H7.3a0.2,0.2,0,0,0,0-.4H4.5a0.2,0.2,0,0,0,0,.4H5L5.8,5.8,4.7,9.2,2.8,3.6H3.4a0.2,0.2,0,0,0,0-.4H1.7a5.1,5.1,0,0,1,7.8-1H9.4a0.9,0.9,0,0,0-.9.9,2.4,2.4,0,0,0,.5,1.2,2.7,2.7,0,0,1,.4,1.4A6.6,6.6,0,0,1,9.1,7.4ZM7.7,10.8h0a5.1,5.1,0,0,1-1.7.3l-1.5-.2L6.1,6.4ZM11.1,6a5.1,5.1,0,0,1-2.6,4.4l1.6-4.5a5.7,5.7,0,0,0,.4-1.8,3.3,3.3,0,0,0,0-.5A5.1,5.1,0,0,1,11.1,6Z" />
</symbol>
<symbol id="bitcoin" viewBox="0 0 8.1 11.1">
<path d="M6.6 5.2C7.5 5.4 8.2 6 8 7.3 7.9 8.9 6.7 9.3 5 9.4v1.7h-1V9.5c-0.3 0-0.5 0-0.8 0v1.7h-1V9.4c-0.2 0-0.5 0-0.7 0H0l0.2-1.2c0.8 0 0.7 0 0.7 0 0.3 0 0.4-0.2 0.4-0.3V5.2c0 0 0.1 0 0.1 0 0 0-0.1 0-0.1 0V3.2c0-0.2-0.2-0.5-0.6-0.5 0 0 0 0-0.7 0V1.7l1.4 0c0.2 0 0.4 0 0.6 0V0h1v1.7c0.3 0 0.5 0 0.8 0V0h1v1.7c1.3 0.1 2.4 0.5 2.5 1.7C7.5 4.3 7.2 4.9 6.6 5.2zM3.1 2.9v2.1c0.6 0 2.4 0.1 2.4-1C5.5 2.7 3.7 2.9 3.1 2.9zM3.1 5.9v2.3C3.8 8.2 6 8.4 6 7.1 6 5.8 3.8 5.9 3.1 5.9z"/>
</symbol>
<symbol id="pocket" viewBox="0 0 11.5 10.3">
<path d="M11.5 1v3.5c0 3.2-2.6 5.8-5.8 5.8C2.6 10.3 0 7.7 0 4.5V1c0-0.6 0.5-1 1-1h9.4C11.1 0 11.5 0.5 11.5 1zM6.3 6.9L9 4.3C9.2 4.2 9.3 4 9.3 3.7c0-0.4-0.4-0.8-0.8-0.8C8.3 2.9 8.1 3 7.9 3.2L5.8 5.2 3.6 3.2C3.5 3 3.3 2.9 3.1 2.9c-0.4 0-0.8 0.4-0.8 0.8 0 0.2 0.1 0.4 0.2 0.6l2.7 2.6C5.4 7 5.6 7.1 5.8 7.1 6 7.1 6.2 7 6.3 6.9z"/>
</symbol>
<symbol id="applemusic" viewBox="0 0 215.7 274.2">
<path d="M215.5 7.5L215.5 7.5c-2.2-6.7-4.8-8.3-11.8-7.2 -2.1 0.3-97.1 19.3-129.1 25.8 -6.1 1.2-10.2 4.5-11.6 10.7l0 0c0 51.5-0.1 103.1-0.1 154.6l0 0 0 0c0 2.3-0.2 4.5-0.9 6.7 -1.6 4-4.6 6.3-8.8 7.2 -4.5 0.9-9 1.8-13.5 2.8 -8.2 1.8-16.4 3.4-23.8 7.6 -8.9 5.1-14.3 12.6-15.4 23l0 0c-0.9 4.6-0.4 9 1 13.4 0.1 0.5 0.2 1.1 0.4 1.6 6.2 17.8 24.3 22.9 39.4 19.5 2.7-0.1 5.3-0.8 7.9-1.5 15.3-3.8 24.8-13.4 28.1-28.8 1.8-8.5 1.2-143.2 1.3-145.4 0.2-5.4 2.3-7.9 7.5-9.2 2-0.5 97.3-19.7 104.9-21.2 5.6-1.1 8 0.4 9.3 5.9 0 8.5 0 84.8 0 92.4l0 0 0 0c-0.1 1.3-0.3 2.6-0.4 3.8 -1.4 4.9-4.9 7.4-9.7 8.4 -4.2 0.9-8.4 1.7-12.6 2.6 -8.3 1.7-16.5 3.6-24 7.6 -9.3 5.1-14.7 12.9-16.1 23.4l0 0c-0.9 3.1-0.4 6.1 0 9.2 1.8 12.4 13.2 23.6 25.7 25.4 8.4 1.2 16.5-0.1 24.6-2.1 18.2-4.5 27.2-19.3 27.9-33.8C215.5 142.7 215.5 75.1 215.5 7.5z"/>
</symbol>
<symbol id="email" viewBox="0 0 12 9.4">
<path d="M12,8.4a1.1,1.1,0,0,1-1.1,1.1H1.1A1.1,1.1,0,0,1,0,8.4V1.1A1.1,1.1,0,0,1,1.1,0h9.9A1.1,1.1,0,0,1,12,1.1V8.4ZM10.9,0.9H1.1a0.2,0.2,0,0,0-.2.2A2.4,2.4,0,0,0,1.8,3L4.5,5.1A3.3,3.3,0,0,0,6,6H6a3.3,3.3,0,0,0,1.5-.9L10.2,3a2.6,2.6,0,0,0,1-1.7C11.1,1.2,11.2.9,10.9,0.9Zm0.2,2.4-0.5.4L7.8,5.9A3.1,3.1,0,0,1,6,6.9H6a3.1,3.1,0,0,1-1.8-.9L1.3,3.7,0.9,3.2V8.4a0.2,0.2,0,0,0,.2.2h9.9a0.2,0.2,0,0,0,.2-0.2V3.2Z" />
</symbol>
<symbol id="rss" viewBox="0 0 12 12">
<path d="M11.8,11.8l-0.4.2H10.2a0.5,0.5,0,0,1-.5-0.5A9.8,9.8,0,0,0,.5,2.3,0.5,0.5,0,0,1,0,1.8V0.5A0.5,0.5,0,0,1,.2.2L0.5,0h0A12,12,0,0,1,8.5,3.5,12,12,0,0,1,12,11.4,0.5,0.5,0,0,1,11.8,11.8Zm-4.4,0L7.1,12H5.9a0.5,0.5,0,0,1-.5-0.5A5.5,5.5,0,0,0,.5,6.6,0.5,0.5,0,0,1,0,6.1V4.9A0.5,0.5,0,0,1,.2,4.5H0.6A7.7,7.7,0,0,1,5.4,6.6a7.7,7.7,0,0,1,2.2,4.8A0.6,0.6,0,0,1,7.5,11.8ZM1.6,12a1.6,1.6,0,1,1,1.6-1.6A1.6,1.6,0,0,1,1.6,12Z" />
</symbol>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,12 +0,0 @@
const slides = document.querySelector('.slides');
const checkCurrentSlide = (e) => {
[...e.parentElement.children].forEach(sibling => sibling.classList.remove('active'));
e.classList.add('active');
}
const moveToSlide = (index, e) => {
const percentage = index * 100;
slides.style.transform = `translateX(-${percentage}%)`;
checkCurrentSlide(e);
}

View File

@@ -1,68 +0,0 @@
//Modal
const contactButton = document.querySelector('.open-contact');
const closeModal = document.querySelector('.close-modal');
const modalContainer = document.querySelector('.modal-container');
const modal = document.querySelector('.modal');
const form = document.querySelector('#contact-form');
const button = document.querySelector('#submit-contact-form');
const message = document.querySelector('#contact-form-message');
const addClass = () => {
button.style = "display: block;";
modalContainer.classList.remove('fadeOut');
modal.classList.remove('zoomOut');
modalContainer.classList.add('fadeIn');
modal.classList.add('zoomIn');
}
const addOutClass = () => {
message.style = "display: none;";
modalContainer.classList.remove("fadeIn");
modal.classList.remove("zoomIn");
modalContainer.classList.add("fadeOut");
modal.classList.add("zoomOut");
}
contactButton.addEventListener('click', addClass, false);
closeModal.addEventListener('click', addOutClass, false);
modal.addEventListener('click', (e) => { e.stopPropagation() }, false);
//Form
window.addEventListener("DOMContentLoaded", function() {
const success = () => {
form.reset();
button.style = "display: none;";
message.classList.add('success');
message.innerHTML = "Message successfully submited!";
}
const error = () => {
message.classList.add('error');
message.innerHTML = "Oops! There was a problem.";
}
form.addEventListener("submit", function(e) {
e.preventDefault();
message.style = "display: block;";
const data = new FormData(form);
ajax(form.method, form.action, data, success, error);
});
});
const ajax = (method, url, data, success, error) => {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.setRequestHeader("Accept", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState !== XMLHttpRequest.DONE) {
return;
}
if (xhr.status === 200) {
success(xhr.response, xhr.responseType);
}
else {
error(xhr.status, xhr.response, xhr.responseType);
}
};
xhr.send(data);
}

View File

@@ -1,14 +0,0 @@
const cookiesBanner = document.querySelector('.cookie-banner');
const acceptCookiesButton = document.querySelector('#acceptCookiesButton');
const cookiesAccepted = localStorage.getItem('jekyll-henry-cookies') ? localStorage.getItem('jekyll-henry-cookies') : null;
if (!cookiesAccepted) {
cookiesBanner.classList.add('active');
}
const acceptCookies = () => {
localStorage.setItem('jekyll-henry-cookies', true);
cookiesBanner.classList.remove('active');
}
acceptCookiesButton.addEventListener('click', acceptCookies, false);

View File

@@ -1,51 +0,0 @@
const allImages = Array.from(document.querySelectorAll('[ref="lightbox"]'));
const lightbox = document.getElementById('custom-lightbox');
const currentImage = document.getElementById('current-image');
let index = 0;
let isOpen = false;
const openLightbox = () => {
lightbox.classList.add('active');
currentImage.src = allImages[index];
isOpen = true;
}
const closeLightbox = () => {
lightbox.classList.remove('active');
isOpen = false;
}
const nextImage = () => {
index = index === allImages.length - 1 ? 0 : index + 1;
currentImage.src = allImages[index];
}
const prevImage = () => {
index = index === 0 ? allImages.length - 1 : index - 1;
currentImage.src = allImages[index];
}
const findImageIndex = (item) => {
return allImages.indexOf(item);
}
allImages.forEach(item => {
item.addEventListener('click', event => {
event.preventDefault();
index = findImageIndex(item);
openLightbox();
});
});
window.addEventListener('keydown', event => {
if (!isOpen) {
return;
} else if (event.keyCode === 27) {
closeLightbox();
} else if (event.keyCode === 37) {
prevImage();
} else if (event.keyCode === 39) {
nextImage();
}
});

View File

@@ -1,25 +0,0 @@
const articleContainer = document.querySelector('.wrapper');
const footerContainer = document.querySelector('.site-footer');
const readingTimeProgress = document.querySelector('.reading-progress-bar');
const updateScrollProgressBar = () => {
const articleTop = articleContainer.offsetTop;
const articleHeight = articleContainer.offsetHeight;
const footerHeight = footerContainer.offsetHeight;
const windowScroll = document.documentElement.scrollTop - articleTop;
const documentVisibleHeight = document.documentElement.clientHeight;
if (windowScroll >= 0) {
const scrollPercentage = (windowScroll / (articleHeight - documentVisibleHeight + footerHeight)) * 100;
readingTimeProgress.style.width = scrollPercentage + "%";
}
else {
readingTimeProgress.style.width = 0 + "%";
}
}
updateScrollProgressBar();
document.addEventListener('scroll', updateScrollProgressBar);
document.addEventListener('load', updateScrollProgressBar);

View File

@@ -1,6 +0,0 @@
/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/
!function(){"use strict";var f={compile:function(r){return i.template.replace(i.pattern,function(t,e){var n=i.middleware(e,r[e],i.template);return void 0!==n?n:r[e]||t})},setOptions:function(t){i.pattern=t.pattern||i.pattern,i.template=t.template||i.template,"function"==typeof t.middleware&&(i.middleware=t.middleware)}};const i={pattern:/\{(.*?)\}/g,template:"",middleware:function(){}};var n=function(t,e){var n=e.length,r=t.length;if(n<r)return!1;if(r===n)return t===e;t:for(var i=0,o=0;i<r;i++){for(var u=t.charCodeAt(i);o<n;)if(e.charCodeAt(o++)===u)continue t;return!1}return!0},e=new function(){this.matches=function(t,e){return n(e.toLowerCase(),t.toLowerCase())}},r=new function(){this.matches=function(e,t){return!!e&&(e=e.trim().toLowerCase(),(t=t.trim().toLowerCase()).split(" ").filter(function(t){return 0<=e.indexOf(t)}).length===t.split(" ").length)}},d={put:function(t){if(l(t))return a(t);if(function(t){return Boolean(t)&&"[object Array]"===Object.prototype.toString.call(t)}(t))return function(n){const r=[];s();for(let t=0,e=n.length;t<e;t++)l(n[t])&&r.push(a(n[t]));return r}(t);return undefined},clear:s,search:function(t){return t?function(e,n,r,i){const o=[];for(let t=0;t<e.length&&o.length<i.limit;t++){var u=function(t,e,n,r){for(const i in t)if(!function(n,r){for(let t=0,e=r.length;t<e;t++){var i=r[t];if(new RegExp(i).test(n))return!0}return!1}(t[i],r.exclude)&&n.matches(t[i],e))return t}(e[t],n,r,i);u&&o.push(u)}return o}(u,t,c.searchStrategy,c).sort(c.sort):[]},setOptions:function(t){c=t||{},c.fuzzy=t.fuzzy||!1,c.limit=t.limit||10,c.searchStrategy=t.fuzzy?e:r,c.sort=t.sort||o,c.exclude=t.exclude||[]}};function o(){return 0}const u=[];let c={};function s(){return u.length=0,u}function l(t){return Boolean(t)&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return u.push(t),u}c.fuzzy=!1,c.limit=10,c.searchStrategy=c.fuzzy?e:r,c.sort=o,c.exclude=[];var p={load:function(t,e){const n=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");n.open("GET",t,!0),n.onreadystatechange=h(n,e),n.send()}};function h(e,n){return function(){if(4===e.readyState&&200===e.status)try{n(null,JSON.parse(e.responseText))}catch(t){n(t,null)}}}var m=function y(t){if(!(e=t)||!("undefined"!=typeof e.required&&e.required instanceof Array))throw new Error("-- OptionsValidator: required options missing");var e;if(!(this instanceof y))return new y(t);const r=t.required;this.getRequiredOptions=function(){return r},this.validate=function(e){const n=[];return r.forEach(function(t){"undefined"==typeof e[t]&&n.push(t)}),n}},w={merge:function(t,e){const n={};for(const r in t)n[r]=t[r],"undefined"!=typeof e[r]&&(n[r]=e[r]);return n},isJSON:function(t){try{return t instanceof Object&&JSON.parse(JSON.stringify(t))?!0:!1}catch(e){return!1}}};!function(t){let i={searchInput:null,resultsContainer:null,json:[],success:Function.prototype,searchResultTemplate:'<li><a href="{url}" title="{desc}">{title}</a></li>',templateMiddleware:Function.prototype,sortMiddleware:function(){return 0},noResultsText:"No results found",limit:10,fuzzy:!1,debounceTime:null,exclude:[]},n;const e=function(t,e){e?(clearTimeout(n),n=setTimeout(t,e)):t.call()};var r=["searchInput","resultsContainer","json"];const o=m({required:r});function u(t){d.put(t),i.searchInput.addEventListener("input",function(t){-1===[13,16,20,37,38,39,40,91].indexOf(t.which)&&(c(),e(function(){l(t.target.value)},i.debounceTime))})}function c(){i.resultsContainer.innerHTML=""}function s(t){i.resultsContainer.innerHTML+=t}function l(t){var e;(e=t)&&0<e.length&&(c(),function(e,n){var r=e.length;if(0===r)return s(i.noResultsText);for(let t=0;t<r;t++)e[t].query=n,s(f.compile(e[t]))}(d.search(t),t))}function a(t){throw new Error("SimpleJekyllSearch --- "+t)}t.SimpleJekyllSearch=function(t){var n;0<o.validate(t).length&&a("You must specify the following required options: "+r),i=w.merge(i,t),f.setOptions({template:i.searchResultTemplate,middleware:i.templateMiddleware}),d.setOptions({fuzzy:i.fuzzy,limit:i.limit,sort:i.sortMiddleware,exclude:i.exclude}),w.isJSON(i.json)?u(i.json):(n=i.json,p.load(n,function(t,e){t&&a("failed to get JSON ("+n+")"),u(e)}));t={search:l};return"function"==typeof i.success&&i.success.call(t),t}}(window)}();

View File

@@ -1,19 +0,0 @@
const toggleSwitch = document.querySelector('.changeTheme');
const currentTheme = localStorage.getItem('jekyll-henry-theme') ? localStorage.getItem('jekyll-henry-theme') : null;
if (currentTheme) {
document.documentElement.setAttribute('data-theme', currentTheme);
}
const switchTheme = () => {
const currentMode = document.documentElement.getAttribute('data-theme');
if (currentMode === 'light') {
document.documentElement.setAttribute('data-theme', 'dark');
localStorage.setItem('jekyll-henry-theme', 'dark');
}
else {
document.documentElement.setAttribute('data-theme', 'light');
localStorage.setItem('jekyll-henry-theme', 'light');
}
}
toggleSwitch.addEventListener('click', switchTheme, false);

View File

@@ -1,234 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8"/>
<title>Henry - Simple, yet powerful Jekyll theme</title>
<link href='http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic|PT+Sans+Narrow:400,700&subset=latin,cyrillic-ext,latin-ext,cyrillic' rel='stylesheet' type='text/css' />
<style type="text/css">
* { box-sizing: border-box; -moz-box-sizing: border-box; }
body { margin: 0; padding: 0 10px; min-width: 320px; background: #eee; }
.page { max-width: 700px; margin: 50px auto; padding: 40px; background: #fff; font: 15px/24px 'PT Sans', Arial, Tahoma, sans-serif; box-shadow: 3px 3px 3px rgba(0,0,0, 0.05); color: #666; }
.page h1 { color: #444; line-height: normal; margin: 0 0 10px; text-align: center; font: 700 40px/48px 'PT Sans Narrow', Arial, Tahoma, sans-serif; }
.page h1 + p { font-size: 20px; color: #999; font-style: italic; margin: 0 0 10px; text-align: center; }
.page h1 + p + span { display: block; font-size: 14px; text-align: center; margin: 0 0 20px; padding: 0 0 30px; border-bottom: 1px solid #eee; }
.page h2 { font-size: 22px; color: #444; line-height: normal; margin: 40px 0 20px; padding: 30px 0 0; border-top: 1px solid #eee; }
.page h2:first-of-type { border: none; margin-top: 0; padding-top: 10px; }
.page strong { color: #444; }
.page ol li, .page ul li { margin: 6px 0 0; }
.page ol > li:first-of-type, .page ul > li:first-of-type { margin: 0; }
.page a { color: #dc5166; border-bottom: 1px solid; text-decoration: none; }
.page a:hover { color: #b7374b; border-bottom: none; }
.page pre { display: block; border: 1px solid #e3edf3; background: #F7FAFB; overflow: visible; overflow-y: hidden; padding: 0 8px; font-size: 13px; line-height: 20px; font-family: monospace, sans-serif; white-space: pre; }
.page code { padding: 1px 5px; font-size: 13px; line-height: 20px; border: 1px solid #e3edf3; background: #F7FAFB; font-family: monospace, sans-serif; white-space: pre; }
</style>
</head>
<body>
<div class="page">
<h1>Henry</h1>
<p>Simple, yet powerful Jekyll theme.</p>
<h2>Installation</h2>
<p>I assume that you have already downloaded and installed Ruby. Here's what you need to do next:</p>
<ol>
<li>Run <code>gem install jekyll bundler</code>.</li>
<li>Extract the theme to a desired folder.</li>
<li>o into that folder by executing <code>cd name-of-the-folder</code>.</li>
<li>Run <code>bundle install</code>.</li>
<li>If you want to access and customize the theme, use <code>bundle exec jekyll serve</code>. This way it will be accessible on <code>http://localhost:4000/</code> or <code>http://127.0.0.1:4000/</code>. Also, after every change you make the theme will rebuild itself automatically.</li>
<li>Run <code>bundle exec jekyll build</code> and upload the content of the compiled <code>_site</code> folder on your host server.</li>
</ol>
<h2>Configuration</h2>
<p>All configuration options are in the <code>_config.yml</code> file. Let's take a look of the important ones.</p>
<p><strong>General</strong></p>
<ul>
<li><strong>title</strong>: Site name.</li>
<li><strong>description</strong>: Site description.</li>
</ul>
<p><strong>Paths</strong></p>
<p>These options are pretty important, so take a closer look. If you experience any problems with your paths you should check here.</p>
<ul>
<li><strong>url</strong>: A lot of people have problems when they try to setup their paths. That's why I've decided to keep things as simple as possible. So, usually you'll have to paste here your domain <code>https://mysite.com</code> and then in the baseurl you paste your subdomain (if there is one). The theme is configured to use absolute paths, so you'll have to paste the whole path here — domain + subdomain. For example, if your website is in the root folder, write down <code>https://mysite.com</code>, if there is a subfolder — <code>https://mysite.com/subfolder</code>. In this case you don't need the baseurl anymore.</li>
<li><strong>baseurl</strong>: No longer needed due theme configuration. I left it just in case.</li>
</ul>
<p><strong>Options</strong></p>
<ul>
<li><strong>darkMode</strong>: Enable/disable dark theme for the theme. If enabled you'll see an icon in the upper right corner.</li>
<li><strong>showTags</strong>: Enable/disable visibility of post's tags.</li>
<li><strong>showCategories</strong>: Enable/disable visibility of post's categories.</li>
<li><strong>showSearch</strong>: Enable/disable visibility of global site search.</li>
<li><strong>showSharePost</strong>: Enable/disable visibility of post's share options.</li>
<li><strong>showFavIcon</strong>: Enable/disable visibility of favicon.</li>
<li><strong>showComments</strong>: Enable/disable visibility of post's comments.</li>
<li><strong>showCookieBanner</strong>: Enable/disable visibility of the cookie banner. This theme supports Google Analytics (GA), so there have to be some kind of user notification. If you don't use GA or other tracking service, you should disable it. Keep in mind that the banner is pretty basic, so in some cases you may need to customize it or entirely replace it with another third-party cookie service.</li>
<li><strong>useExternalContactForm</strong>: Enable/disable usage of <a href="https://formspree.io/" target="_blank">Formspree</a> as default contact form. If this option is disabled, when you click <b>Contact</b> link in the main menu you'll be redirected directly to your default mail client. If enabled, a modal box will pop up and you'll be introduced to a more user-friendly contact form.</li>
<li><strong>useAnalytics</strong>: Enable/disable usage of Google Analytics.</li>
</ul>
<p><strong>Third Party / Social</strong></p>
<ul>
<li><strong>facebook</strong>: Link to your facebook page.</li>
<li><strong>twitter</strong>: Link to your twitter page.</li>
<li><strong>instagram</strong>: Link to your instagram page.</li>
<li><strong>email</strong>: Your email address.</li>
<li><strong>formspree</strong>: Link to your <a href="https://formspree.io/" target="_blank">Formspree</a> form. If you use Formspree, generate form ID and paste it here. Works only if you activated <code>useExternalContactForm</code> option in the previos section.</li>
<li><strong>googleAnalyticsTrackingCode</strong>: Add your Google Analytics Tracking ID. Example ID: <i>UA-XXXXXXX-2</i>.</li>
<li><strong>disqusID</strong>: Add your website shortname from Disqus. Keep in mind that by default Disqus comments are not configured. If you use this make sure <code>showComments</code> option is set to <b>true</b>.</li>
<li><strong>twitterHandle</strong>: Add your Twitter handle.</li>
</ul>
<p><strong>Permalinks</strong></p>
<p>There is a default structure of your links. If you want a different one, please check <a href="https://jekyllrb.com/docs/permalinks/" target="_blank">Jekyll documentation</a>.</p>
<p><strong>Pagination</strong></p>
<ul>
<li><strong>paginate</strong>: Number of posts per page.</li>
<li><strong>paginate_path</strong>: The default path is <code>/blog/page:num/</code>, so for example if you go to the second page you'll see something like this <code>http://mysite.com/blog/page2/</code>.</li>
</ul>
<p><strong>Important Note:</strong> Due to theme's compatibility with GitHub Pages, pagination is only supported on the default posts/blog page — <b>Blog</b>. When you list categories or tags, there is no pagination.</p>
<p><strong>Includes</strong></p>
<ul>
<li><strong>include</strong>: Force the inclusion of the <code>pages</code> directory.</li>
</ul>
<p><strong>Post Separator</strong></p>
<ul>
<li><strong>excerpt_separator</strong>: By default when you're writing a post, you should add <code>&lt;!--more--&gt;</code> to define the end of the excerpt. If you remove this option your excerpt will show with the default settings and you'll not have control over the content. If you want to keep the custom separator (I strongly suggest) you can leave it as is or change the <code>&lt;!--more--&gt;</code> tag as well.</li>
</ul>
<p><strong>Assets Settings</strong></p>
<ul>
<li><strong>sass_dir</strong>: Choose the path to your SCSS files.</li>
<li><strong>style</strong>: Choose the compression method for the final CSS file.</li>
</ul>
<p>If you need extra help, just check out the <a href="https://jekyllrb.com/docs/home/" target="_blank">official Jekyll documentation</a>.</p>
<h2>How To Add a Post</h2>
<p>All you need to do is to add a file to your <code>_posts</code> directory with the following format: <code>YEAR-MONTH-DAY-title.MARKUP</code>. Where YEAR is a four-digit number, MONTH and DAY are both two-digit numbers, and MARKUP is the file extension representing the format used in the file. You can overwrite these in the post's front matter. Take for example the current file. The title is different from the one in the filename.</p>
<p>In the beginning of the every post you have a so called <a href="https://jekyllrb.com/docs/frontmatter/" target="_blank">front matter</a> block which contains some data about the post. Here is the short description of the options.</p>
<ul>
<li><strong>layout</strong>: Post's layout. This setting is configured by default. Use only if you want a custom post layout.</li>
<li><strong>author</strong>: Post's author. You can see all authors in the <code>authors.yml</code> file in the <code>_data</code> folder.</li>
<li><strong>title</strong>: Post's title. Overwrites the one from the filename.</li>
<li><strong>date</strong>: Post's date. Overwrites the one from the filename.</li>
<li><strong>categories</strong>: This post can be included under one or many categories. List them here. Keep in mind that you have to create a file for every new category. Check out the guide for creating a new category below.</li>
<li><strong>tags</strong>: List the specific post tags. Keep in mind that you have to create a file for every new tag. Check out the guide for creating a new category below.</li>
<li><strong>description</strong>: Meta description used for better SEO.</li>
<li><strong>comments</strong>: By default they are always <code>true</code>, but if you want to turn them off for a specific post just set this to <code>false</code>.</li>
</ul>
<p>You can add more or different data in the front matter by yourself. You'll just have to learn how to display it :).</p>
<h2>How To Add a Page</h2>
<p>Adding page is even simpler than adding post. Go go <code>_pages</code> folder and add a file with the following format: <code>page-title.FORMAT</code>. FORMAT is the file extension and it can be <code>.md</code>, <code>.markdown</code> or <code>.html</code>. Pages are also using front matter to add information to your page. Just like posts, pages have default front matter.</p>
<ul>
<li><strong>layout</strong>: The page's layout. Unlike posts, setting the layout for the page is required.</li>
<li><strong>title</strong>: Page's title.</li>
<li><strong>permalink</strong>: This is important. If you do not enter the permalink, your URL will be something like this <code>http://example.com/_pages/about</code>. Enter the permalink and get rid of <code>/_pages/</code> part. Do not forget the trailing slash!</li>
<li><strong>showInMenu</strong>: By default every page is shown in the main menu. Set it to <code>false</code> if you don't want it to be visible there.</li>
</ul>
<p>There are two "special" or in other words hardcoded pages that are custom for this theme - <b>About Page</b> and <b>Work Page</b>. They have some additional front matter that I'd like to share with you.</p>
<p>Special pages do not use <code>page</code> layout so they'll need another property to show up in the main menu.</p>
<ul>
<li><strong>customPage</strong>: If you want a special page to be visible in the menu you'll have to keep this option set to <code>true</code> along with <code>showInMenu</code>. If false or removed the page will not be visible.</li>
<li><strong>order</strong>: Custom pages can be ordered. Just place a number here.</li>
</ul>
<h2>How To Add a New Project</h2>
<p>Go to the <code>_projects</code> folder and create a new file. There is a little bit of front matter that you'll have to fill:</p>
<pre>
---
name: App
category: App Design
creationDate: 2021-02-01
client: Tesla
role: App Deisgner
website: https://project.website.com
cover: http://path.to.cover.image.jpg
gallery:
- http://path.to.image1.jpg
- http://path.to.image2.jpg
---
</pre>
<p>I think all of the properties are self-explanatory. Keep in mind that demo projects are using <code>webp</code> format for the images and they are hosted on my server to keep the size of the theme as low as possible. If you keep your images in the <code>images</code> folder (as you should be) the path is <code>/assets/images/image.FORMAT</code>.</p>
<h2>How To Add a New Category</h2>
<p>I wanted to keep this theme as light and clean as possible, so the use of external plugins was not an option. Besides, I also wanted to be GitHub Pages compatible.</p>
<p>Adding a category is pretty simple, but some empty file creation is needed. Categories and tags are collections (just like projects) and every collection item require a dedicated file. Here are the steps of new category creation.</p>
<ol>
<li>Go to <code>_category</code> folder and create new file. For example: <code>documentation.html</code>.</li>
<li>Open that file and add <code>category</code> property in the front matter. <i>Note: Filename and category must be exactly the same.</i></li>
</ol>
<pre>
---
category: documentation
---
</pre>
<ol start="3">
<li><i>Optional</i>: Go to a post and add category name to the list.</li>
</ol>
<h2>How To Add a New Tag</h2>
<p>I wanted to keep this theme as light and clean as possible, so the use of external plugins was not an option. Besides, I also wanted to be GitHub Pages compatible.</p>
<p>Adding a tag is pretty simple, but some file creation is needed. Categories and tags are collections (just like projects) and every collection item require a dedicated file. Here are the steps of new tag creation.</p>
<ol>
<li>Go to <code>_tag</code> folder and create new file. For example: <code>jekyll.html</code>.</li>
<li>Open that file and add <code>tag</code> property in the front matter. <i>Note: Filename and tag must be exactly the same.</i></li>
</ol>
<pre>
---
tag: jekyll
---
</pre>
<ol start="3">
<li><i>Optional</i>: Go to a post and add tag name to the list.</li>
</ol>
<h2>How To Add a New Author</h2>
<ol>
<li>Go to <code>_data</code> folder and open <code>authors.yml</code> file. Take a look at the examples and add another author.</li>
<li>Then go to a specific post and add author's name in the front matter.</li>
</ol>
<pre>
henry:
name: Henry Dawson
title: Ordinary Gentleman
avatar: /assets/images/user1.webp
</pre>
<p>Take a look at the example above. <code>henry</code> is the name that you put in the post's front matter and the <code>name</code> is just a display name that is used thereafter.</p>
<h2>Enable & Configure Disqus Comments</h2>
<p>To enable and configure comments you must do the following:</p>
<ol>
<li>Go to <code>_config.yml</code> and under <b>Options</b> enable <code>showComments</code>.</li>
<li>Go to <code>_includes/components/comments.html</code> file and edit your <code>PAGE_URL</code> and <code>PAGE_IDENTIFIER</code> variables. <a href="https://disqus.com/admin/install/platforms/universalcode" target="_blank">Read about Disqus</a>.</li>
</ol>
<h2>Formspree (Contact Form)</h2>
<p>Go to <a href="https://formspree.io/" target="_blank">Formspree</a> and register. Create a new project and then a form. Paste form's endpoint to the <code>_config.yml</code> file, section <b>Third Party / Social</b>. Voilà!</p>
<h2>Site Search</h2>
<p>This theme use a third-party search library that is completely JavaScript. In the root folder you'll find the <code>search.json</code> file which is basically the search result's config. If you go to <code>_includes/scripts.html</code> you can also configure the library itself. You can change the settings but make sure you know what you are doing.</p>
<h2>GitHub Pages</h2>
<p>Here is the one of many ways to upload the theme to GitHub Pages.</p>
<ol>
<li>Go to <a href="https://github.com/" target="_blank">GitHub</a> and create a new repository. It can be private or public for now, just don't forget to make it public when you finish editing.</li>
<li>Clone your repo and create a new branch called <code>gh-pages</code>.</li>
<li>Go to your Henry theme and open <code>_config.yml</code> file. After <code>url</code> in the <b>Paths</b> section write down your full URL. Example: <code>https://githubusername.github.io/repositoryname</code>. Build using <code>bundle exec jekyll build</code>.</li>
<li>Copy the contents of <code>_site</code> folder to the newly created GitHub Pages repo.</li>
<li>Then define user by executing two commands: <code>git config user.email "Your Email"</code> and <code>git config user.name "Your Name"</code>.</li>
<li>Use <code>git add .</code> to stage all files, then type <code>git commit -m "Initial commit"</code> to make your first commit and that followed by <code>git push -u origin gh-pages</code> to push the changes.</li>
<li>Open <code>https://githubusername.github.io/repositoryname</code> (remember, you'll have to make it public). If you want to push new changes to the website, repeat step 6 and in the end just use <code>git push</code>.</li>
</ol>
<p>That's it! Do not hesitate to ask if you have any questions. Happy blogging!</p>
</div>
</body>
</html>

View File

@@ -1,3 +0,0 @@
---
layout: blog
---

Binary file not shown.

View File

@@ -1,14 +0,0 @@
---
layout: none
---
[
{% for post in site.posts %}
{
"title" : "{{post.title | escape}}",
"category" : "{{post.category}}",
"tags" : "{{post.tags | join: ', '}}",
"url" : "{{post.url | absolute_url}}",
"date" : "{{post.date}}"
} {% unless forloop.last %},{% endunless %}
{% endfor %}
]