Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/serg/yourfolio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorserg <contact@sergfurtak.com>2020-02-04 23:14:03 +0300
committerserg <contact@sergfurtak.com>2020-02-04 23:14:03 +0300
commitaa9df3c1ad1ef7eec69be1b6aaa65fc4b476fe4b (patch)
treefa5e52ae3543ebd856635eed30a5805ee756e674
parent6772ee08cdbd98fa65749313cb25df5833ab7d30 (diff)
migrate on building the assets via Hugo
-rw-r--r--README.md4
-rw-r--r--assets/js/app.js72
-rw-r--r--assets/scss/app.scss299
-rw-r--r--exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.content1
-rw-r--r--exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.json1
-rw-r--r--layouts/_default/baseof.html4
-rw-r--r--layouts/partials/head-includes.html7
-rw-r--r--layouts/partials/scripts.html8
-rw-r--r--static/app.css2
-rw-r--r--static/app.js1
-rw-r--r--static/vendor.js1
-rw-r--r--theme.toml2
12 files changed, 390 insertions, 12 deletions
diff --git a/README.md b/README.md
index 5c81d5b..0e535ad 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,9 @@ Super simple and responsive theme for your personal website on Hugo framework.
![Yourfolio screenshot](https://bit.ly/2LhW4Xo)
## Installation
-Before start you already need to have a Hugo on your machine. You can install it by following [these instructions](https://gohugo.io/getting-started/installing/).
+Before start you already need to have a Hugo on your machine.
+**Please note:** you need to have the extended version of Hugo v0.48 or above.
+You can install it by following [these instructions](https://gohugo.io/getting-started/installing/).
Create the Hugo website template if you are starting from scratch:
diff --git a/assets/js/app.js b/assets/js/app.js
new file mode 100644
index 0000000..e5ab88d
--- /dev/null
+++ b/assets/js/app.js
@@ -0,0 +1,72 @@
+"use strict";
+
+var App = {
+ init: function() {
+ this.initBurgerHandler();
+ this.stickyNavigationHandler();
+ var projects = document.querySelectorAll('.project');
+
+ if (projects.length) {
+ this.initFadeInProjects(projects);
+ }
+ },
+ initFadeInProjects: function(projects) {
+ for (var i = 0; i < projects.length; i++) {
+ projects[i].classList.add('transparent');
+ }
+
+ var updateProjectsView = function() {
+ var viewportTop = window.pageYOffset || document.documentElement.scrollTop;
+ var viewportBottom = viewportTop + window.innerHeight;
+
+ for(var i = 0; i < projects.length; i++) {
+ var project = projects[i];
+ var projectTopOffset = project.getBoundingClientRect().top + viewportTop;
+
+ if (projectTopOffset <= viewportBottom) {
+ var projectClasses = project.classList;
+ projectClasses.remove('transparent');
+ projectClasses.add('animated');
+ projectClasses.add('fadeInUp');
+ }
+ }
+ };
+
+ updateProjectsView();
+ window.addEventListener('scroll', updateProjectsView);
+ },
+ initBurgerHandler: function() {
+ var navContainer = document.querySelector('.nav-container');
+ var burger = document.querySelector('.burger');
+
+ burger.addEventListener('click', function() {
+ navContainer.classList.toggle('BurgerMenu--active');
+ });
+ },
+ stickyNavigationHandler: function() {
+ var scrollPosition = 0;
+ var mainContainer = document.querySelector('.main-container');
+ var navContainer = document.querySelector('.nav-container');
+
+ var updateNavigationView = function() {
+ var currentScrollPos = window.pageYOffset || document.documentElement.scrollTop;
+ var isUpDirection = (currentScrollPos && currentScrollPos < scrollPosition);
+
+ if (isUpDirection) {
+ mainContainer.classList.add('stickyNavigation');
+ } else {
+ mainContainer.classList.remove('stickyNavigation');
+ }
+
+ if (currentScrollPos > scrollPosition) {
+ navContainer.classList.remove('BurgerMenu--active');
+ }
+
+ scrollPosition = currentScrollPos;
+ };
+
+ window.addEventListener('scroll', updateNavigationView);
+ }
+};
+
+App.init();
diff --git a/assets/scss/app.scss b/assets/scss/app.scss
new file mode 100644
index 0000000..6d4f6a6
--- /dev/null
+++ b/assets/scss/app.scss
@@ -0,0 +1,299 @@
+.burger-wrap {
+ float: right;
+ height: 100%;
+
+ &:before {
+ display: inline-block;
+ vertical-align: middle;
+ content: '';
+ height: 100%;
+ width: 0;
+ }
+}
+
+.burger {
+ position: relative;
+ width: 2.5em;
+ height: 1.8em;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+
+ & > div {
+ position: absolute;
+ left: 0;
+ right: 0;
+ background: #171616;
+ height: .2em;
+ }
+
+ .top {
+ top: 0;
+ transition: transform 0.5s, top 0.2s;
+ }
+
+ .middle {
+ top: .8em;
+ transition: transform 0.5s ease 0.2s, top 0.2s;
+ }
+
+ .bottom {
+ top: 1.6em;
+ transition: all 0.5s ease 0.1s;
+ }
+}
+
+.BurgerMenu--active {
+ .burger {
+ .top {
+ top: .8em;
+ transform: rotate(135deg);
+ }
+
+ .middle {
+ transform: rotate(-135deg);
+ }
+
+ .bottom {
+ top: 0.8em;
+ opacity: 0;
+ transform: rotate(180deg);
+ }
+ }
+
+ .links {
+ visibility: visible;
+ opacity: 1;
+ }
+}
+
+.projects {
+ margin-top: 4.5em;
+ margin-bottom: 3.5em;
+
+ & .project {
+ margin-bottom: 2em;
+ }
+
+ & a {
+ position: relative;
+ display: block;
+ }
+
+ & a:hover{
+ & .project-hover {
+ background: #224afa;
+ color: #fff;
+ opacity: 0.9;
+ -webkit-transition: opacity 200ms linear;
+ -moz-transition: opacity 200ms linear;
+ -ms-transition: opacity 200ms linear;
+ -o-transition: opacity 200ms linear;
+ transition: opacity 200ms linear;
+ }
+ }
+
+ & .image-item {
+ display: block;
+ max-width: 100%;
+ height: auto;
+ }
+
+ & .project-hover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ opacity: 0;
+ -webkit-transition: all 200ms linear 300ms;
+ -moz-transition: all 200ms linear 300ms;
+ -ms-transition: all 200ms linear 300ms;
+ -o-transition: all 200ms linear 300ms;
+ transition: all 200ms linear 300ms;
+ }
+}
+
+.project-caption {
+ padding: 1.5em;
+ line-height: 1.2;
+
+ & .project-title {
+ max-height: 3.5em;
+ font-size: 2.8em;
+ font-weight: bold;
+ overflow: hidden;
+ }
+
+ & .project-type {
+ margin-top: .5em;
+ font-size: 1.4em;
+ text-transform: uppercase;
+ }
+}
+
+.line::before {
+ content: "";
+ display: block;
+ height: 1px;
+ background: #ebebeb;
+ margin-top: 4.2em;
+ margin-bottom: 4.2em;
+}
+
+.bottom-space {
+ margin-bottom: 4.2em;
+}
+
+.stickyNavigation {
+ .nav-container {
+ position: fixed;
+ z-index: 10;
+ width: 100%;
+ padding-bottom: 1.5em;
+ -webkit-box-shadow: 0 5px 7px 0 rgba(1,1,1,.1);
+ box-shadow: 0 5px 7px 0 rgba(1,1,1,.1);
+ -webkit-animation-name: fadeIn;
+ animation-name: fadeIn;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ }
+
+ .navbar {
+ height: 5em;
+ padding-top: 1.5em;
+ }
+
+ .logo img {
+ max-height: 5em;
+ }
+
+ .header {
+ padding-top: 9.1em;
+ }
+}
+
+@-webkit-keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@-webkit-keyframes fadeInUp {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 60px, 0);
+ transform: translate3d(0, 60px, 0);
+ }
+
+ 40% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: none;
+ transform: none;
+ }
+}
+
+@keyframes fadeInUp {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 60px, 0);
+ transform: translate3d(0, 60px, 0);
+ }
+
+ 40% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: none;
+ transform: none;
+ }
+}
+
+.fadeInUp {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-name: fadeInUp;
+ animation-name: fadeInUp;
+}
+
+//361
+@media only screen and (min-width: 22.5625em) {
+ .projects {
+ margin-top: 7.5em;
+ margin-bottom: 6em;
+ }
+}
+
+//446
+@media only screen and (min-width: 27.875em) {
+ .project-caption {
+ & .project-title {
+ font-size: 3.5em;
+ }
+
+ & .project-type {
+ font-size: 1.6em;
+ }
+ }
+}
+
+//741
+@media only screen and (min-width: 46.3125em) {
+ .projects {
+ margin-top: 10em;
+
+ & .project {
+ float: left;
+ }
+
+ & .short-col {
+ width: 32.21238%;
+ }
+
+ & .wide-col {
+ width: 66.01769%;
+ }
+
+ & .project:nth-child(2n) {
+ margin-right: 1.7699%;
+ }
+ }
+
+ .project-caption {
+ padding: 3.7em 2.5em 3.7em 3em;
+
+ & .project-title {
+ font-size: 4em;
+ max-height: 4.8em;
+ }
+ }
+}
+
+//936
+@media only screen and (min-width: 58.5em) {
+ .project-caption {
+ & .project-title {
+ font-size: 4.6em;
+ }
+ }
+}
diff --git a/exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.content b/exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.content
new file mode 100644
index 0000000..945f0b4
--- /dev/null
+++ b/exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.content
@@ -0,0 +1 @@
+.burger-wrap{float:right;height:100%}.burger-wrap:before{display:inline-block;vertical-align:middle;content:'';height:100%;width:0}.burger{position:relative;width:2.5em;height:1.8em;display:inline-block;vertical-align:middle;cursor:pointer}.burger>div{position:absolute;left:0;right:0;background:#171616;height:.2em}.burger .top{top:0;transition:transform .5s,top .2s}.burger .middle{top:.8em;transition:transform .5s ease .2s,top .2s}.burger .bottom{top:1.6em;transition:all .5s ease .1s}.BurgerMenu--active .burger .top{top:.8em;transform:rotate(135deg)}.BurgerMenu--active .burger .middle{transform:rotate(-135deg)}.BurgerMenu--active .burger .bottom{top:.8em;opacity:0;transform:rotate(180deg)}.BurgerMenu--active .links{visibility:visible;opacity:1}.projects{margin-top:4.5em;margin-bottom:3.5em}.projects .project{margin-bottom:2em}.projects a{position:relative;display:block}.projects a:hover .project-hover{background:#224afa;color:#fff;opacity:.9;-webkit-transition:opacity 200ms linear;-moz-transition:opacity 200ms linear;-ms-transition:opacity 200ms linear;-o-transition:opacity 200ms linear;transition:opacity 200ms linear}.projects .image-item{display:block;max-width:100%;height:auto}.projects .project-hover{position:absolute;top:0;left:0;height:100%;width:100%;opacity:0;-webkit-transition:all 200ms linear 300ms;-moz-transition:all 200ms linear 300ms;-ms-transition:all 200ms linear 300ms;-o-transition:all 200ms linear 300ms;transition:all 200ms linear 300ms}.project-caption{padding:1.5em;line-height:1.2}.project-caption .project-title{max-height:3.5em;font-size:2.8em;font-weight:700;overflow:hidden}.project-caption .project-type{margin-top:.5em;font-size:1.4em;text-transform:uppercase}.line::before{content:"";display:block;height:1px;background:#ebebeb;margin-top:4.2em;margin-bottom:4.2em}.bottom-space{margin-bottom:4.2em}.stickyNavigation .nav-container{position:fixed;z-index:10;width:100%;padding-bottom:1.5em;-webkit-box-shadow:0 5px 7px 0 rgba(1,1,1,.1);box-shadow:0 5px 7px 0 rgba(1,1,1,.1);-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s}.stickyNavigation .navbar{height:5em;padding-top:1.5em}.stickyNavigation .logo img{max-height:5em}.stickyNavigation .header{padding-top:9.1em}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,60px,0);transform:translate3d(0,60px,0)}40%{opacity:0}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,60px,0);transform:translate3d(0,60px,0)}40%{opacity:0}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@media only screen and (min-width:22.5625em){.projects{margin-top:7.5em;margin-bottom:6em}}@media only screen and (min-width:27.875em){.project-caption .project-title{font-size:3.5em}.project-caption .project-type{font-size:1.6em}}@media only screen and (min-width:46.3125em){.projects{margin-top:10em}.projects .project{float:left}.projects .short-col{width:32.21238%}.projects .wide-col{width:66.01769%}.projects .project:nth-child(2n){margin-right:1.7699%}.project-caption{padding:3.7em 2.5em 3.7em 3em}.project-caption .project-title{font-size:4em;max-height:4.8em}}@media only screen and (min-width:58.5em){.project-caption .project-title{font-size:4.6em}} \ No newline at end of file
diff --git a/exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.json b/exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.json
new file mode 100644
index 0000000..f8ed2a2
--- /dev/null
+++ b/exampleSite/resources/_gen/assets/scss/scss/app.scss_cf77da1f4ca537338a3eb28dc8a2d96c.json
@@ -0,0 +1 @@
+{"Target":"css/app.min.e830e49d7ab589b0cc0d3552f3e42bef631fc1211d9020a05bad0e083e41a6e2.css","MediaType":"text/css","Data":{"Integrity":"sha256-6DDknXq1ibDMDTVS8+Qr72MfwSEdkCCgW60OCD5BpuI="}} \ No newline at end of file
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index 64ec7cd..f01d93a 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ block "title" . }}{{ with .Title }}{{ . }} - {{ end }}{{ .Site.Title }}{{ end }}</title>
<meta name="description" content="{{ .Description }}">
- {{- if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production") -}}
+ {{- if (eq hugo.Environment "production") | or (eq .Site.Params.env "production") -}}
<meta name="robots" content="index, follow">
{{- else -}}
<meta name="robots" content="noindex, nofollow">
@@ -29,7 +29,7 @@
{{- block "scripts" . -}}
{{- partial "scripts.html" . -}}
{{- end -}}
- {{- if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production") | and .Site.GoogleAnalytics -}}
+ {{- if (eq hugo.Environment "production") | or (eq .Site.Params.env "production") | and .Site.GoogleAnalytics -}}
{{- template "_internal/google_analytics_async.html" . -}}
{{- end -}}
</body>
diff --git a/layouts/partials/head-includes.html b/layouts/partials/head-includes.html
index 5fff50f..d5c872c 100644
--- a/layouts/partials/head-includes.html
+++ b/layouts/partials/head-includes.html
@@ -323,7 +323,12 @@
}
</style>
<noscript id="deferredCss">
- <link rel="stylesheet" href="{{`app.css` | relURL}}">
+ {{$sassOptions := (dict "targetPath" "css/app.css")}}
+ {{$css := resources.Get "scss/app.scss" | toCSS $sassOptions}}
+ {{if eq (hugo.Environment) "production" | or (eq .Site.Params.env "production")}}
+ {{$css = $css | minify | fingerprint}}
+ {{end}}
+ <link rel="stylesheet" href="{{$css.RelPermalink}}">
</noscript>
<script>
document.createElement("picture");
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
index 65b1b92..690d77a 100644
--- a/layouts/partials/scripts.html
+++ b/layouts/partials/scripts.html
@@ -1,4 +1,6 @@
{{- partial "deferred-load-script.html" . -}}
-<script src="{{`vendor.js` | relURL}}"></script>
-<script src="{{`app.js` | relURL}}"></script>
-<script>require('app').init()</script>
+{{$js := resources.Get "js/app.js"}}
+{{if eq (hugo.Environment) "production" | or (eq .Site.Params.env "production")}}
+{{$js = $js | minify | fingerprint}}
+{{end}}
+<script src="{{$js.RelPermalink}}"></script>
diff --git a/static/app.css b/static/app.css
deleted file mode 100644
index 26a5a60..0000000
--- a/static/app.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.burger-wrap{float:right;height:100%}.burger-wrap:before{display:inline-block;vertical-align:middle;content:'';height:100%;width:0}.burger{position:relative;width:2.5em;height:1.8em;display:inline-block;vertical-align:middle;cursor:pointer}.burger>div{position:absolute;left:0;right:0;background:#171616;height:.2em}.burger .top{top:0;transition:transform 0.5s, top 0.2s}.burger .middle{top:.8em;transition:transform 0.5s ease 0.2s, top 0.2s}.burger .bottom{top:1.6em;transition:all 0.5s ease 0.1s}.BurgerMenu--active .burger .top{top:.8em;transform:rotate(135deg)}.BurgerMenu--active .burger .middle{transform:rotate(-135deg)}.BurgerMenu--active .burger .bottom{top:0.8em;opacity:0;transform:rotate(180deg)}.BurgerMenu--active .links{visibility:visible;opacity:1}.projects{margin-top:4.5em;margin-bottom:3.5em}.projects .project{margin-bottom:2em}.projects a{position:relative;display:block}.projects a:hover .project-hover{background:#224afa;color:#fff;opacity:0.9;-webkit-transition:opacity 200ms linear;-moz-transition:opacity 200ms linear;-ms-transition:opacity 200ms linear;-o-transition:opacity 200ms linear;transition:opacity 200ms linear}.projects .image-item{display:block;max-width:100%;height:auto}.projects .project-hover{position:absolute;top:0;left:0;height:100%;width:100%;opacity:0;-webkit-transition:all 200ms linear 300ms;-moz-transition:all 200ms linear 300ms;-ms-transition:all 200ms linear 300ms;-o-transition:all 200ms linear 300ms;transition:all 200ms linear 300ms}.project-caption{padding:1.5em;line-height:1.2}.project-caption .project-title{max-height:3.5em;font-size:2.8em;font-weight:bold;overflow:hidden}.project-caption .project-type{margin-top:.5em;font-size:1.4em;text-transform:uppercase}.line::before{content:"";display:block;height:1px;background:#ebebeb;margin-top:4.2em;margin-bottom:4.2em}.bottom-space{margin-bottom:4.2em}.stickyNavigation .nav-container{position:fixed;z-index:10;width:100%;padding-bottom:1.5em;-webkit-box-shadow:0 5px 7px 0 rgba(1,1,1,0.1);box-shadow:0 5px 7px 0 rgba(1,1,1,0.1);-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:0.3s;animation-duration:0.3s}.stickyNavigation .navbar{height:5em;padding-top:1.5em}.stickyNavigation .logo img{max-height:5em}.stickyNavigation .header{padding-top:9.1em}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0, 60px, 0);transform:translate3d(0, 60px, 0)}40%{opacity:0}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0, 60px, 0);transform:translate3d(0, 60px, 0)}40%{opacity:0}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@media only screen and (min-width: 22.5625em){.projects{margin-top:7.5em;margin-bottom:6em}}@media only screen and (min-width: 27.875em){.project-caption .project-title{font-size:3.5em}.project-caption .project-type{font-size:1.6em}}@media only screen and (min-width: 46.3125em){.projects{margin-top:10em}.projects .project{float:left}.projects .short-col{width:32.21238%}.projects .wide-col{width:66.01769%}.projects .project:nth-child(2n){margin-right:1.7699%}.project-caption{padding:3.7em 2.5em 3.7em 3em}.project-caption .project-title{font-size:4em;max-height:4.8em}}@media only screen and (min-width: 58.5em){.project-caption .project-title{font-size:4.6em}}
-
diff --git a/static/app.js b/static/app.js
deleted file mode 100644
index 45c056c..0000000
--- a/static/app.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e="undefined"==typeof global?self:global;if("function"!=typeof e.require){var n={},r={},t={},i={}.hasOwnProperty,o=/^\.\.?(\/|$)/,a=function(e,n){for(var r,t=[],i=(o.test(n)?e+"/"+n:n).split("/"),a=0,c=i.length;a<c;a++)r=i[a],".."===r?t.pop():"."!==r&&""!==r&&t.push(r);return t.join("/")},c=function(e){return e.split("/").slice(0,-1).join("/")},u=function(n){return function(r){var t=a(c(n),r);return e.require(t,n)}},l=function(e,n){var t=m&&m.createHot(e),i={id:e,exports:{},hot:t};return r[e]=i,n(i.exports,u(e),i),i.exports},s=function(e){return t[e]?s(t[e]):e},d=function(e,n){return s(a(c(e),n))},f=function(e,t){null==t&&(t="/");var o=s(e);if(i.call(r,o))return r[o].exports;if(i.call(n,o))return l(o,n[o]);throw new Error("Cannot find module '"+e+"' from '"+t+"'")};f.alias=function(e,n){t[n]=e};var v=/\.[^.\/]+$/,p=/\/index(\.[^\/]+)?$/,g=function(e){if(v.test(e)){var n=e.replace(v,"");i.call(t,n)&&t[n].replace(v,"")!==n+"/index"||(t[n]=e)}if(p.test(e)){var r=e.replace(p,"");i.call(t,r)||(t[r]=e)}};f.register=f.define=function(e,t){if(e&&"object"==typeof e)for(var o in e)i.call(e,o)&&f.register(o,e[o]);else n[e]=t,delete r[e],g(e)},f.list=function(){var e=[];for(var r in n)i.call(n,r)&&e.push(r);return e};var m=e._hmr&&new e._hmr(d,f,n,r);f._cache=r,f.hmr=m&&m.wrap,f.brunch=!0,e.require=f}}(),function(){"undefined"==typeof window?this:window;require.register("app.js",function(e,n,r){"use strict";n("modernizr");var t={init:function(){this.initBurgerHandler(),this.stickyNavigationHandler();var e=document.querySelectorAll(".project");e.length&&this.initFadeInProjects(e)},initFadeInProjects:function(e){for(var n=0;n<e.length;n++)e[n].classList.add("transparent");var r=function(){for(var n=window.pageYOffset||document.documentElement.scrollTop,r=n+window.innerHeight,t=0;t<e.length;t++){var i=e[t],o=i.getBoundingClientRect().top+n;if(o<=r){var a=i.classList;a.remove("transparent"),a.add("animated"),a.add("fadeInUp")}}};r(),window.addEventListener("scroll",r)},initBurgerHandler:function(){var e=document.querySelector(".nav-container"),n=document.querySelector(".burger");n.addEventListener("click",function(){e.classList.toggle("BurgerMenu--active")})},stickyNavigationHandler:function(){var e=0,n=document.querySelector(".main-container"),r=document.querySelector(".nav-container"),t=function(){var t=window.pageYOffset||document.documentElement.scrollTop,i=t&&t<e;i?n.classList.add("stickyNavigation"):n.classList.remove("stickyNavigation"),t>e&&r.classList.remove("BurgerMenu--active"),e=t};window.addEventListener("scroll",t)}};r.exports=t}),require.register("___globals___",function(e,n,r){})}(),require("___globals___"); \ No newline at end of file
diff --git a/static/vendor.js b/static/vendor.js
deleted file mode 100644
index dea3542..0000000
--- a/static/vendor.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e="undefined"==typeof global?self:global;if("function"!=typeof e.require){var t={},n={},r={},o={}.hasOwnProperty,i=/^\.\.?(\/|$)/,s=function(e,t){for(var n,r=[],o=(i.test(t)?e+"/"+t:t).split("/"),s=0,a=o.length;s<a;s++)n=o[s],".."===n?r.pop():"."!==n&&""!==n&&r.push(n);return r.join("/")},a=function(e){return e.split("/").slice(0,-1).join("/")},l=function(t){return function(n){var r=s(a(t),n);return e.require(r,t)}},u=function(e,t){var r=h&&h.createHot(e),o={id:e,exports:{},hot:r};return n[e]=o,t(o.exports,l(e),o),o.exports},f=function(e){return r[e]?f(r[e]):e},c=function(e,t){return f(s(a(e),t))},d=function(e,r){null==r&&(r="/");var i=f(e);if(o.call(n,i))return n[i].exports;if(o.call(t,i))return u(i,t[i]);throw new Error("Cannot find module '"+e+"' from '"+r+"'")};d.alias=function(e,t){r[t]=e};var p=/\.[^.\/]+$/,m=/\/index(\.[^\/]+)?$/,v=function(e){if(p.test(e)){var t=e.replace(p,"");o.call(r,t)&&r[t].replace(p,"")!==t+"/index"||(r[t]=e)}if(m.test(e)){var n=e.replace(m,"");o.call(r,n)||(r[n]=e)}};d.register=d.define=function(e,r){if(e&&"object"==typeof e)for(var i in e)o.call(e,i)&&d.register(i,e[i]);else t[e]=r,delete n[e],v(e)},d.list=function(){var e=[];for(var n in t)o.call(t,n)&&e.push(n);return e};var h=e._hmr&&new e._hmr(c,d,t,n);d._cache=n,d.hmr=h&&h.wrap,d.brunch=!0,e.require=d}}(),function(){"undefined"==typeof window?this:window;require.register("modernizr.js",function(e,t,n){!function(e,t,n){function r(e,t){return typeof e===t}function o(){var e,t,n,o,i,s,a;for(var l in w)if(w.hasOwnProperty(l)){if(e=[],t=w[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(o=r(t.fn,"function")?t.fn():t.fn,i=0;i<e.length;i++)s=e[i],a=s.split("."),1===a.length?C[a[0]]=o:(!C[a[0]]||C[a[0]]instanceof Boolean||(C[a[0]]=new Boolean(C[a[0]])),C[a[0]][a[1]]=o),_.push((o?"":"no-")+a.join("-"))}}function i(e){var t=x.className,n=C._config.classPrefix||"";if(S&&(t=t.baseVal),C._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}C._config.enableClasses&&(t+=" "+n+e.join(" "+n),S?x.className.baseVal=t:x.className=t)}function s(e,t){if("object"==typeof e)for(var n in e)k(e,n)&&s(n,e[n]);else{e=e.toLowerCase();var r=e.split("."),o=C[r[0]];if(2==r.length&&(o=o[r[1]]),"undefined"!=typeof o)return C;t="function"==typeof t?t():t,1==r.length?C[r[0]]=t:(!C[r[0]]||C[r[0]]instanceof Boolean||(C[r[0]]=new Boolean(C[r[0]])),C[r[0]][r[1]]=t),i([(t&&0!=t?"":"no-")+r.join("-")]),C._trigger(e,t)}return C}function a(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):S?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function l(){var e=t.body;return e||(e=a(S?"svg":"body"),e.fake=!0),e}function u(e,n,r,o){var i,s,u,f,c="modernizr",d=a("div"),p=l();if(parseInt(r,10))for(;r--;)u=a("div"),u.id=o?o[r]:c+(r+1),d.appendChild(u);return i=a("style"),i.type="text/css",i.id="s"+c,(p.fake?p:d).appendChild(i),p.appendChild(d),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(t.createTextNode(e)),d.id=c,p.fake&&(p.style.background="",p.style.overflow="hidden",f=x.style.overflow,x.style.overflow="hidden",x.appendChild(p)),s=n(d,e),p.fake?(p.parentNode.removeChild(p),x.style.overflow=f,x.offsetHeight):d.parentNode.removeChild(d),!!s}function f(e,t){return!!~(""+e).indexOf(t)}function c(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function d(t,n,r){var o;if("getComputedStyle"in e){o=getComputedStyle.call(e,t,n);var i=e.console;if(null!==o)r&&(o=o.getPropertyValue(r));else if(i){var s=i.error?"error":"log";i[s].call(i,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else o=!n&&t.currentStyle&&t.currentStyle[r];return o}function p(t,r){var o=t.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(c(t[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+c(t[o])+":"+r+")");return i=i.join(" or "),u("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"==d(e,null,"position")})}return n}function m(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function v(e,t,o,i){function s(){u&&(delete L.style,delete L.modElem)}if(i=!r(i,"undefined")&&i,!r(o,"undefined")){var l=p(e,o);if(!r(l,"undefined"))return l}for(var u,c,d,v,h,g=["modernizr","tspan","samp"];!L.style&&g.length;)u=!0,L.modElem=a(g.shift()),L.style=L.modElem.style;for(d=e.length,c=0;d>c;c++)if(v=e[c],h=L.style[v],f(v,"-")&&(v=m(v)),L.style[v]!==n){if(i||r(o,"undefined"))return s(),"pfx"!=t||v;try{L.style[v]=o}catch(A){}if(L.style[v]!=h)return s(),"pfx"!=t||v}return s(),!1}function h(e,t){return function(){return e.apply(t,arguments)}}function g(e,t,n){var o;for(var i in e)if(e[i]in t)return n===!1?e[i]:(o=t[e[i]],r(o,"function")?h(o,n||t):o);return!1}function A(e,t,n,o,i){var s=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+j.join(s+" ")+s).split(" ");return r(t,"string")||r(t,"undefined")?v(a,t,o,i):(a=(e+" "+E.join(s+" ")+s).split(" "),g(a,t,n))}function y(e,t,r){return A(e,n,n,t,r)}var w=[],b={_version:"3.5.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){w.push({name:e,fn:t,options:n})},addAsyncTest:function(e){w.push({name:null,fn:e})}},C=function(){};C.prototype=b,C=new C;var _=[],x=t.documentElement,S="svg"===x.nodeName.toLowerCase(),T="Moz O ms Webkit",E=b._config.usePrefixes?T.toLowerCase().split(" "):[];b._domPrefixes=E;var P=b._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];b._prefixes=P;var k;!function(){var e={}.hasOwnProperty;k=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),b._l={},b.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),C.hasOwnProperty(e)&&setTimeout(function(){C._trigger(e,C[e])},0)},b._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e<n.length;e++)(r=n[e])(t)},0),delete this._l[e]}},C._q.push(function(){b.addTest=s});var z=function(){function e(e,t){var o;return!!e&&(t&&"string"!=typeof t||(t=a(t||"div")),e="on"+e,o=e in t,!o&&r&&(t.setAttribute||(t=a("div")),t.setAttribute(e,""),o="function"==typeof t[e],t[e]!==n&&(t[e]=n),t.removeAttribute(e)),o)}var r=!("onblur"in t.documentElement);return e}();b.hasEvent=z;var B=function(){var t=e.matchMedia||e.msMatchMedia;return t?function(e){var n=t(e);return n&&n.matches||!1}:function(t){var n=!1;return u("@media "+t+" { #modernizr { position: absolute; } }",function(t){n="absolute"==(e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle).position}),n}}();b.mq=B;var O=function(e,t){var n=!1,r=a("div"),o=r.style;if(e in o){var i=E.length;for(o[e]=t,n=o[e];i--&&!n;)o[e]="-"+E[i]+"-"+t,n=o[e]}return""===n&&(n=!1),n};b.prefixedCSSValue=O;var j=b._config.usePrefixes?T.split(" "):[];b._cssomPrefixes=j;var q={elem:a("modernizr")};C._q.push(function(){delete q.elem});var L={style:q.elem.style};C._q.unshift(function(){delete L.style}),b.testAllProps=A,b.testAllProps=y,b.testProp=function(e,t,r){return v([e],n,t,r)},b.testStyles=u,C.addTest("customelements","customElements"in e),C.addTest("history",function(){var t=navigator.userAgent;return(-1===t.indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone")||"file:"===location.protocol)&&(e.history&&"pushState"in e.history)}),C.addTest("pointerevents",function(){var e=!1,t=E.length;for(e=C.hasEvent("pointerdown");t--&&!e;)z(E[t]+"pointerdown")&&(e=!0);return e}),C.addTest("postmessage","postMessage"in e),C.addTest("webgl",function(){var t=a("canvas"),n="probablySupportsContext"in t?"probablySupportsContext":"supportsContext";return n in t?t[n]("webgl")||t[n]("experimental-webgl"):"WebGLRenderingContext"in e});var N=!1;try{N="WebSocket"in e&&2===e.WebSocket.CLOSING}catch(R){}C.addTest("websockets",N),C.addTest("cssanimations",y("animationName","a",!0)),function(){C.addTest("csscolumns",function(){var e=!1,t=y("columnCount");try{e=!!t,e&&(e=new Boolean(e))}catch(n){}return e});for(var e,t,n=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],r=0;r<n.length;r++)e=n[r].toLowerCase(),t=y("column"+n[r]),("breakbefore"===e||"breakafter"===e||"breakinside"==e)&&(t=t||y(n[r])),C.addTest("csscolumns."+e,t)}(),C.addTest("flexbox",y("flexBasis","1px",!0)),C.addTest("picture","HTMLPictureElement"in e),C.addAsyncTest(function(){var e,t,n,r=a("img"),o="sizes"in r;!o&&"srcset"in r?(t="data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==",e="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",n=function(){s("sizes",2==r.width)},r.onload=n,r.onerror=n,r.setAttribute("sizes","9px"),r.srcset=e+" 1w,"+t+" 8w",r.src=e):s("sizes",o)}),C.addTest("srcset","srcset"in a("img")),C.addTest("webworkers","Worker"in e),o(),i(_),delete b.addTest,delete b.addAsyncTest;for(var M=0;M<C._q.length;M++)C._q[M]();e.Modernizr=C}(window,document)}),require.register("___globals___",function(e,t,n){})}(),require("___globals___"); \ No newline at end of file
diff --git a/theme.toml b/theme.toml
index bc1b94d..eb9baab 100644
--- a/theme.toml
+++ b/theme.toml
@@ -5,7 +5,7 @@ description = "A simple and responsive theme for your personal website"
homepage = "https://github.com/serg/yourfolio"
tags = ["responsive", "minimal", "simple", "personal", "portfolio"]
features = []
-min_version = "0.38"
+min_version = "0.48"
[author]
name = "Sergey Furtak"