├── Gemfile
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── documentation.md
│ ├── support.md
│ ├── feature_request.md
│ └── bug_report.md
├── PULL_REQUEST_TEMPLATE.md
├── stale.yml
└── CONTRIBUTING.md
├── _sass
├── minimal-mistakes
│ ├── vendor
│ │ ├── susy
│ │ │ ├── _su.scss
│ │ │ ├── _susy.scss
│ │ │ ├── plugins
│ │ │ │ ├── _svg-grid.scss
│ │ │ │ └── svg-grid
│ │ │ │ │ ├── _prefix.scss
│ │ │ │ │ ├── _svg-unprefix.scss
│ │ │ │ │ ├── _svg-settings.scss
│ │ │ │ │ ├── _svg-grid-math.scss
│ │ │ │ │ ├── _svg-api.scss
│ │ │ │ │ └── _svg-utilities.scss
│ │ │ ├── _susy-prefix.scss
│ │ │ └── susy
│ │ │ │ ├── _unprefix.scss
│ │ │ │ ├── _utilities.scss
│ │ │ │ └── _parse.scss
│ │ ├── breakpoint
│ │ │ ├── _no-query.scss
│ │ │ ├── parsers
│ │ │ │ ├── single
│ │ │ │ │ └── _default.scss
│ │ │ │ ├── double
│ │ │ │ │ ├── _default.scss
│ │ │ │ │ ├── _double-string.scss
│ │ │ │ │ └── _default-pair.scss
│ │ │ │ ├── triple
│ │ │ │ │ └── _default.scss
│ │ │ │ ├── _single.scss
│ │ │ │ ├── _triple.scss
│ │ │ │ ├── _resolution.scss
│ │ │ │ ├── _double.scss
│ │ │ │ ├── resolution
│ │ │ │ │ └── _resolution.scss
│ │ │ │ └── _query.scss
│ │ │ ├── _settings.scss
│ │ │ ├── _legacy-settings.scss
│ │ │ ├── _breakpoint.scss
│ │ │ ├── _respond-to.scss
│ │ │ ├── _context.scss
│ │ │ └── _helpers.scss
│ │ └── magnific-popup
│ │ │ └── _settings.scss
│ ├── skins
│ │ ├── _default.scss
│ │ ├── _mint.scss
│ │ ├── _air.scss
│ │ ├── _dirt.scss
│ │ ├── _dark.scss
│ │ ├── _aqua.scss
│ │ ├── _contrast.scss
│ │ ├── _sunrise.scss
│ │ ├── _neon.scss
│ │ └── _plum.scss
│ ├── _animations.scss
│ ├── _tables.scss
│ ├── _footer.scss
│ ├── _masthead.scss
│ ├── _buttons.scss
│ ├── _notices.scss
│ ├── _mixins.scss
│ ├── _search.scss
│ ├── _reset.scss
│ └── _print.scss
└── minimal-mistakes.scss
├── _includes
├── footer
│ └── custom.html
├── analytics-providers
│ ├── custom.html
│ ├── google-universal.html
│ ├── google-gtag.html
│ └── google.html
├── comments-providers
│ ├── custom.html
│ ├── custom_scripts.html
│ ├── facebook.html
│ ├── scripts.html
│ ├── utterances.html
│ ├── disqus.html
│ ├── discourse.html
│ ├── staticman.html
│ └── staticman_v2.html
├── head
│ └── custom.html
├── posts-tag.html
├── posts-category.html
├── page__hero_video.html
├── page__taxonomy.html
├── browser-upgrade.html
├── author-profile-custom-links.html
├── toc
├── figure
├── search
│ ├── lunr-search-scripts.html
│ ├── google-search-scripts.html
│ ├── search_form.html
│ └── algolia-search-scripts.html
├── analytics.html
├── skip-links.html
├── page__date.html
├── documents-collection.html
├── read-time.html
├── sidebar.html
├── post_pagination.html
├── video
├── scripts.html
├── nav_list
├── gallery
├── head.html
├── comment.html
├── footer.html
├── tag-list.html
├── group-by-array
├── category-list.html
├── archive-single.html
├── feature_row
├── social-share.html
├── breadcrumbs.html
├── masthead.html
├── page__hero.html
├── paginator.html
└── toc.html
├── assets
├── images
│ ├── myself.jpg
│ ├── inv-unsplash.jpg
│ ├── nlp-unsplash.jpg
│ └── recsys-unsplash.jpg
├── css
│ └── main.scss
└── js
│ ├── lunr
│ ├── lunr-store.js
│ └── lunr-en.js
│ ├── plugins
│ ├── jquery.greedy-navigation.js
│ └── jquery.fitvids.js
│ └── _main.js
├── _layouts
├── category.html
├── tag.html
├── collection.html
├── home.html
├── archive.html
├── archive-taxonomy.html
├── posts.html
├── splash.html
├── default.html
├── tags.html
├── categories.html
├── search.html
├── single.html
└── compress.html
├── .travis.yml
├── _data
└── navigation.yml
├── .gitignore
├── _pages
├── projects.md
├── prj_recsys_framework.md
├── prj_email_classification.md
├── prj_rotation_investment.md
└── profile.md
├── banner.js
├── LICENSE
├── package.json
├── Rakefile
└── staticman.yml
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 | gemspec
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | custom: https://www.paypal.me/mmistakes
2 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/_su.scss:
--------------------------------------------------------------------------------
1 | // Su
2 | // ==
3 |
4 | @import 'susy/su';
5 |
--------------------------------------------------------------------------------
/_includes/footer/custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/assets/images/myself.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abhimishra91/abhimishra91.github.io/master/assets/images/myself.jpg
--------------------------------------------------------------------------------
/_includes/analytics-providers/custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/_includes/comments-providers/custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/_includes/comments-providers/custom_scripts.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/assets/images/inv-unsplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abhimishra91/abhimishra91.github.io/master/assets/images/inv-unsplash.jpg
--------------------------------------------------------------------------------
/assets/images/nlp-unsplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abhimishra91/abhimishra91.github.io/master/assets/images/nlp-unsplash.jpg
--------------------------------------------------------------------------------
/assets/images/recsys-unsplash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abhimishra91/abhimishra91.github.io/master/assets/images/recsys-unsplash.jpg
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/_susy.scss:
--------------------------------------------------------------------------------
1 | // Susy (Un-Prefixed)
2 | // ==================
3 |
4 | @import 'susy-prefix';
5 | @import 'susy/unprefix';
6 |
--------------------------------------------------------------------------------
/_includes/head/custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss:
--------------------------------------------------------------------------------
1 | // SVG Grid Background
2 | // ===================
3 |
4 | @import 'svg-grid/prefix';
5 | @import 'svg-grid/svg-unprefix';
6 |
--------------------------------------------------------------------------------
/_includes/posts-tag.html:
--------------------------------------------------------------------------------
1 | {%- for post in site.tags[include.taxonomy] -%}
2 | {%- unless post.hidden -%}
3 | {% include archive-single.html %}
4 | {%- endunless -%}
5 | {%- endfor -%}
6 |
--------------------------------------------------------------------------------
/_includes/posts-category.html:
--------------------------------------------------------------------------------
1 | {%- for post in site.categories[include.taxonomy] -%}
2 | {%- unless post.hidden -%}
3 | {% include archive-single.html %}
4 | {%- endunless -%}
5 | {%- endfor -%}
6 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss:
--------------------------------------------------------------------------------
1 | // Prefixed SVG Plugin
2 | // ===================
3 |
4 | @import 'svg-settings';
5 | @import 'svg-utilities';
6 | @import 'svg-grid-math';
7 | @import 'svg-api';
8 |
--------------------------------------------------------------------------------
/_includes/page__hero_video.html:
--------------------------------------------------------------------------------
1 | {% capture video_id %}{{ page.header.video.id }}{% endcapture %}
2 | {% capture video_provider %}{{ page.header.video.provider }}{% endcapture %}
3 |
4 | {% include video id=video_id provider=video_provider %}
5 |
--------------------------------------------------------------------------------
/_layouts/category.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 |
8 | {% include posts-category.html taxonomy=page.taxonomy type=page.entries_layout %}
9 |
10 |
--------------------------------------------------------------------------------
/_includes/page__taxonomy.html:
--------------------------------------------------------------------------------
1 | {% if site.tag_archive.type and page.tags[0] %}
2 | {% include tag-list.html %}
3 | {% endif %}
4 |
5 | {% if site.category_archive.type and page.categories[0] %}
6 | {% include category-list.html %}
7 | {% endif %}
--------------------------------------------------------------------------------
/_layouts/tag.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 |
8 | {% include posts-tag.html taxonomy=page.taxonomy type=page.entries_layout %}
9 |
10 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_default.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Default skin
3 | ========================================================================== */
4 |
5 | // Intentionally left blank
6 |
--------------------------------------------------------------------------------
/_includes/browser-upgrade.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/css/main.scss:
--------------------------------------------------------------------------------
1 | ---
2 | # Only the main Sass file needs front matter (the dashes are enough)
3 | ---
4 |
5 | @charset "utf-8";
6 |
7 | @import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin
8 | @import "minimal-mistakes"; // main partials
--------------------------------------------------------------------------------
/_includes/author-profile-custom-links.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_layouts/collection.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 |
8 | {% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=page.entries_layout %}
9 |
10 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: ruby
2 | cache: bundler
3 | gemfile: docs/Gemfile
4 | script:
5 | - bundle exec jekyll algolia --source docs --destination docs/_site --config docs/_config.yml
6 | branches:
7 | only:
8 | # Change this to gh-pages if you're deploying using the gh-pages branch
9 | - master
10 | rvm:
11 | - 2.4
--------------------------------------------------------------------------------
/_data/navigation.yml:
--------------------------------------------------------------------------------
1 | # main links
2 | main:
3 | - title: "Profile"
4 | url: /index.html/
5 | - title: "Projects"
6 | url: /projects/
7 | # - title: "Sample Posts"
8 | # url: /year-archive/
9 | # - title: "Sample Collections"
10 | # url: /collection-archive/
11 | # - title: "Sitemap"
12 | # url: /sitemap/
--------------------------------------------------------------------------------
/_includes/toc:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_includes/figure:
--------------------------------------------------------------------------------
1 |
2 |
4 | {% if include.caption %}
5 |
6 | {{ include.caption | markdownify | remove: "" | remove: "
" }}
7 |
8 | {% endif %}
9 |
10 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss:
--------------------------------------------------------------------------------
1 | // Susy (Prefixed)
2 | // ===============
3 |
4 | $susy-version: 3;
5 |
6 | @import 'susy/utilities';
7 | @import 'susy/su-validate';
8 | @import 'susy/su-math';
9 | @import 'susy/settings';
10 | @import 'susy/normalize';
11 | @import 'susy/parse';
12 | @import 'susy/syntax-helpers';
13 | @import 'susy/api';
14 |
--------------------------------------------------------------------------------
/_includes/analytics-providers/google-universal.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Documentation"
3 | about: "Found a typo or something that needs clarification?"
4 | ---
5 |
6 |
7 |
8 | ## Motivation
9 |
10 |
11 |
12 |
13 |
14 | ## Suggestion
15 |
16 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-no-query($query) {
2 | @if type-of($query) == 'list' {
3 | $keyword: nth($query, 1);
4 |
5 | @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
6 | @return nth($query, 2);
7 | }
8 | @else {
9 | @return false;
10 | }
11 | }
12 | @else {
13 | @return false;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_animations.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | ANIMATIONS
3 | ========================================================================== */
4 |
5 | @-webkit-keyframes intro {
6 | 0% {
7 | opacity: 0;
8 | }
9 | 100% {
10 | opacity: 1;
11 | }
12 | }
13 |
14 | @keyframes intro {
15 | 0% {
16 | opacity: 0;
17 | }
18 | 100% {
19 | opacity: 1;
20 | }
21 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Vim
2 | *~
3 | *.sw[p_]
4 |
5 | # Sublime Text
6 | *.sublime-project
7 | *.sublime-workspace
8 |
9 | # Ruby Gem
10 | *.gem
11 | .bundle
12 | Gemfile.lock
13 | **/vendor/bundle
14 |
15 | # Node.js and NPM
16 | node_modules
17 | npm-debug.log*
18 | package-lock.json
19 | codekit-config.json
20 |
21 | # macOS
22 | .DS_Store
23 |
24 | # Jekyll generated files
25 | .jekyll-cache
26 | .jekyll-metadata
27 | .sass-cache
28 | _asset_bundler_cache
29 | _site
30 |
--------------------------------------------------------------------------------
/_layouts/home.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 | {{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}
8 |
9 | {% if paginator %}
10 | {% assign posts = paginator.posts %}
11 | {% else %}
12 | {% assign posts = site.posts %}
13 | {% endif %}
14 |
15 | {% for post in posts %}
16 | {% include archive-single.html %}
17 | {% endfor %}
18 |
19 | {% include paginator.html %}
20 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss:
--------------------------------------------------------------------------------
1 | // Unprefix Susy SVG Grid
2 | // ======================
3 |
4 |
5 |
6 | // SVG Grid
7 | // --------
8 | /// Un-prefixed alias for `susy-svg-grid`
9 | ///
10 | /// @group plugin_svg-grid
11 | /// @alias susy-svg-grid
12 | @function svg-grid(
13 | $grid: $susy,
14 | $colors: susy-get('svg-grid-colors'),
15 | $offset: null
16 | ) {
17 | @return susy-svg-grid($grid, $colors, $offset);
18 | }
19 |
--------------------------------------------------------------------------------
/_includes/comments-providers/facebook.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/_includes/search/lunr-search-scripts.html:
--------------------------------------------------------------------------------
1 | {% assign lang = site.locale | slice: 0,2 | default: "en" %}
2 | {% case lang %}
3 | {% when "gr" %}
4 | {% assign lang = "gr" %}
5 | {% else %}
6 | {% assign lang = "en" %}
7 | {% endcase %}
8 |
9 |
10 |
--------------------------------------------------------------------------------
/_pages/projects.md:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /projects/
3 | title: "Projects"
4 | layout: single
5 | author_profile: true
6 | comments: true
7 | ---
8 |
9 | This page contains links to the projects that have done over the course of my professional carrer.
10 |
11 | My Projects are as follows:
12 |
13 | 1. [Email Classification with Deep Learning](/prj_email/)
14 |
15 | 2. [Rotation Investment Stratergy with Machine Learning](/prj_investment/)
16 |
17 | 3. [Recommender System Framework](/prj_recsys/)
18 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-parse-default($feature) {
2 | $default: breakpoint-get('default feature');
3 |
4 | // Set Context
5 | $context-setter: private-breakpoint-set-context($default, $feature);
6 |
7 | @if (breakpoint-get('to ems') == true) and (type-of($feature) == 'number') {
8 | @return '#{$default}: #{breakpoint-to-base-em($feature)}';
9 | }
10 | @else {
11 | @return '#{$default}: #{$feature}';
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/_includes/analytics-providers/google-gtag.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss:
--------------------------------------------------------------------------------
1 | // SVG Settings
2 | // ============
3 |
4 |
5 | // Susy SVG Defaults
6 | // =================
7 | /// This plugin adds the `svg-grid-colors` property
8 | /// and default value to `$_susy-defaults` —
9 | /// you can override that value in `$susy`
10 | /// or any other grid settings map.
11 | /// @group plugin_svg-grid
12 | $_susy-defaults: map-merge((
13 | 'svg-grid-colors': hsla(120, 50%, 50%, 0.5) hsla(120, 50%, 75%, 0.5),
14 | ), $_susy-defaults);
15 |
--------------------------------------------------------------------------------
/_includes/analytics.html:
--------------------------------------------------------------------------------
1 | {% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %}
2 |
3 | {% case site.analytics.provider %}
4 | {% when "google" %}
5 | {% include /analytics-providers/google.html %}
6 | {% when "google-universal" %}
7 | {% include /analytics-providers/google-universal.html %}
8 | {% when "google-gtag" %}
9 | {% include /analytics-providers/google-gtag.html %}
10 | {% when "custom" %}
11 | {% include /analytics-providers/custom.html %}
12 | {% endcase %}
13 |
14 | {% endif %}
--------------------------------------------------------------------------------
/_pages/prj_recsys_framework.md:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /prj_recsys/
3 | title: "Recommendation System Framework"
4 | header:
5 | overlay_image: /assets/images/recsys-unsplash.jpg
6 | caption: "Photo credit: [**Unsplash**](https://unsplash.com)"
7 | excerpt: An End to End Scalable Recommendation System Framework.
8 | layout: single
9 | author_profile: true
10 | comments: true
11 | read_time: true
12 | share: true
13 | related: true
14 | tags:
15 | - Project
16 | - RecSys
17 | - Framework
18 | - MLOps
19 | - Distributed Compute
20 | - Spark
21 | - Ray
22 | ---
--------------------------------------------------------------------------------
/_pages/prj_email_classification.md:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /prj_email/
3 | title: "Email Classification with Deep Learning"
4 | header:
5 | overlay_image: /assets/images/nlp-unsplash.jpg
6 | caption: "Photo credit: [**Unsplash**](https://unsplash.com)"
7 | excerpt: Leveraging Deep Learning to classify emails into different categories and serving the solution as a web service.
8 | layout: single
9 | author_profile: true
10 | comments: true
11 | read_time: true
12 | share: true
13 | related: true
14 | tags:
15 | - Project
16 | - NLP
17 | - Transformers
18 | - Deep Learning
19 | ---
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-parse-double-default($first, $second) {
2 | $feature: '';
3 | $value: '';
4 |
5 | @if type-of($first) == 'string' {
6 | $feature: $first;
7 | $value: $second;
8 | }
9 | @else {
10 | $feature: $second;
11 | $value: $first;
12 | }
13 |
14 | // Set Context
15 | $context-setter: private-breakpoint-set-context($feature, $value);
16 |
17 | @if (breakpoint-get('to ems') == true) {
18 | $value: breakpoint-to-base-em($value);
19 | }
20 |
21 | @return '(#{$feature}: #{$value})'
22 | }
23 |
--------------------------------------------------------------------------------
/_includes/skip-links.html:
--------------------------------------------------------------------------------
1 |
2 | {{ site.data.ui-text[site.locale].skip_links | default: 'Skip links' }}
3 |
8 |
9 |
--------------------------------------------------------------------------------
/_pages/prj_rotation_investment.md:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /prj_investment/
3 | title: "Rotation Investment Stratergy with Machine Learning"
4 | header:
5 | overlay_image: /assets/images/inv-unsplash.jpg
6 | caption: "Photo credit: [**Unsplash**](https://unsplash.com)"
7 | excerpt: Alternative Data and Gradient Boosting Model to develop a robust Investment Stratergy.
8 | layout: single
9 | author_profile: true
10 | comments: true
11 | read_time: true
12 | share: true
13 | related: true
14 | tags:
15 | - Project
16 | - Alternative Data
17 | - Gradient Boosting
18 | - Machine Learning
19 | - Investment
20 | ---
--------------------------------------------------------------------------------
/_includes/page__date.html:
--------------------------------------------------------------------------------
1 | {% if page.last_modified_at %}
2 | {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }} {{ page.last_modified_at | date: "%B %-d, %Y" }}
3 | {% elsif page.date %}
4 | {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }} {{ page.date | date: "%B %-d, %Y" }}
5 | {% endif %}
6 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 | ## Summary
17 |
18 |
21 |
22 | ## Context
23 |
24 |
--------------------------------------------------------------------------------
/_includes/analytics-providers/google.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-parse-triple-default($feature, $first, $second) {
2 |
3 | // Sort into min and max
4 | $min: min($first, $second);
5 | $max: max($first, $second);
6 |
7 | // Set Context
8 | $context-setter: private-breakpoint-set-context(min-#{$feature}, $min);
9 | $context-setter: private-breakpoint-set-context(max-#{$feature}, $max);
10 |
11 | // Make them EMs if need be
12 | @if (breakpoint-get('to ems') == true) {
13 | $min: breakpoint-to-base-em($min);
14 | $max: breakpoint-to-base-em($max);
15 | }
16 |
17 | @return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})';
18 | }
19 |
--------------------------------------------------------------------------------
/banner.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 | const pkg = require("./package.json");
3 | const filename = "assets/js/main.min.js";
4 | const script = fs.readFileSync(filename);
5 | const padStart = str => ("0" + str).slice(-2);
6 | const dateObj = new Date();
7 | const date = `${dateObj.getFullYear()}-${padStart(
8 | dateObj.getMonth() + 1
9 | )}-${padStart(dateObj.getDate())}`;
10 | const banner = `/*!
11 | * Minimal Mistakes Jekyll Theme ${pkg.version} by ${pkg.author}
12 | * Copyright 2013-${dateObj.getFullYear()} Michael Rose - mademistakes.com | @mmistakes
13 | * Licensed under ${pkg.license}
14 | */
15 | `;
16 |
17 | if (script.slice(0, 3) != "/**") {
18 | fs.writeFileSync(filename, banner + script);
19 | }
20 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-parse-double-string($first, $second) {
2 | $feature: '';
3 | $value: '';
4 |
5 | // Test to see which is the feature and which is the value
6 | @if (breakpoint-string-value($first) == true) {
7 | $feature: $first;
8 | $value: $second;
9 | }
10 | @else if (breakpoint-string-value($second) == true) {
11 | $feature: $second;
12 | $value: $first;
13 | }
14 | @else {
15 | @warn "Neither #{$first} nor #{$second} is a valid media query name.";
16 | }
17 |
18 | // Set Context
19 | $context-setter: private-breakpoint-set-context($feature, $value);
20 |
21 | @return '(#{$feature}: #{$value})';
22 | }
--------------------------------------------------------------------------------
/_includes/documents-collection.html:
--------------------------------------------------------------------------------
1 | {% assign entries = site[include.collection] %}
2 |
3 | {% if include.sort_by == 'title' %}
4 | {% if include.sort_order == 'reverse' %}
5 | {% assign entries = entries | sort: 'title' | reverse %}
6 | {% else %}
7 | {% assign entries = entries | sort: 'title' %}
8 | {% endif %}
9 | {% elsif include.sort_by == 'date' %}
10 | {% if include.sort_order == 'reverse' %}
11 | {% assign entries = entries | sort: 'date' | reverse %}
12 | {% else %}
13 | {% assign entries = entries | sort: 'date' %}
14 | {% endif %}
15 | {% endif %}
16 |
17 | {%- for post in entries -%}
18 | {%- unless post.hidden -%}
19 | {% include archive-single.html %}
20 | {%- endunless -%}
21 | {%- endfor -%}
22 |
--------------------------------------------------------------------------------
/_includes/comments-providers/scripts.html:
--------------------------------------------------------------------------------
1 | {% if site.comments.provider and page.comments %}
2 | {% case site.comments.provider %}
3 | {% when "disqus" %}
4 | {% include /comments-providers/disqus.html %}
5 | {% when "discourse" %}
6 | {% include /comments-providers/discourse.html %}
7 | {% when "facebook" %}
8 | {% include /comments-providers/facebook.html %}
9 | {% when "staticman" %}
10 | {% include /comments-providers/staticman.html %}
11 | {% when "staticman_v2" %}
12 | {% include /comments-providers/staticman_v2.html %}
13 | {% when "utterances" %}
14 | {% include /comments-providers/utterances.html %}
15 | {% when "custom" %}
16 | {% include /comments-providers/custom_scripts.html %}
17 | {% endcase %}
18 | {% endif %}
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-parse-default-pair($first, $second) {
2 | $default: breakpoint-get('default pair');
3 | $min: '';
4 | $max: '';
5 |
6 | // Sort into min and max
7 | $min: min($first, $second);
8 | $max: max($first, $second);
9 |
10 | // Set Context
11 | $context-setter: private-breakpoint-set-context(min-#{$default}, $min);
12 | $context-setter: private-breakpoint-set-context(max-#{$default}, $max);
13 |
14 | // Make them EMs if need be
15 | @if (breakpoint-get('to ems') == true) {
16 | $min: breakpoint-to-base-em($min);
17 | $max: breakpoint-to-base-em($max);
18 | }
19 |
20 | @return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})';
21 | }
22 |
--------------------------------------------------------------------------------
/_includes/comments-providers/utterances.html:
--------------------------------------------------------------------------------
1 |
21 |
--------------------------------------------------------------------------------
/_layouts/archive.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
6 | {% include page__hero.html %}
7 | {% elsif page.header.video.id and page.header.video.provider %}
8 | {% include page__hero_video.html %}
9 | {% endif %}
10 |
11 | {% if page.url != "/" and site.breadcrumbs %}
12 | {% unless paginator %}
13 | {% include breadcrumbs.html %}
14 | {% endunless %}
15 | {% endif %}
16 |
17 |
18 | {% include sidebar.html %}
19 |
20 |
21 | {% unless page.header.overlay_color or page.header.overlay_image %}
22 |
{{ page.title }}
23 | {% endunless %}
24 | {{ content }}
25 |
26 |
--------------------------------------------------------------------------------
/_includes/read-time.html:
--------------------------------------------------------------------------------
1 | {% assign words_per_minute = page.words_per_minute | default: site.words_per_minute | default: 200 %}
2 |
3 | {% if post.read_time %}
4 | {% assign words = post.content | strip_html | number_of_words %}
5 | {% elsif page.read_time %}
6 | {% assign words = page.content | strip_html | number_of_words %}
7 | {% endif %}
8 |
9 | {% if words < words_per_minute %}
10 | {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
11 | {% elsif words == words_per_minute %}
12 | 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
13 | {% else %}
14 | {{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
15 | {% endif %}
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/support.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Question"
3 | about: "Having trouble working with the theme?"
4 | ---
5 |
6 |
22 |
23 |
--------------------------------------------------------------------------------
/_includes/sidebar.html:
--------------------------------------------------------------------------------
1 | {% if page.author_profile or layout.author_profile or page.sidebar %}
2 |
19 | {% endif %}
20 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_mint.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Mint skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $background-color: #f3f6f6 !default;
7 | $text-color: #40514e !default;
8 | $muted-text-color: #40514e !default;
9 | $primary-color: #11999e !default;
10 | $border-color: mix(#fff, #40514e, 75%) !default;
11 | $footer-background-color: #30e3ca !default;
12 | $link-color: #11999e !default;
13 | $masthead-link-color: $text-color !default;
14 | $masthead-link-color-hover: $text-color !default;
15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
16 |
17 | .page__footer {
18 | color: #fff !important; // override
19 | }
20 |
21 | .page__footer-follow .social-icons .svg-inline--fa {
22 | color: inherit;
23 | }
24 |
--------------------------------------------------------------------------------
/_includes/comments-providers/disqus.html:
--------------------------------------------------------------------------------
1 | {% if site.comments.disqus.shortname %}
2 |
14 | Please enable JavaScript to view the comments powered by Disqus.
15 | {% endif %}
16 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_air.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Air skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $background-color: #eeeeee !default;
7 | $text-color: #222831 !default;
8 | $muted-text-color: #393e46 !default;
9 | $primary-color: #0092ca !default;
10 | $border-color: mix(#fff, #393e46, 75%) !default;
11 | $footer-background-color: $primary-color !default;
12 | $link-color: #393e46 !default;
13 | $masthead-link-color: $text-color !default;
14 | $masthead-link-color-hover: $text-color !default;
15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
16 |
17 | .page__footer {
18 | color: #fff !important; // override
19 | }
20 |
21 | .page__footer-follow .social-icons .svg-inline--fa {
22 | color: inherit;
23 | }
24 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Import Pieces
3 | //////////////////////////////
4 | @import "single/default";
5 |
6 | @function breakpoint-parse-single($feature, $empty-media, $first) {
7 | $parsed: '';
8 | $leader: '';
9 | // If we're forcing
10 | @if not ($empty-media) or not ($first) {
11 | $leader: 'and ';
12 | }
13 |
14 | // If it's a single feature that can stand alone, we let it
15 | @if (breakpoint-single-string($feature)) {
16 | $parsed: $feature;
17 | // Set Context
18 | $context-setter: private-breakpoint-set-context($feature, $feature);
19 | }
20 | // If it's not a stand alone feature, we pass it off to the default handler.
21 | @else {
22 | $parsed: breakpoint-parse-default($feature);
23 | }
24 |
25 | @return $leader + '(' + $parsed + ')';
26 | }
27 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_tables.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | TABLES
3 | ========================================================================== */
4 |
5 | table {
6 | display: block;
7 | margin-bottom: 1em;
8 | width: 100%;
9 | font-family: $global-font-family;
10 | font-size: $type-size-6;
11 | border-collapse: collapse;
12 | overflow-x: auto;
13 |
14 | & + table {
15 | margin-top: 1em;
16 | }
17 | }
18 |
19 | thead {
20 | background-color: $border-color;
21 | border-bottom: 2px solid mix(#000, $border-color, 25%);
22 | }
23 |
24 | th {
25 | padding: 0.5em;
26 | font-weight: bold;
27 | text-align: left;
28 | }
29 |
30 | td {
31 | padding: 0.5em;
32 | border-bottom: 1px solid mix(#000, $border-color, 25%);
33 | }
34 |
35 | tr,
36 | td,
37 | th {
38 | vertical-align: middle;
39 | }
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Enhancement / Feature Request"
3 | about: "What would make this theme better?"
4 | ---
5 |
6 |
10 |
11 | ## Summary
12 |
13 |
16 |
17 | ## Motivation
18 |
19 |
27 |
28 | ## Drawbacks
29 |
30 |
--------------------------------------------------------------------------------
/_layouts/archive-taxonomy.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | author_profile: false
4 | ---
5 |
6 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
7 | {% include page__hero.html %}
8 | {% elsif page.header.video.id and page.header.video.provider %}
9 | {% include page__hero_video.html %}
10 | {% endif %}
11 |
12 | {% if page.url != "/" and site.breadcrumbs %}
13 | {% unless paginator %}
14 | {% include breadcrumbs.html %}
15 | {% endunless %}
16 | {% endif %}
17 |
18 |
19 | {% include sidebar.html %}
20 |
21 |
22 | {% unless page.header.overlay_color or page.header.overlay_image %}
23 |
{{ page.title }}
24 | {% endunless %}
25 | {% for post in page.posts %}
26 | {% include archive-single.html %}
27 | {% endfor %}
28 |
29 |
30 |
--------------------------------------------------------------------------------
/_includes/comments-providers/discourse.html:
--------------------------------------------------------------------------------
1 | {% if site.comments.discourse.server %}
2 | {% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
3 |
12 | Please enable JavaScript to view the comments powered by Discourse.
13 | {% endif %}
14 |
--------------------------------------------------------------------------------
/_includes/post_pagination.html:
--------------------------------------------------------------------------------
1 | {% if page.previous or page.next %}
2 |
14 | {% endif %}
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Import Pieces
3 | //////////////////////////////
4 | @import "triple/default";
5 |
6 | @function breakpoint-parse-triple($feature, $empty-media, $first) {
7 | $parsed: '';
8 | $leader: '';
9 |
10 | // If we're forcing
11 | @if not ($empty-media) or not ($first) {
12 | $leader: 'and ';
13 | }
14 |
15 | // separate the string features from the value numbers
16 | $string: null;
17 | $numbers: null;
18 | @each $val in $feature {
19 | @if type-of($val) == string {
20 | $string: $val;
21 | }
22 | @else {
23 | @if type-of($numbers) == 'null' {
24 | $numbers: $val;
25 | }
26 | @else {
27 | $numbers: append($numbers, $val);
28 | }
29 | }
30 | }
31 |
32 | $parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2));
33 |
34 | @return $leader + $parsed;
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss:
--------------------------------------------------------------------------------
1 | @import "resolution/resolution";
2 |
3 | @function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) {
4 | $leader: '';
5 | // If we're forcing
6 | @if not ($empty-media) or not ($first) {
7 | $leader: 'and ';
8 | }
9 |
10 | @if breakpoint-get('transform resolutions') and $query-resolution {
11 | $resolutions: breakpoint-make-resolutions($query-resolution);
12 | $length: length($resolutions);
13 | $query-holder: '';
14 |
15 | @for $i from 1 through $length {
16 | $query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}';
17 | @if $i == 1 {
18 | $query-holder: $query;
19 | }
20 | @else {
21 | $query-holder: '#{$query-holder}, #{$query}';
22 | }
23 | }
24 |
25 | @return $query-holder;
26 | }
27 | @else {
28 | // Return with attached resolution
29 | @return $query-print;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/_includes/video:
--------------------------------------------------------------------------------
1 | {% capture video_id %}{{ include.id }}{% endcapture %}
2 | {% capture video_provider %}{{ include.provider }}{% endcapture %}
3 |
4 |
5 |
6 | {% if video_provider == "vimeo" %}
7 |
8 | {% elsif video_provider == "youtube" %}
9 |
10 | {% elsif video_provider == "google-drive" %}
11 |
12 | {% elsif video_provider == "bilibili" %}
13 |
14 | {% endif %}
15 |
16 |
--------------------------------------------------------------------------------
/_includes/search/google-search-scripts.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_includes/scripts.html:
--------------------------------------------------------------------------------
1 | {% if site.footer_scripts %}
2 | {% for script in site.footer_scripts %}
3 |
4 | {% endfor %}
5 | {% else %}
6 |
7 | {% endif %}
8 |
9 | {% if site.search == true or page.layout == "search" %}
10 | {%- assign search_provider = site.search_provider | default: "lunr" -%}
11 | {%- case search_provider -%}
12 | {%- when "lunr" -%}
13 | {% include_cached search/lunr-search-scripts.html %}
14 | {%- when "google" -%}
15 | {% include_cached search/google-search-scripts.html %}
16 | {%- when "algolia" -%}
17 | {% include_cached search/algolia-search-scripts.html %}
18 | {%- endcase -%}
19 | {% endif %}
20 |
21 | {% include analytics.html %}
22 | {% include /comments-providers/scripts.html %}
23 |
24 | {% if site.after_footer_scripts %}
25 | {% for script in site.after_footer_scripts %}
26 |
27 | {% endfor %}
28 | {% endif %}
29 |
--------------------------------------------------------------------------------
/_layouts/posts.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 |
17 |
18 | {% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %}
19 | {% for year in postsByYear %}
20 |
29 | {% endfor %}
30 |
--------------------------------------------------------------------------------
/_layouts/splash.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
6 | {% include page__hero.html %}
7 | {% elsif page.header.video.id and page.header.video.provider %}
8 | {% include page__hero_video.html %}
9 | {% endif %}
10 |
11 |
12 |
13 | {% if page.title %} {% endif %}
14 | {% if page.excerpt %} {% endif %}
15 | {% if page.date %} {% endif %}
16 | {% if page.last_modified_at %} {% endif %}
17 |
18 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/_includes/nav_list:
--------------------------------------------------------------------------------
1 | {% assign navigation = site.data.navigation[include.nav] %}
2 |
3 |
4 | {% if page.sidebar.title %}{{ page.sidebar.title }} {% endif %}
5 |
6 | {{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}
7 |
8 | {% for nav in navigation %}
9 |
10 | {% if nav.url %}
11 | {{ nav.title }}
12 | {% else %}
13 | {{ nav.title }}
14 | {% endif %}
15 |
16 | {% if nav.children != null %}
17 |
22 | {% endif %}
23 |
24 | {% endfor %}
25 |
26 |
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2013-2020 Michael Rose and contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss:
--------------------------------------------------------------------------------
1 | // Unprefix Susy
2 | // =============
3 |
4 |
5 | // Span
6 | // ----
7 | /// Un-prefixed alias for `susy-span`
8 | /// (available by default)
9 | ///
10 | /// @group api
11 | /// @alias susy-span
12 | ///
13 | /// @param {list} $span
14 | /// @param {map} $config [()]
15 | @function span(
16 | $span,
17 | $config: ()
18 | ) {
19 | @return susy-span($span, $config);
20 | }
21 |
22 |
23 | // Gutter
24 | // ------
25 | /// Un-prefixed alias for `susy-gutter`
26 | /// (available by default)
27 | ///
28 | /// @group api
29 | /// @alias susy-gutter
30 | ///
31 | /// @param {integer | list} $context [null] -
32 | /// @param {map} $config [()]
33 | @function gutter(
34 | $context: susy-get('columns'),
35 | $config: ()
36 | ) {
37 | @return susy-gutter($context, $config);
38 | }
39 |
40 |
41 | // Slice
42 | // -----
43 | /// Un-prefixed alias for `susy-slice`
44 | /// (available by default)
45 | ///
46 | /// @group api
47 | /// @alias susy-slice
48 | ///
49 | /// @param {list} $span
50 | /// @param {map} $config [()]
51 | @function slice(
52 | $span,
53 | $config: ()
54 | ) {
55 | @return susy-slice($span, $config);
56 | }
57 |
--------------------------------------------------------------------------------
/_includes/gallery:
--------------------------------------------------------------------------------
1 | {% if include.id %}
2 | {% assign gallery = page[include.id] %}
3 | {% else %}
4 | {% assign gallery = page.gallery %}
5 | {% endif %}
6 |
7 | {% if include.layout %}
8 | {% assign gallery_layout = include.layout %}
9 | {% else %}
10 | {% if gallery.size == 2 %}
11 | {% assign gallery_layout = 'half' %}
12 | {% elsif gallery.size >= 3 %}
13 | {% assign gallery_layout = 'third' %}
14 | {% else %}
15 | {% assign gallery_layout = '' %}
16 | {% endif %}
17 | {% endif %}
18 |
19 |
20 | {% for img in gallery %}
21 | {% if img.url %}
22 |
24 |
26 |
27 | {% else %}
28 |
30 | {% endif %}
31 | {% endfor %}
32 | {% if include.caption %}
33 | {{ include.caption | markdownify | remove: "" | remove: "
" }}
34 | {% endif %}
35 |
36 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_dirt.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Dirt skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $background-color: #f3f3f3 !default;
7 | $text-color: #343434 !default;
8 | $muted-text-color: #8e8b82 !default;
9 | $primary-color: #343434 !default;
10 | $border-color: #e9dcbe !default;
11 | $footer-background-color: #e9dcbe !default;
12 | $link-color: #343434 !default;
13 | $masthead-link-color: $text-color !default;
14 | $masthead-link-color-hover: $text-color !default;
15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
16 |
17 | /* dirt syntax highlighting (base16) */
18 | $base00: #231e18 !default;
19 | $base01: #302b25 !default;
20 | $base02: #48413a !default;
21 | $base03: #9d8b70 !default;
22 | $base04: #b4a490 !default;
23 | $base05: #cabcb1 !default;
24 | $base06: #d7c8bc !default;
25 | $base07: #e4d4c8 !default;
26 | $base08: #d35c5c !default;
27 | $base09: #ca7f32 !default;
28 | $base0a: #e0ac16 !default;
29 | $base0b: #b7ba53 !default;
30 | $base0c: #6eb958 !default;
31 | $base0d: #88a4d3 !default;
32 | $base0e: #bb90e2 !default;
33 | $base0f: #b49368 !default;
34 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # Number of days of inactivity before an issue becomes stale
2 | daysUntilStale: 30
3 | # Number of days of inactivity before a stale issue is closed
4 | daysUntilClose: 7
5 | # Issues with these labels will never be considered stale
6 | exemptLabels:
7 | - "Status: Accepted"
8 | - "Status: Under Consideration"
9 | # Label to use when marking an issue as stale
10 | staleLabel: "Status: Stale"
11 | # Comment to post when marking an issue as stale. Set to `false` to disable
12 | markComment: |
13 | This issue has been automatically marked as stale because it has not had recent activity.
14 |
15 | If this is a **bug** and you can still reproduce this error on the `master` branch, please reply with any additional information you have about it in order to keep the issue open.
16 |
17 | If this is a feature request, please consider whether it can be accomplished in another way. If it cannot, please elaborate on why it is core to this project and why you feel more than 80% of users would find this beneficial.
18 |
19 | This issue will automatically be closed in 7 days if no further activity occurs. Thank you for all your contributions.
20 | # Comment to post when closing a stale issue. Set to `false` to disable
21 | closeComment: false
22 |
--------------------------------------------------------------------------------
/_includes/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% include seo.html %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
17 |
18 |
32 |
33 | {% if site.head_scripts %}
34 | {% for script in site.head_scripts %}
35 |
36 | {% endfor %}
37 | {% endif %}
38 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Import Pieces
3 | //////////////////////////////
4 | @import "double/default-pair";
5 | @import "double/double-string";
6 | @import "double/default";
7 |
8 | @function breakpoint-parse-double($feature, $empty-media, $first) {
9 | $parsed: '';
10 | $leader: '';
11 | // If we're forcing
12 | @if not ($empty-media) or not ($first) {
13 | $leader: 'and ';
14 | }
15 |
16 | $first: nth($feature, 1);
17 | $second: nth($feature, 2);
18 |
19 | // If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number
20 | @if type-of($first) == 'number' and type-of($second) == 'number' {
21 | $parsed: breakpoint-parse-default-pair($first, $second);
22 | }
23 | // If they are both strings, we send it through the string parser
24 | @else if type-of($first) == 'string' and type-of($second) == 'string' {
25 | $parsed: breakpoint-parse-double-string($first, $second);
26 | }
27 | // If it's a string/number pair, we parse it as a normal double
28 | @else {
29 | $parsed: breakpoint-parse-double-default($first, $second);
30 | }
31 |
32 | @return $leader + $parsed;
33 | }
34 |
--------------------------------------------------------------------------------
/_includes/comment.html:
--------------------------------------------------------------------------------
1 |
23 |
--------------------------------------------------------------------------------
/_includes/footer.html:
--------------------------------------------------------------------------------
1 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Having trouble working with the theme? Found a typo in the documentation?
4 | Interested in adding a feature or [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)?
5 | Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new)
6 | or [pull request](https://help.github.com/articles/using-pull-requests/).
7 | If this is your first pull request, it may be helpful to read up on the
8 | [GitHub Flow](https://guides.github.com/introduction/flow/) first.
9 |
10 | Minimal Mistakes has been designed as a base for you to customize and fit your
11 | site's unique needs. Please keep this in mind when requesting features and/or
12 | submitting pull requests. If it's not something that most people will use, I
13 | probably won't consider it. When in doubt ask.
14 |
15 | This goes for author sidebar links and "share button" additions -- I have no
16 | intention of merging in every possibly option, the essentials are there to get
17 | you started :smile:.
18 |
19 | ## Pull Requests
20 |
21 | When submitting a pull request:
22 |
23 | 1. Clone the repo.
24 | 2. Create a branch off of `master` and give it a meaningful name (e.g.
25 | `my-awesome-new-feature`) and describe the feature or fix.
26 | 3. Open a pull request on GitHub.
27 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_dark.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Dark skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $background-color: #252a34 !default;
7 | $text-color: #eaeaea !default;
8 | $primary-color: #00adb5 !default;
9 | $border-color: mix(#fff, $background-color, 20%) !default;
10 | $code-background-color: mix(#000, $background-color, 15%) !default;
11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default;
12 | $form-background-color: mix(#000, $background-color, 15%) !default;
13 | $footer-background-color: mix(#000, $background-color, 30%) !default;
14 | $link-color: mix($primary-color, $text-color, 40%) !default;
15 | $link-color-hover: mix(#fff, $link-color, 25%) !default;
16 | $link-color-visited: mix(#000, $link-color, 25%) !default;
17 | $masthead-link-color: $text-color !default;
18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
20 |
21 | .author__urls.social-icons .svg-inline--fa,
22 | .page__footer-follow .social-icons .svg-inline--fa {
23 | color: inherit;
24 | }
25 |
26 | .ais-search-box .ais-search-box--input {
27 | background-color: $form-background-color;
28 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "minimal-mistakes",
3 | "version": "4.19.3",
4 | "description": "Minimal Mistakes 2 column Jekyll theme.",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/mmistakes/minimal-mistakes.git"
8 | },
9 | "keywords": [
10 | "jekyll",
11 | "theme",
12 | "minimal"
13 | ],
14 | "author": "Michael Rose",
15 | "license": "MIT",
16 | "bugs": {
17 | "url": "https://github.com/mmistakes/minimal-mistakes/issues"
18 | },
19 | "homepage": "https://mmistakes.github.io/minimal-mistakes/",
20 | "engines": {
21 | "node": ">= 0.10.0"
22 | },
23 | "devDependencies": {
24 | "npm-run-all": "^4.1.5",
25 | "onchange": "^6.1.0",
26 | "uglify-js": "^3.8.0"
27 | },
28 | "scripts": {
29 | "uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.4.1.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/plugins/smooth-scroll.js assets/js/plugins/gumshoe.js assets/js/_main.js -c -m -o assets/js/main.min.js",
30 | "add-banner": "node banner.js",
31 | "watch:js": "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js",
32 | "build:js": "npm run uglify && npm run add-banner"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/_includes/tag-list.html:
--------------------------------------------------------------------------------
1 | {% case site.tag_archive.type %}
2 | {% when "liquid" %}
3 | {% assign path_type = "#" %}
4 | {% when "jekyll-archives" %}
5 | {% assign path_type = nil %}
6 | {% endcase %}
7 |
8 | {% if site.tag_archive.path %}
9 | {% comment %}
10 |
11 |
12 | {% endcomment %}
13 | {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}|{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
14 | {% assign tag_hashes = page_tags | split: ',' | sort %}
15 |
16 |
17 | {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }}
18 |
19 | {% for hash in tag_hashes %}
20 | {% assign keyValue = hash | split: '|' %}
21 | {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
22 | {{ tag_word }} {% unless forloop.last %}, {% endunless %}
23 | {% endfor %}
24 |
25 |
26 | {% endif %}
--------------------------------------------------------------------------------
/_includes/group-by-array:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 | {% assign __empty_array = '' | split: ',' %}
10 | {% assign group_names = __empty_array %}
11 | {% assign group_items = __empty_array %}
12 |
13 |
14 | {% assign __names = include.collection | map: include.field %}
15 |
16 |
17 | {% assign __names = __names | join: ',' | join: ',' | split: ',' %}
18 |
19 |
20 | {% assign __names = __names | sort %}
21 | {% for name in __names %}
22 |
23 |
24 | {% unless name == previous %}
25 |
26 |
27 | {% assign group_names = group_names | push: name %}
28 | {% endunless %}
29 |
30 | {% assign previous = name %}
31 | {% endfor %}
32 |
33 |
34 |
35 | {% for name in group_names %}
36 |
37 |
38 | {% assign __item = __empty_array %}
39 | {% for __element in include.collection %}
40 | {% if __element[include.field] contains name %}
41 | {% assign __item = __item | push: __element %}
42 | {% endif %}
43 | {% endfor %}
44 |
45 |
46 | {% assign group_items = group_items | push: __item %}
47 | {% endfor %}
--------------------------------------------------------------------------------
/_layouts/default.html:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 |
4 |
5 |
11 |
12 |
13 | {% include head.html %}
14 | {% include head/custom.html %}
15 |
16 |
17 |
18 | {% include_cached skip-links.html %}
19 | {% include_cached browser-upgrade.html %}
20 | {% include_cached masthead.html %}
21 |
22 |
23 | {{ content }}
24 |
25 |
26 | {% if site.search == true %}
27 |
28 | {% include_cached search/search_form.html %}
29 |
30 | {% endif %}
31 |
32 |
38 |
39 | {% include scripts.html %}
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/_layouts/tags.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 | {% assign tags_max = 0 %}
8 | {% for tag in site.tags %}
9 | {% if tag[1].size > tags_max %}
10 | {% assign tags_max = tag[1].size %}
11 | {% endif %}
12 | {% endfor %}
13 |
14 |
15 | {% for i in (1..tags_max) reversed %}
16 | {% for tag in site.tags %}
17 | {% if tag[1].size == i %}
18 |
19 |
20 | {{ tag[0] }} {{ i }}
21 |
22 |
23 | {% endif %}
24 | {% endfor %}
25 | {% endfor %}
26 |
27 |
28 | {% for i in (1..tags_max) reversed %}
29 | {% for tag in site.tags %}
30 | {% if tag[1].size == i %}
31 |
40 | {% endif %}
41 | {% endfor %}
42 | {% endfor %}
43 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Minimal Mistakes Jekyll Theme 4.19.3 by Michael Rose
3 | * Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes
4 | * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE)
5 | */
6 |
7 | /* Variables */
8 | @import "minimal-mistakes/variables";
9 |
10 | /* Mixins and functions */
11 | @import "minimal-mistakes/vendor/breakpoint/breakpoint";
12 | @include breakpoint-set("to ems", true);
13 | @import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup
14 | @import "minimal-mistakes/vendor/susy/susy";
15 | @import "minimal-mistakes/mixins";
16 |
17 | /* Core CSS */
18 | @import "minimal-mistakes/reset";
19 | @import "minimal-mistakes/base";
20 | @import "minimal-mistakes/forms";
21 | @import "minimal-mistakes/tables";
22 | @import "minimal-mistakes/animations";
23 |
24 | /* Components */
25 | @import "minimal-mistakes/buttons";
26 | @import "minimal-mistakes/notices";
27 | @import "minimal-mistakes/masthead";
28 | @import "minimal-mistakes/navigation";
29 | @import "minimal-mistakes/footer";
30 | @import "minimal-mistakes/search";
31 | @import "minimal-mistakes/syntax";
32 |
33 | /* Utility classes */
34 | @import "minimal-mistakes/utilities";
35 |
36 | /* Layout specific */
37 | @import "minimal-mistakes/page";
38 | @import "minimal-mistakes/archive";
39 | @import "minimal-mistakes/sidebar";
40 | @import "minimal-mistakes/print";
41 |
--------------------------------------------------------------------------------
/_includes/category-list.html:
--------------------------------------------------------------------------------
1 | {% case site.category_archive.type %}
2 | {% when "liquid" %}
3 | {% assign path_type = "#" %}
4 | {% when "jekyll-archives" %}
5 | {% assign path_type = nil %}
6 | {% endcase %}
7 |
8 | {% if site.category_archive.path %}
9 | {% comment %}
10 |
11 |
12 | {% endcomment %}
13 | {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}|{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
14 | {% assign category_hashes = page_categories | split: ',' | sort %}
15 |
16 |
17 | {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }}
18 |
19 | {% for hash in category_hashes %}
20 | {% assign keyValue = hash | split: '|' %}
21 | {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
22 | {{ category_word }} {% unless forloop.last %}, {% endunless %}
23 | {% endfor %}
24 |
25 |
26 | {% endif %}
--------------------------------------------------------------------------------
/_includes/search/search_form.html:
--------------------------------------------------------------------------------
1 |
2 | {%- assign search_provider = site.search_provider | default: "lunr" -%}
3 | {%- case search_provider -%}
4 | {%- when "lunr" -%}
5 |
11 |
12 | {%- when "google" -%}
13 |
19 |
20 |
21 |
22 | {%- when "algolia" -%}
23 |
24 |
25 | {%- endcase -%}
26 |
27 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_aqua.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Aqua skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $gray : #1976d2 !default;
7 | $dark-gray : mix(#000, $gray, 40%) !default;
8 | $darker-gray : mix(#000, $gray, 60%) !default;
9 | $light-gray : mix(#fff, $gray, 50%) !default;
10 | $lighter-gray : mix(#fff, $gray, 90%) !default;
11 |
12 | $body-color : #fff !default;
13 | $background-color : #f0fff0 !default;
14 | $code-background-color : $lighter-gray !default;
15 | $code-background-color-dark : $light-gray !default;
16 | $text-color : $dark-gray !default;
17 | $border-color : $lighter-gray !default;
18 |
19 | $primary-color : $gray !default;
20 | $success-color : #27ae60 !default;
21 | $warning-color : #e67e22 !default;
22 | $danger-color : #c0392b !default;
23 | $info-color : #03a9f4 !default;
24 |
25 | /* links */
26 | $link-color : $info-color !default;
27 | $link-color-hover : mix(#000, $link-color, 25%) !default;
28 | $link-color-visited : mix(#fff, $link-color, 25%) !default;
29 | $masthead-link-color : $primary-color !default;
30 | $masthead-link-color-hover : mix(#000, $primary-color, 25%) !default;
--------------------------------------------------------------------------------
/_layouts/categories.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: archive
3 | ---
4 |
5 | {{ content }}
6 |
7 | {% assign categories_max = 0 %}
8 | {% for category in site.categories %}
9 | {% if category[1].size > categories_max %}
10 | {% assign categories_max = category[1].size %}
11 | {% endif %}
12 | {% endfor %}
13 |
14 |
15 | {% for i in (1..categories_max) reversed %}
16 | {% for category in site.categories %}
17 | {% if category[1].size == i %}
18 |
19 |
20 | {{ category[0] }} {{ i }}
21 |
22 |
23 | {% endif %}
24 | {% endfor %}
25 | {% endfor %}
26 |
27 |
28 | {% for i in (1..categories_max) reversed %}
29 | {% for category in site.categories %}
30 | {% if category[1].size == i %}
31 |
40 | {% endif %}
41 | {% endfor %}
42 | {% endfor %}
43 |
--------------------------------------------------------------------------------
/_includes/archive-single.html:
--------------------------------------------------------------------------------
1 | {% if post.header.teaser %}
2 | {% capture teaser %}{{ post.header.teaser }}{% endcapture %}
3 | {% else %}
4 | {% assign teaser = site.teaser %}
5 | {% endif %}
6 |
7 | {% if post.id %}
8 | {% assign title = post.title | markdownify | remove: "" | remove: "
" %}
9 | {% else %}
10 | {% assign title = post.title %}
11 | {% endif %}
12 |
13 |
14 |
15 | {% if include.type == "grid" and teaser %}
16 |
17 |
18 |
19 | {% endif %}
20 |
21 | {% if post.link %}
22 | {{ title }} Permalink
23 | {% else %}
24 | {{ title }}
25 | {% endif %}
26 |
27 | {% if post.read_time %}
28 | {% include read-time.html %}
29 | {% endif %}
30 | {% if post.excerpt %}{{ post.excerpt | markdownify | strip_html | truncate: 160 }}
{% endif %}
31 |
32 |
33 |
--------------------------------------------------------------------------------
/_includes/feature_row:
--------------------------------------------------------------------------------
1 | {% if include.id %}
2 | {% assign feature_row = page[include.id] %}
3 | {% else %}
4 | {% assign feature_row = page.feature_row %}
5 | {% endif %}
6 |
7 |
8 |
9 | {% for f in feature_row %}
10 |
11 |
12 | {% if f.image_path %}
13 |
14 |
16 | {% if f.image_caption %}
17 |
{{ f.image_caption | markdownify | remove: "" | remove: "
" }}
18 | {% endif %}
19 |
20 | {% endif %}
21 |
22 |
23 | {% if f.title %}
24 |
{{ f.title }}
25 | {% endif %}
26 |
27 | {% if f.excerpt %}
28 |
29 | {{ f.excerpt | markdownify }}
30 |
31 | {% endif %}
32 |
33 | {% if f.url %}
34 |
{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}
35 | {% endif %}
36 |
37 |
38 |
39 | {% endfor %}
40 |
41 |
42 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_contrast.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Contrast skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $text-color: #000 !default;
7 | $muted-text-color: $text-color !default;
8 | $primary-color: #ff0000 !default;
9 | $border-color: mix(#fff, $text-color, 75%) !default;
10 | $footer-background-color: #000 !default;
11 | $link-color: #0000ff !default;
12 | $masthead-link-color: $text-color !default;
13 | $masthead-link-color-hover: $text-color !default;
14 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
15 |
16 | /* contrast syntax highlighting (base16) */
17 | $base00: #000000 !default;
18 | $base01: #242422 !default;
19 | $base02: #484844 !default;
20 | $base03: #6c6c66 !default;
21 | $base04: #918f88 !default;
22 | $base05: #b5b3aa !default;
23 | $base06: #d9d7cc !default;
24 | $base07: #fdfbee !default;
25 | $base08: #ff6c60 !default;
26 | $base09: #e9c062 !default;
27 | $base0a: #ffffb6 !default;
28 | $base0b: #a8ff60 !default;
29 | $base0c: #c6c5fe !default;
30 | $base0d: #96cbfe !default;
31 | $base0e: #ff73fd !default;
32 | $base0f: #b18a3d !default;
33 |
34 | .page__content {
35 | .notice,
36 | .notice--primary,
37 | .notice--info,
38 | .notice--warning,
39 | .notice--success,
40 | .notice--danger {
41 | color: $text-color;
42 | }
43 | }
44 |
45 | .page__footer {
46 | color: #fff !important; // override
47 | }
48 |
49 | .page__footer-follow .social-icons .svg-inline--fa {
50 | color: inherit;
51 | }
52 |
--------------------------------------------------------------------------------
/_includes/social-share.html:
--------------------------------------------------------------------------------
1 |
2 | {% if site.data.ui-text[site.locale].share_on_label %}
3 | {{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}
4 | {% endif %}
5 |
6 |
7 |
8 | Facebook
9 |
10 | LinkedIn
11 |
12 |
--------------------------------------------------------------------------------
/_layouts/search.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
6 | {% include page__hero.html %}
7 | {% endif %}
8 |
9 | {% if page.url != "/" and site.breadcrumbs %}
10 | {% unless paginator %}
11 | {% include breadcrumbs.html %}
12 | {% endunless %}
13 | {% endif %}
14 |
15 |
16 | {% include sidebar.html %}
17 |
18 |
19 | {% unless page.header.overlay_color or page.header.overlay_image %}
20 |
{{ page.title }}
21 | {% endunless %}
22 |
23 | {{ content }}
24 |
25 | {%- assign search_provider = site.search_provider | default: "lunr" -%}
26 | {%- case search_provider -%}
27 | {%- when "lunr" -%}
28 |
29 |
30 | {%- when "google" -%}
31 |
34 |
35 |
36 |
37 | {%- when "algolia" -%}
38 |
39 |
40 | {%- endcase -%}
41 |
42 |
43 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss:
--------------------------------------------------------------------------------
1 | // SVG Grid Math
2 | // =============
3 |
4 |
5 |
6 | // SVG Column Position
7 | // -------------------
8 | /// Determine the proper horizontal position
9 | /// for a column rectangle
10 | ///
11 | /// @access private
12 | ///
13 | /// @param {Integer} $column -
14 | /// 1-indexed column location on the grid
15 | /// @param {Map} $grid -
16 | /// Normalized settings map representing the current grid
17 | ///
18 | /// @return {Length} -
19 | /// Horizontal position of svg column rectangle,
20 | /// as distance from the grid edge
21 | @function _susy-svg-column-position(
22 | $column,
23 | $grid
24 | ) {
25 | $x: $column - 1;
26 |
27 | @if ($x > 0) {
28 | $x: susy-span(first $x wide, $grid);
29 | }
30 |
31 | @return $x;
32 | }
33 |
34 |
35 |
36 | // SVG Offset
37 | // ----------
38 | /// Determine if a grid image needs to be offset,
39 | /// to account for edge gutters.
40 | ///
41 | /// @access private
42 | ///
43 | /// @param {Map} $grid -
44 | /// Normalized settings map representing the current grid
45 | ///
46 | /// @return {Length | null} -
47 | /// Expected distance from container edge to first column,
48 | /// based on spread values and gutter-widths
49 | @function _susy-svg-offset(
50 | $grid
51 | ) {
52 | $columns: su-valid-columns(map-get($grid, 'columns'));
53 | $gutters: su-valid-gutters(map-get($grid, 'gutters'));
54 | $container: su-valid-spread(map-get($grid, 'container-spread')) + 1;
55 |
56 | @if ($container == 0) {
57 | @return null;
58 | }
59 |
60 | $gutter: su-call('su-gutter', $grid);
61 |
62 | @if (type-of($gutter) == 'string') {
63 | @return 'calc(#{$container} * #{$gutter} / 2)';
64 | }
65 |
66 | @return $container * $gutter / 2;
67 | }
68 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_sunrise.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Sunrise skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $dark-gray: #0e2431 !default;
7 | $background-color: #e8d5b7 !default;
8 | $text-color: #000 !default;
9 | $muted-text-color: $dark-gray !default;
10 | $primary-color: #fc3a52 !default;
11 | $border-color: mix(#000, $background-color, 20%) !default;
12 | $code-background-color: mix(#fff, $background-color, 20%) !default;
13 | $code-background-color-dark: mix(#000, $background-color, 10%) !default;
14 | $form-background-color: mix(#fff, $background-color, 15%) !default;
15 | $footer-background-color: #f9b248 !default;
16 | $link-color: mix(#000, $primary-color, 10%) !default;
17 | $link-color-hover: mix(#fff, $link-color, 25%) !default;
18 | $link-color-visited: mix(#000, $link-color, 25%) !default;
19 | $masthead-link-color: $text-color !default;
20 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
21 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
22 |
23 | /* sunrise syntax highlighting (base16) */
24 | $base00: #1d1f21 !default;
25 | $base01: #282a2e !default;
26 | $base02: #373b41 !default;
27 | $base03: #969896 !default;
28 | $base04: #b4b7b4 !default;
29 | $base05: #c5c8c6 !default;
30 | $base06: #e0e0e0 !default;
31 | $base07: #ffffff !default;
32 | $base08: #cc6666 !default;
33 | $base09: #de935f !default;
34 | $base0a: #f0c674 !default;
35 | $base0b: #b5bd68 !default;
36 | $base0c: #8abeb7 !default;
37 | $base0d: #81a2be !default;
38 | $base0e: #b294bb !default;
39 | $base0f: #a3685a !default;
40 |
41 | .author__urls.social-icons .fa,
42 | .page__footer-follow .social-icons .svg-inline--fa {
43 | color: inherit;
44 | }
45 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_footer.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | FOOTER
3 | ========================================================================== */
4 |
5 | .page__footer {
6 | @include clearfix;
7 | float: left;
8 | margin-left: 0;
9 | margin-right: 0;
10 | width: 100%;
11 | clear: both;
12 | margin-top: 3em;
13 | color: $muted-text-color;
14 | -webkit-animation: $intro-transition;
15 | animation: $intro-transition;
16 | -webkit-animation-delay: 0.45s;
17 | animation-delay: 0.45s;
18 | background-color: $footer-background-color;
19 |
20 | footer {
21 | @include clearfix;
22 | margin-left: auto;
23 | margin-right: auto;
24 | margin-top: 2em;
25 | max-width: 100%;
26 | padding: 0 1em 2em;
27 |
28 | @include breakpoint($x-large) {
29 | max-width: $x-large;
30 | }
31 | }
32 |
33 | a {
34 | color: inherit;
35 | text-decoration: none;
36 |
37 | &:hover {
38 | text-decoration: underline;
39 | }
40 | }
41 |
42 | .fas,
43 | .fab,
44 | .far,
45 | .fal {
46 | color: $muted-text-color;
47 | }
48 | }
49 |
50 | .page__footer-copyright {
51 | font-family: $global-font-family;
52 | font-size: $type-size-7;
53 | }
54 |
55 | .page__footer-follow {
56 | ul {
57 | margin: 0;
58 | padding: 0;
59 | list-style-type: none;
60 | }
61 |
62 | li {
63 | display: inline-block;
64 | padding-top: 5px;
65 | padding-bottom: 5px;
66 | font-family: $sans-serif-narrow;
67 | font-size: $type-size-6;
68 | text-transform: uppercase;
69 | }
70 |
71 | li + li:before {
72 | content: "";
73 | padding-right: 5px;
74 | }
75 |
76 | a {
77 | padding-right: 10px;
78 | font-weight: bold;
79 | }
80 |
81 | .social-icons {
82 | a {
83 | white-space: nowrap;
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/_includes/breadcrumbs.html:
--------------------------------------------------------------------------------
1 | {% case site.category_archive.type %}
2 | {% when "liquid" %}
3 | {% assign path_type = "#" %}
4 | {% when "jekyll-archives" %}
5 | {% assign path_type = nil %}
6 | {% endcase %}
7 |
8 | {% if page.collection != 'posts' %}
9 | {% assign path_type = nil %}
10 | {% assign crumb_path = '/' %}
11 | {% else %}
12 | {% assign crumb_path = site.category_archive.path %}
13 | {% endif %}
14 |
15 |
16 |
17 | {% assign crumbs = page.url | split: '/' %}
18 | {% assign i = 1 %}
19 | {% for crumb in crumbs offset: 1 %}
20 | {% if forloop.first %}
21 |
22 | {{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}
23 |
24 |
25 | {{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}
26 | {% endif %}
27 | {% if forloop.last %}
28 | {{ page.title }}
29 | {% else %}
30 | {% assign i = i | plus: 1 %}
31 |
32 | {{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}
33 |
34 |
35 | {{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}
36 | {% endif %}
37 | {% endfor %}
38 |
39 |
40 |
--------------------------------------------------------------------------------
/assets/js/lunr/lunr-store.js:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 | var store = [
6 | {%- for c in site.collections -%}
7 | {%- if forloop.last -%}
8 | {%- assign l = true -%}
9 | {%- endif -%}
10 | {%- assign docs = c.docs | where_exp:'doc','doc.search != false' -%}
11 | {%- for doc in docs -%}
12 | {%- if doc.header.teaser -%}
13 | {%- capture teaser -%}{{ doc.header.teaser }}{%- endcapture -%}
14 | {%- else -%}
15 | {%- assign teaser = site.teaser -%}
16 | {%- endif -%}
17 | {
18 | "title": {{ doc.title | jsonify }},
19 | "excerpt":
20 | {%- if site.search_full_content == true -%}
21 | {{ doc.content | newline_to_br |
22 | replace:" ", " " |
23 | replace:"", " " |
24 | replace:"", " " |
25 | replace:"", " " |
26 | replace:"", " " |
27 | replace:"", " " |
28 | replace:"", " " |
29 | replace:"", " "|
30 | strip_html | strip_newlines | jsonify }},
31 | {%- else -%}
32 | {{ doc.content | newline_to_br |
33 | replace:" ", " " |
34 | replace:"", " " |
35 | replace:"", " " |
36 | replace:"", " " |
37 | replace:"", " " |
38 | replace:"", " " |
39 | replace:"", " " |
40 | replace:"", " "|
41 | strip_html | strip_newlines | truncatewords: 50 | jsonify }},
42 | {%- endif -%}
43 | "categories": {{ doc.categories | jsonify }},
44 | "tags": {{ doc.tags | jsonify }},
45 | "url": {{ doc.url | absolute_url | jsonify }},
46 | "teaser": {{ teaser | absolute_url | jsonify }}
47 | }{%- unless forloop.last and l -%},{%- endunless -%}
48 | {%- endfor -%}
49 | {%- endfor -%}]
50 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss:
--------------------------------------------------------------------------------
1 | @function breakpoint-make-resolutions($resolution) {
2 | $length: length($resolution);
3 |
4 | $output: ();
5 |
6 | @if $length == 2 {
7 | $feature: '';
8 | $value: '';
9 |
10 | // Find which is number
11 | @if type-of(nth($resolution, 1)) == 'number' {
12 | $value: nth($resolution, 1);
13 | }
14 | @else {
15 | $value: nth($resolution, 2);
16 | }
17 |
18 | // Determine min/max/standard
19 | @if index($resolution, 'min-resolution') {
20 | $feature: 'min-';
21 | }
22 | @else if index($resolution, 'max-resolution') {
23 | $feature: 'max-';
24 | }
25 |
26 | $standard: '(#{$feature}resolution: #{$value})';
27 |
28 | // If we're not dealing with dppx,
29 | @if unit($value) != 'dppx' {
30 | $base: 96dpi;
31 | @if unit($value) == 'dpcm' {
32 | $base: 243.84dpcm;
33 | }
34 | // Write out feature tests
35 | $webkit: '';
36 | $moz: '';
37 | $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})';
38 | $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})';
39 | // Append to output
40 | $output: append($output, $standard, space);
41 | $output: append($output, $webkit, space);
42 | $output: append($output, $moz, space);
43 | }
44 | @else {
45 | $webkit: '';
46 | $moz: '';
47 | $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})';
48 | $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})';
49 | $fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})';
50 | // Append to output
51 | $output: append($output, $standard, space);
52 | $output: append($output, $webkit, space);
53 | $output: append($output, $moz, space);
54 | $output: append($output, $fallback, space);
55 | }
56 |
57 | }
58 |
59 | @return $output;
60 | }
61 |
--------------------------------------------------------------------------------
/_includes/search/algolia-search-scripts.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
55 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_masthead.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | MASTHEAD
3 | ========================================================================== */
4 |
5 | .masthead {
6 | position: relative;
7 | border-bottom: 1px solid $border-color;
8 | -webkit-animation: $intro-transition;
9 | animation: $intro-transition;
10 | -webkit-animation-delay: 0.15s;
11 | animation-delay: 0.15s;
12 | z-index: 20;
13 |
14 | &__inner-wrap {
15 | @include clearfix;
16 | margin-left: auto;
17 | margin-right: auto;
18 | padding: 1em;
19 | max-width: 100%;
20 | display: -webkit-box;
21 | display: -ms-flexbox;
22 | display: flex;
23 | -webkit-box-pack: justify;
24 | -ms-flex-pack: justify;
25 | justify-content: space-between;
26 | font-family: $sans-serif-narrow;
27 |
28 | @include breakpoint($x-large) {
29 | max-width: $max-width;
30 | }
31 |
32 | nav {
33 | z-index: 10;
34 | }
35 |
36 | a {
37 | text-decoration: none;
38 | }
39 | }
40 | }
41 |
42 | .site-logo img {
43 | max-height: 2rem;
44 | }
45 |
46 | .site-title {
47 | display: -webkit-box;
48 | display: -ms-flexbox;
49 | display: flex;
50 | -ms-flex-item-align: center;
51 | align-self: center;
52 | font-weight: bold;
53 | // z-index: 20;
54 | }
55 |
56 | .site-subtitle {
57 | display: block;
58 | font-size: $type-size-8;
59 | }
60 |
61 | .masthead__menu {
62 | float: left;
63 | margin-left: 0;
64 | margin-right: 0;
65 | width: 100%;
66 | clear: both;
67 |
68 | .site-nav {
69 | margin-left: 0;
70 |
71 | @include breakpoint($small) {
72 | float: right;
73 | }
74 | }
75 |
76 | ul {
77 | margin: 0;
78 | padding: 0;
79 | clear: both;
80 | list-style-type: none;
81 | }
82 | }
83 |
84 | .masthead__menu-item {
85 | display: block;
86 | list-style-type: none;
87 | white-space: nowrap;
88 |
89 | &--lg {
90 | padding-right: 2em;
91 | font-weight: 700;
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/_includes/comments-providers/staticman.html:
--------------------------------------------------------------------------------
1 | {% if site.repository and site.staticman.branch %}
2 |
40 | {% endif %}
41 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_neon.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Neon skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $background-color: #141010 !default;
7 | $text-color: #fff6fb !default;
8 | $primary-color: #f21368 !default;
9 | $border-color: mix(#fff, $background-color, 20%) !default;
10 | $code-background-color: mix(#000, $background-color, 15%) !default;
11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default;
12 | $form-background-color: mix(#000, $background-color, 15%) !default;
13 | $footer-background-color: mix($primary-color, #000, 10%) !default;
14 | $link-color: $primary-color !default;
15 | $link-color-hover: mix(#fff, $link-color, 25%) !default;
16 | $link-color-visited: mix(#000, $link-color, 25%) !default;
17 | $masthead-link-color: $text-color !default;
18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
20 |
21 | /* neon syntax highlighting (base16) */
22 | $base00: #ffffff !default;
23 | $base01: #e0e0e0 !default;
24 | $base02: #d0d0d0 !default;
25 | $base03: #b0b0b0 !default;
26 | $base04: #000000 !default;
27 | $base05: #101010 !default;
28 | $base06: #151515 !default;
29 | $base07: #202020 !default;
30 | $base08: #ff0086 !default;
31 | $base09: #fd8900 !default;
32 | $base0a: #aba800 !default;
33 | $base0b: #00c918 !default;
34 | $base0c: #1faaaa !default;
35 | $base0d: #3777e6 !default;
36 | $base0e: #ad00a1 !default;
37 | $base0f: #cc6633 !default;
38 |
39 | .author__urls.social-icons .svg-inline--fa,
40 | .page__footer-follow .social-icons .svg-inline--fa {
41 | color: inherit;
42 | }
43 |
44 | /* next/previous buttons */
45 | .pagination--pager {
46 | color: $text-color;
47 | background-color: $primary-color;
48 | border-color: transparent;
49 |
50 | &:visited {
51 | color: $text-color;
52 | }
53 | }
54 |
55 | .ais-search-box .ais-search-box--input {
56 | background-color: $form-background-color;
57 | }
--------------------------------------------------------------------------------
/_includes/comments-providers/staticman_v2.html:
--------------------------------------------------------------------------------
1 | {% if site.repository and site.comments.staticman.branch %}
2 |
40 | {% endif %}
41 |
--------------------------------------------------------------------------------
/_includes/masthead.html:
--------------------------------------------------------------------------------
1 | {% capture logo_path %}{{ site.logo }}{% endcapture %}
2 |
3 |
38 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/skins/_plum.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Plum skin
3 | ========================================================================== */
4 |
5 | /* Colors */
6 | $background-color: #521477 !default;
7 | $text-color: #fffd86 !default;
8 | $primary-color: #c327ab !default;
9 | $border-color: mix(#fff, $background-color, 20%) !default;
10 | $code-background-color: mix(#000, $background-color, 15%) !default;
11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default;
12 | $form-background-color: mix(#000, $background-color, 15%) !default;
13 | $footer-background-color: mix(#000, $background-color, 25%) !default;
14 | $link-color: $primary-color !default;
15 | $link-color-hover: mix(#fff, $link-color, 25%) !default;
16 | $link-color-visited: mix(#000, $link-color, 25%) !default;
17 | $masthead-link-color: $text-color !default;
18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
20 |
21 | /* plum syntax highlighting (base16) */
22 | $base00: #ffffff !default;
23 | $base01: #e0e0e0 !default;
24 | $base02: #d0d0d0 !default;
25 | $base03: #b0b0b0 !default;
26 | $base04: #000000 !default;
27 | $base05: #101010 !default;
28 | $base06: #151515 !default;
29 | $base07: #202020 !default;
30 | $base08: #ff0086 !default;
31 | $base09: #fd8900 !default;
32 | $base0a: #aba800 !default;
33 | $base0b: #00c918 !default;
34 | $base0c: #1faaaa !default;
35 | $base0d: #3777e6 !default;
36 | $base0e: #ad00a1 !default;
37 | $base0f: #cc6633 !default;
38 |
39 | .author__urls.social-icons .svg-inline--fa,
40 | .page__footer-follow .social-icons .svg-inline--fa {
41 | color: inherit;
42 | }
43 |
44 | .page__content {
45 | a,
46 | a:visited {
47 | color: inherit;
48 | }
49 | }
50 |
51 | /* next/previous buttons */
52 | .pagination--pager {
53 | color: $text-color;
54 | background-color: $primary-color;
55 | border-color: transparent;
56 |
57 | &:visited {
58 | color: $text-color;
59 | }
60 | }
61 |
62 | .ais-search-box .ais-search-box--input {
63 | background-color: $form-background-color;
64 | }
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_settings.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Has Setting
3 | //////////////////////////////
4 | @function breakpoint-has($setting) {
5 | @if map-has-key($breakpoint, $setting) {
6 | @return true;
7 | }
8 | @else {
9 | @return false;
10 | }
11 | }
12 |
13 | //////////////////////////////
14 | // Get Settings
15 | //////////////////////////////
16 | @function breakpoint-get($setting) {
17 | @if breakpoint-has($setting) {
18 | @return map-get($breakpoint, $setting);
19 | }
20 | @else {
21 | @return map-get($Breakpoint-Settings, $setting);
22 | }
23 | }
24 |
25 | //////////////////////////////
26 | // Set Settings
27 | //////////////////////////////
28 | @function breakpoint-set($setting, $value) {
29 | @if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null {
30 | @warn "Words in Breakpoint settings should be separated by spaces, not dashes or underscores. Please replace dashes and underscores between words with spaces. Settings will not work as expected until changed.";
31 | }
32 | $breakpoint: map-merge($breakpoint, ($setting: $value)) !global;
33 | @return true;
34 | }
35 |
36 | @mixin breakpoint-change($setting, $value) {
37 | $breakpoint-change: breakpoint-set($setting, $value);
38 | }
39 |
40 | @mixin breakpoint-set($setting, $value) {
41 | @include breakpoint-change($setting, $value);
42 | }
43 |
44 | @mixin bkpt-change($setting, $value) {
45 | @include breakpoint-change($setting, $value);
46 | }
47 | @mixin bkpt-set($setting, $value) {
48 | @include breakpoint-change($setting, $value);
49 | }
50 |
51 | //////////////////////////////
52 | // Remove Setting
53 | //////////////////////////////
54 | @function breakpoint-reset($settings...) {
55 | @if length($settings) == 1 {
56 | $settings: nth($settings, 1);
57 | }
58 |
59 | @each $setting in $settings {
60 | $breakpoint: map-remove($breakpoint, $setting) !global;
61 | }
62 | @return true;
63 | }
64 |
65 | @mixin breakpoint-reset($settings...) {
66 | $breakpoint-reset: breakpoint-reset($settings);
67 | }
68 |
69 | @mixin bkpt-reset($settings...) {
70 | $breakpoint-reset: breakpoint-reset($settings);
71 | }
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | require "bundler/gem_tasks"
2 | require "jekyll"
3 | require "listen"
4 |
5 | def listen_ignore_paths(base, options)
6 | [
7 | /_config\.ya?ml/,
8 | /_site/,
9 | /\.jekyll-metadata/
10 | ]
11 | end
12 |
13 | def listen_handler(base, options)
14 | site = Jekyll::Site.new(options)
15 | Jekyll::Command.process_site(site)
16 | proc do |modified, added, removed|
17 | t = Time.now
18 | c = modified + added + removed
19 | n = c.length
20 | relative_paths = c.map{ |p| Pathname.new(p).relative_path_from(base).to_s }
21 | print Jekyll.logger.message("Regenerating:", "#{relative_paths.join(", ")} changed... ")
22 | begin
23 | Jekyll::Command.process_site(site)
24 | puts "regenerated in #{Time.now - t} seconds."
25 | rescue => e
26 | puts "error:"
27 | Jekyll.logger.warn "Error:", e.message
28 | Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information."
29 | end
30 | end
31 | end
32 |
33 | task :preview do
34 | base = Pathname.new('.').expand_path
35 | options = {
36 | "source" => base.join('test').to_s,
37 | "destination" => base.join('test/_site').to_s,
38 | "force_polling" => false,
39 | "serving" => true,
40 | "theme" => "minimal-mistakes-jekyll"
41 | }
42 |
43 | options = Jekyll.configuration(options)
44 |
45 | ENV["LISTEN_GEM_DEBUGGING"] = "1"
46 | listener = Listen.to(
47 | base.join("_data"),
48 | base.join("_includes"),
49 | base.join("_layouts"),
50 | base.join("_sass"),
51 | base.join("assets"),
52 | options["source"],
53 | :ignore => listen_ignore_paths(base, options),
54 | :force_polling => options['force_polling'],
55 | &(listen_handler(base, options))
56 | )
57 |
58 | begin
59 | listener.start
60 | Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'"
61 |
62 | unless options['serving']
63 | trap("INT") do
64 | listener.stop
65 | puts " Halting auto-regeneration."
66 | exit 0
67 | end
68 |
69 | loop { sleep 1000 }
70 | end
71 | rescue ThreadError
72 | # You pressed Ctrl-C, oh my!
73 | end
74 |
75 | Jekyll::Commands::Serve.process(options)
76 | end
77 |
--------------------------------------------------------------------------------
/assets/js/plugins/jquery.greedy-navigation.js:
--------------------------------------------------------------------------------
1 | /*
2 | GreedyNav.js - http://lukejacksonn.com/actuate
3 | Licensed under the MIT license - http://opensource.org/licenses/MIT
4 | Copyright (c) 2015 Luke Jackson
5 | */
6 |
7 | $(function() {
8 |
9 | var $btn = $("nav.greedy-nav .greedy-nav__toggle");
10 | var $vlinks = $("nav.greedy-nav .visible-links");
11 | var $hlinks = $("nav.greedy-nav .hidden-links");
12 |
13 | var numOfItems = 0;
14 | var totalSpace = 0;
15 | var closingTime = 1000;
16 | var breakWidths = [];
17 |
18 | // Get initial state
19 | $vlinks.children().outerWidth(function(i, w) {
20 | totalSpace += w;
21 | numOfItems += 1;
22 | breakWidths.push(totalSpace);
23 | });
24 |
25 | var availableSpace, numOfVisibleItems, requiredSpace, timer;
26 |
27 | function check() {
28 |
29 | // Get instant state
30 | availableSpace = $vlinks.width() - 10;
31 | numOfVisibleItems = $vlinks.children().length;
32 | requiredSpace = breakWidths[numOfVisibleItems - 1];
33 |
34 | // There is not enought space
35 | if (requiredSpace > availableSpace) {
36 | $vlinks.children().last().prependTo($hlinks);
37 | numOfVisibleItems -= 1;
38 | check();
39 | // There is more than enough space
40 | } else if (availableSpace > breakWidths[numOfVisibleItems]) {
41 | $hlinks.children().first().appendTo($vlinks);
42 | numOfVisibleItems += 1;
43 | check();
44 | }
45 | // Update the button accordingly
46 | $btn.attr("count", numOfItems - numOfVisibleItems);
47 | if (numOfVisibleItems === numOfItems) {
48 | $btn.addClass('hidden');
49 | } else $btn.removeClass('hidden');
50 | }
51 |
52 | // Window listeners
53 | $(window).resize(function() {
54 | check();
55 | });
56 |
57 | $btn.on('click', function() {
58 | $hlinks.toggleClass('hidden');
59 | clearTimeout(timer);
60 | });
61 |
62 | $hlinks.on('mouseleave', function() {
63 | // Mouse has left, start the timer
64 | timer = setTimeout(function() {
65 | $hlinks.addClass('hidden');
66 | }, closingTime);
67 | }).on('mouseenter', function() {
68 | // Mouse is back, cancel the timer
69 | clearTimeout(timer);
70 | })
71 |
72 | check();
73 |
74 | });
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_buttons.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | BUTTONS
3 | ========================================================================== */
4 |
5 | /*
6 | Default button
7 | ========================================================================== */
8 |
9 | .btn {
10 | /* default */
11 | display: inline-block;
12 | margin-bottom: 0.25em;
13 | padding: 0.5em 1em;
14 | font-family: $sans-serif;
15 | font-size: $type-size-6;
16 | font-weight: bold;
17 | text-align: center;
18 | text-decoration: none;
19 | border-width: 0;
20 | border-radius: $border-radius;
21 | cursor: pointer;
22 |
23 | .icon {
24 | margin-right: 0.5em;
25 | }
26 |
27 | .icon + .hidden {
28 | margin-left: -0.5em; /* override for hidden text*/
29 | }
30 |
31 | /* button colors */
32 | $buttoncolors:
33 | (primary, $primary-color),
34 | (inverse, #fff),
35 | (light-outline, transparent),
36 | (success, $success-color),
37 | (warning, $warning-color),
38 | (danger, $danger-color),
39 | (info, $info-color),
40 | (facebook, $facebook-color),
41 | (twitter, $twitter-color),
42 | (linkedin, $linkedin-color);
43 |
44 | @each $buttoncolor, $color in $buttoncolors {
45 | &--#{$buttoncolor} {
46 | @include yiq-contrasted($color);
47 | @if ($buttoncolor == inverse) {
48 | border: 1px solid $border-color;
49 | }
50 | @if ($buttoncolor == light-outline) {
51 | border: 1px solid #fff;
52 | }
53 |
54 | &:visited {
55 | @include yiq-contrasted($color);
56 | }
57 |
58 | &:hover {
59 | @include yiq-contrasted(mix(#000, $color, 20%));
60 | }
61 | }
62 | }
63 |
64 | /* fills width of parent container */
65 | &--block {
66 | display: block;
67 | width: 100%;
68 |
69 | + .btn--block {
70 | margin-top: 0.25em;
71 | }
72 | }
73 |
74 | /* disabled */
75 | &--disabled {
76 | pointer-events: none;
77 | cursor: not-allowed;
78 | filter: alpha(opacity=65);
79 | box-shadow: none;
80 | opacity: 0.65;
81 | }
82 |
83 | /* extra large button */
84 | &--x-large {
85 | font-size: $type-size-4;
86 | }
87 |
88 | /* large button */
89 | &--large {
90 | font-size: $type-size-5;
91 | }
92 |
93 | /* small button */
94 | &--small {
95 | font-size: $type-size-7;
96 | }
97 | }
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_notices.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | NOTICE TEXT BLOCKS
3 | ========================================================================== */
4 |
5 | /**
6 | * Default Kramdown usage (no indents!):
7 | *
8 | * #### Headline for the Notice
9 | * Text for the notice
10 | *
11 | */
12 |
13 | @mixin notice($notice-color) {
14 | margin: 2em 0 !important; /* override*/
15 | padding: 1em;
16 | color: $dark-gray;
17 | font-family: $global-font-family;
18 | font-size: $type-size-6 !important;
19 | text-indent: initial; /* override*/
20 | background-color: mix(#fff, $notice-color, 90%);
21 | border-radius: $border-radius;
22 | box-shadow: 0 1px 1px rgba($notice-color, 0.25);
23 |
24 | h4 {
25 | margin-top: 0 !important; /* override*/
26 | margin-bottom: 0.75em;
27 | }
28 |
29 | @at-root .page__content #{&} h4 {
30 | /* using at-root to override .page-content h4 font size*/
31 | margin-bottom: 0;
32 | font-size: 1em;
33 | }
34 |
35 | p {
36 | &:last-child {
37 | margin-bottom: 0 !important; /* override*/
38 | }
39 | }
40 |
41 | h4 + p {
42 | /* remove space above paragraphs that appear directly after notice headline*/
43 | margin-top: 0;
44 | padding-top: 0;
45 | }
46 |
47 | a {
48 | color: $notice-color;
49 |
50 | &:hover {
51 | color: mix(#000, $notice-color, 40%);
52 | }
53 | }
54 |
55 | code {
56 | background-color: mix(#fff, $notice-color, 95%)
57 | }
58 |
59 | pre code {
60 | background-color: inherit;
61 | }
62 |
63 | ul {
64 | &:last-child {
65 | margin-bottom: 0; /* override*/
66 | }
67 | }
68 | }
69 |
70 | /* Default notice */
71 |
72 | .notice {
73 | @include notice($light-gray);
74 | }
75 |
76 | /* Primary notice */
77 |
78 | .notice--primary {
79 | @include notice($primary-color);
80 | }
81 |
82 | /* Info notice */
83 |
84 | .notice--info {
85 | @include notice($info-color);
86 | }
87 |
88 | /* Warning notice */
89 |
90 | .notice--warning {
91 | @include notice($warning-color);
92 | }
93 |
94 | /* Success notice */
95 |
96 | .notice--success {
97 | @include notice($success-color);
98 | }
99 |
100 | /* Danger notice */
101 |
102 | .notice--danger {
103 | @include notice($danger-color);
104 | }
105 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_mixins.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | MIXINS
3 | ========================================================================== */
4 |
5 | %tab-focus {
6 | /* Default*/
7 | outline: thin dotted $focus-color;
8 | /* Webkit*/
9 | outline: 5px auto $focus-color;
10 | outline-offset: -2px;
11 | }
12 |
13 | /*
14 | em function
15 | ========================================================================== */
16 |
17 | @function em($target, $context: $doc-font-size) {
18 | @return ($target / $context) * 1em;
19 | }
20 |
21 |
22 | /*
23 | Bourbon clearfix
24 | ========================================================================== */
25 |
26 | /*
27 | * Provides an easy way to include a clearfix for containing floats.
28 | * link http://cssmojo.com/latest_new_clearfix_so_far/
29 | *
30 | * example scss - Usage
31 | *
32 | * .element {
33 | * @include clearfix;
34 | * }
35 | *
36 | * example css - CSS Output
37 | *
38 | * .element::after {
39 | * clear: both;
40 | * content: "";
41 | * display: table;
42 | * }
43 | */
44 |
45 | @mixin clearfix {
46 | clear: both;
47 |
48 | &::after {
49 | clear: both;
50 | content: "";
51 | display: table;
52 | }
53 | }
54 |
55 | /*
56 | Compass YIQ Color Contrast
57 | https://github.com/easy-designs/yiq-color-contrast
58 | ========================================================================== */
59 |
60 | @function yiq-is-light(
61 | $color,
62 | $threshold: $yiq-contrasted-threshold
63 | ) {
64 | $red: red($color);
65 | $green: green($color);
66 | $blue: blue($color);
67 |
68 | $yiq: (($red*299)+($green*587)+($blue*114))/1000;
69 |
70 | @if $yiq-debug { @debug $yiq, $threshold; }
71 |
72 | @return if($yiq >= $threshold, true, false);
73 | }
74 |
75 | @function yiq-contrast-color(
76 | $color,
77 | $dark: $yiq-contrasted-dark-default,
78 | $light: $yiq-contrasted-light-default,
79 | $threshold: $yiq-contrasted-threshold
80 | ) {
81 | @return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default);
82 | }
83 |
84 | @mixin yiq-contrasted(
85 | $background-color,
86 | $dark: $yiq-contrasted-dark-default,
87 | $light: $yiq-contrasted-light-default,
88 | $threshold: $yiq-contrasted-threshold
89 | ) {
90 | background-color: $background-color;
91 | color: yiq-contrast-color($background-color, $dark, $light, $threshold);
92 | }
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Bug Report"
3 | about: "Is something not working as expected?"
4 | ---
5 |
6 |
19 |
20 | ## Environment
21 |
22 |
31 |
32 | - Minimal Mistakes version:
33 | - Ruby gem or remote theme version:
34 | - Jekyll version:
35 | - Git repository URL:
36 | - GitHub Pages hosted (if yes provide URL to site):
37 | - Operating system:
38 |
39 | ## Expected behavior
40 |
41 |
45 |
46 | ## Steps to reproduce the behavior
47 |
48 |
62 |
63 | ## Other
64 |
65 |
69 |
--------------------------------------------------------------------------------
/assets/js/lunr/lunr-en.js:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 | var idx = lunr(function () {
6 | this.field('title')
7 | this.field('excerpt')
8 | this.field('categories')
9 | this.field('tags')
10 | this.ref('id')
11 |
12 | this.pipeline.remove(lunr.trimmer)
13 |
14 | for (var item in store) {
15 | this.add({
16 | title: store[item].title,
17 | excerpt: store[item].excerpt,
18 | categories: store[item].categories,
19 | tags: store[item].tags,
20 | id: item
21 | })
22 | }
23 | });
24 |
25 | $(document).ready(function() {
26 | $('input#search').on('keyup', function () {
27 | var resultdiv = $('#results');
28 | var query = $(this).val().toLowerCase();
29 | var result =
30 | idx.query(function (q) {
31 | query.split(lunr.tokenizer.separator).forEach(function (term) {
32 | q.term(term, { boost: 100 })
33 | if(query.lastIndexOf(" ") != query.length-1){
34 | q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 })
35 | }
36 | if (term != ""){
37 | q.term(term, { usePipeline: false, editDistance: 1, boost: 1 })
38 | }
39 | })
40 | });
41 | resultdiv.empty();
42 | resultdiv.prepend(''+result.length+' {{ site.data.ui-text[site.locale].results_found | default: "Result(s) found" }}
');
43 | for (var item in result) {
44 | var ref = result[item].ref;
45 | if(store[ref].teaser){
46 | var searchitem =
47 | ''+
48 | '
'+
49 | ''+
52 | ''+
53 | '
'+
54 | '
'+
55 | ''+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...
'+
56 | ' '+
57 | '
';
58 | }
59 | else{
60 | var searchitem =
61 | ''+
62 | '
'+
63 | ''+
66 | ''+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...
'+
67 | ' '+
68 | '
';
69 | }
70 | resultdiv.append(searchitem);
71 | }
72 | });
73 | });
74 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss:
--------------------------------------------------------------------------------
1 | @mixin legacy-settings-warning {
2 | $legacyVars: (
3 | 'default-media': 'default media',
4 | 'default-feature': 'default feature',
5 | 'force-media-all': 'force all media type',
6 | 'to-ems': 'to ems',
7 | 'resolutions': 'transform resolutions',
8 | 'no-queries': 'no queries',
9 | 'no-query-fallbacks': 'no query fallbacks',
10 | 'base-font-size': 'base font size',
11 | 'legacy-syntax': 'legacy syntax'
12 | );
13 |
14 | @each $legacy, $new in $legacyVars {
15 | @if global-variable-exists('breakpoint-' + $legacy) {
16 | @warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release."
17 | }
18 | };
19 |
20 | //////////////////////////////
21 | // Hand correct each setting
22 | //////////////////////////////
23 | @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {
24 | @include breakpoint-set('default media', $breakpoint-default-media);
25 | }
26 | @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {
27 | @include breakpoint-set('default feature', $breakpoint-default-feature);
28 | }
29 | @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {
30 | @include breakpoint-set('force all media type', $breakpoint-force-media-all);
31 | }
32 | @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {
33 | @include breakpoint-set('to ems', $breakpoint-to-ems);
34 | }
35 | @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {
36 | @include breakpoint-set('transform resolutions', $breakpoint-resolutions);
37 | }
38 | @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {
39 | @include breakpoint-set('no queries', $breakpoint-no-queries);
40 | }
41 | @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {
42 | @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);
43 | }
44 | @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {
45 | @include breakpoint-set('base font size', $breakpoint-base-font-size);
46 | }
47 | @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {
48 | @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);
49 | }
50 | }
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_search.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | SEARCH
3 | ========================================================================== */
4 |
5 | .layout--search {
6 | .archive__item-teaser {
7 | margin-bottom: 0.25em;
8 | }
9 | }
10 |
11 | .search__toggle {
12 | margin-left: 1rem;
13 | margin-right: 1rem;
14 | height: $nav-toggle-height;
15 | border: 0;
16 | outline: none;
17 | color: $primary-color;
18 | background-color: transparent;
19 | cursor: pointer;
20 | -webkit-transition: 0.2s;
21 | transition: 0.2s;
22 |
23 | &:hover {
24 | color: mix(#000, $primary-color, 25%);
25 | }
26 | }
27 |
28 | .search-icon {
29 | width: 100%;
30 | height: 100%;
31 | }
32 |
33 | .search-content {
34 | display: none;
35 | visibility: hidden;
36 | padding-top: 1em;
37 | padding-bottom: 1em;
38 |
39 | &__inner-wrap {
40 | width: 100%;
41 | margin-left: auto;
42 | margin-right: auto;
43 | padding-left: 1em;
44 | padding-right: 1em;
45 | -webkit-animation: $intro-transition;
46 | animation: $intro-transition;
47 | -webkit-animation-delay: 0.15s;
48 | animation-delay: 0.15s;
49 |
50 | @include breakpoint($x-large) {
51 | max-width: $max-width;
52 | }
53 |
54 | }
55 |
56 | &__form {
57 | background-color: transparent;
58 | }
59 |
60 | .search-input {
61 | display: block;
62 | margin-bottom: 0;
63 | padding: 0;
64 | border: none;
65 | outline: none;
66 | box-shadow: none;
67 | background-color: transparent;
68 | font-size: $type-size-3;
69 |
70 | @include breakpoint($large) {
71 | font-size: $type-size-2;
72 | }
73 |
74 | @include breakpoint($x-large) {
75 | font-size: $type-size-1;
76 | }
77 | }
78 |
79 | &.is--visible {
80 | display: block;
81 | visibility: visible;
82 |
83 | &::after {
84 | content: "";
85 | display: block;
86 | }
87 | }
88 |
89 | .results__found {
90 | margin-top: 0.5em;
91 | font-size: $type-size-6;
92 | }
93 |
94 | .archive__item {
95 | margin-bottom: 2em;
96 |
97 | @include breakpoint($large) {
98 | width: 75%;
99 | }
100 |
101 | @include breakpoint($x-large) {
102 | width: 50%;
103 | }
104 | }
105 |
106 | .archive__item-title {
107 | margin-top: 0;
108 | }
109 |
110 | .archive__item-excerpt {
111 | margin-bottom: 0;
112 | }
113 | }
114 |
115 | /* Algolia search */
116 |
117 | .ais-search-box {
118 | max-width: 100% !important;
119 | margin-bottom: 2em;
120 | }
121 |
122 | .archive__item-title .ais-Highlight {
123 | color: $primary-color;
124 | font-style: normal;
125 | text-decoration: underline;
126 | }
127 |
128 | .archive__item-excerpt .ais-Highlight {
129 | color: $primary-color;
130 | font-style: normal;
131 | font-weight: bold;
132 | }
133 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss:
--------------------------------------------------------------------------------
1 | ////////////////////////
2 | // Settings //
3 | ////////////////////////
4 |
5 | // overlay
6 | $mfp-overlay-color: #000; // Color of overlay screen
7 | $mfp-overlay-opacity: 0.8; // Opacity of overlay screen
8 | $mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6); // Shadow on image or iframe
9 |
10 | // spacing
11 | $mfp-popup-padding-left: 8px; // Padding from left and from right side
12 | $mfp-popup-padding-left-mobile: 6px; // Same as above, but is applied when width of window is less than 800px
13 |
14 | $mfp-z-index-base: 1040; // Base z-index of popup
15 |
16 | // controls
17 | $mfp-include-arrows: true; // Include styles for nav arrows
18 | $mfp-controls-opacity: 1; // Opacity of controls
19 | $mfp-controls-color: #fff; // Color of controls
20 | $mfp-controls-border-color: #fff; // Border color of controls
21 | $mfp-inner-close-icon-color: #fff; // Color of close button when inside
22 | $mfp-controls-text-color: #ccc; // Color of preloader and "1 of X" indicator
23 | $mfp-controls-text-color-hover: #fff; // Hover color of preloader and "1 of X" indicator
24 | $mfp-IE7support: true; // Very basic IE7 support
25 |
26 | // Iframe-type options
27 | $mfp-include-iframe-type: true; // Enable Iframe-type popups
28 | $mfp-iframe-padding-top: 40px; // Iframe padding top
29 | $mfp-iframe-background: #000; // Background color of iframes
30 | $mfp-iframe-max-width: 900px; // Maximum width of iframes
31 | $mfp-iframe-ratio: 9/16; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.)
32 |
33 | // Image-type options
34 | $mfp-include-image-type: true; // Enable Image-type popups
35 | $mfp-image-background: #444 !default;
36 | $mfp-image-padding-top: 40px; // Image padding top
37 | $mfp-image-padding-bottom: 40px; // Image padding bottom
38 | $mfp-include-mobile-layout-for-image: true; // Removes paddings from top and bottom
39 |
40 | // Image caption options
41 | $mfp-caption-title-color: #f3f3f3; // Caption title color
42 | $mfp-caption-subtitle-color: #bdbdbd; // Caption subtitle color
43 | .mfp-counter { font-family: $serif; } // Caption font family
44 |
45 | // A11y
46 | $mfp-use-visuallyhidden: false;
--------------------------------------------------------------------------------
/_includes/page__hero.html:
--------------------------------------------------------------------------------
1 | {% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %}
2 |
3 | {% if page.header.overlay_filter contains "rgba" %}
4 | {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
5 | {% elsif page.header.overlay_filter %}
6 | {% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
7 | {% endif %}
8 |
9 | {% if page.header.image_description %}
10 | {% assign image_description = page.header.image_description %}
11 | {% else %}
12 | {% assign image_description = page.title %}
13 | {% endif %}
14 |
15 | {% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
16 |
17 |
54 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Default Variables
3 | //////////////////////////////
4 | $Breakpoint-Settings: (
5 | 'default media': all,
6 | 'default feature': min-width,
7 | 'default pair': width,
8 |
9 | 'force all media type': false,
10 | 'to ems': false,
11 | 'transform resolutions': true,
12 |
13 | 'no queries': false,
14 | 'no query fallbacks': false,
15 |
16 | 'base font size': 16px,
17 |
18 | 'legacy syntax': false
19 | );
20 |
21 | $breakpoint: () !default;
22 |
23 | //////////////////////////////
24 | // Imports
25 | //////////////////////////////
26 | @import "settings";
27 | @import "context";
28 | @import "helpers";
29 | @import "parsers";
30 | @import "no-query";
31 |
32 | @import "respond-to";
33 |
34 | @import "legacy-settings";
35 |
36 | //////////////////////////////
37 | // Breakpoint Mixin
38 | //////////////////////////////
39 |
40 | @mixin breakpoint($query, $no-query: false) {
41 | @include legacy-settings-warning;
42 |
43 | // Reset contexts
44 | @include private-breakpoint-reset-contexts();
45 |
46 | $breakpoint: breakpoint($query, false);
47 |
48 | $query-string: map-get($breakpoint, 'query');
49 | $query-fallback: map-get($breakpoint, 'fallback');
50 |
51 | $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global;
52 | $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global;
53 |
54 | // Allow for an as-needed override or usage of no query fallback.
55 | @if $no-query != false {
56 | $query-fallback: $no-query;
57 | }
58 |
59 | @if $query-fallback != false {
60 | $context-setter: private-breakpoint-set-context('no-query', $query-fallback);
61 | }
62 |
63 | // Print Out Query String
64 | @if not breakpoint-get('no queries') {
65 | @media #{$query-string} {
66 | @content;
67 | }
68 | }
69 |
70 | @if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true {
71 |
72 | $type: type-of(breakpoint-get('no query fallbacks'));
73 | $print: false;
74 |
75 | @if ($type == 'bool') {
76 | $print: true;
77 | }
78 | @else if ($type == 'string') {
79 | @if $query-fallback == breakpoint-get('no query fallbacks') {
80 | $print: true;
81 | }
82 | }
83 | @else if ($type == 'list') {
84 | @each $wrapper in breakpoint-get('no query fallbacks') {
85 | @if $query-fallback == $wrapper {
86 | $print: true;
87 | }
88 | }
89 | }
90 |
91 | // Write Fallback
92 | @if ($query-fallback != false) and ($print == true) {
93 | $type-fallback: type-of($query-fallback);
94 |
95 | @if ($type-fallback != 'bool') {
96 | #{$query-fallback} & {
97 | @content;
98 | }
99 | }
100 | @else {
101 | @content;
102 | }
103 | }
104 | }
105 |
106 | @include private-breakpoint-reset-contexts();
107 | }
108 |
109 |
110 | @mixin mq($query, $no-query: false) {
111 | @include breakpoint($query, $no-query) {
112 | @content;
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss:
--------------------------------------------------------------------------------
1 | ////////////////////////
2 | // Default the Breakpoints variable
3 | ////////////////////////
4 | $breakpoints: () !default;
5 | $BREAKPOINTS: () !default;
6 |
7 | ////////////////////////
8 | // Respond-to API Mixin
9 | ////////////////////////
10 | @mixin respond-to($context, $no-query: false) {
11 | @if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 {
12 | @warn "In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release.";
13 | $BREAKPOINTS: $breakpoints !global;
14 | $breakpoints: () !global;
15 | }
16 |
17 | @if type-of($BREAKPOINTS) != 'map' {
18 | // Just in case someone writes gibberish to the $breakpoints variable.
19 | @warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable.";
20 | @content;
21 | }
22 | @else if map-has-key($BREAKPOINTS, $context) {
23 | @include breakpoint(map-get($BREAKPOINTS, $context), $no-query) {
24 | @content;
25 | }
26 | }
27 | @else if not map-has-key($BREAKPOINTS, $context) {
28 | @warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`";
29 | @content;
30 | }
31 | @else {
32 | @warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`";
33 | @content;
34 | }
35 | }
36 |
37 | //////////////////////////////
38 | // Add Breakpoint to Breakpoints
39 | // TODO: Remove function in next release
40 | //////////////////////////////
41 | @function add-breakpoint($name, $bkpt, $overwrite: false) {
42 | $output: ($name: $bkpt);
43 |
44 | @if length($breakpoints) == 0 {
45 | @return $output;
46 | }
47 | @else {
48 | @if map-has-key($breakpoints, $name) and $overwrite != true {
49 | @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
50 | @return $breakpoints;
51 | }
52 | @else if not map-has-key($breakpoints, $name) or $overwrite == true {
53 | @return map-merge($breakpoints, $output);
54 | }
55 | }
56 | }
57 |
58 | @mixin add-breakpoint($name, $bkpt, $overwrite: false) {
59 | $output: ($name: $bkpt);
60 |
61 | @if length($BREAKPOINTS) == 0 {
62 | $BREAKPOINTS: $output !global;
63 | }
64 | @else {
65 | @if map-has-key($BREAKPOINTS, $name) and $overwrite != true {
66 | @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.";
67 | $BREAKPOINTS: $BREAKPOINTS !global;
68 | }
69 | @else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true {
70 | $BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global;
71 | }
72 | }
73 | }
74 |
75 | @function get-breakpoint($name: false) {
76 | @if $name == false {
77 | @return $BREAKPOINTS;
78 | }
79 | @else {
80 | @return map-get($BREAKPOINTS, $name);
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/_pages/profile.md:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /index.html/
3 | title: "Hi there, I am Abhishek (Abby)"
4 | layout: single
5 | author_profile: true
6 | comments: true
7 | ---
8 | ### I am Senior Data Scientist based out of Singapore with a passion for problem solving and leveraging technology to add Buisness value. 👋
9 | #### Outside coding i enjoy Reading Manga and Cooking.
10 | #### Learning and working on Projects to keep myself updated with the latest in domain of Machine Learning and Natural Language Processing.
11 |
12 | As part of my current role as a Senior Data Scientist i spend time working with Data at peta-byte scale to identify patterns, generate predictions, recommendations and next best actions to enhance cusotmer experince and enhance the business value of our services offered to clients.
13 |
14 | My prior role gave me experince to identify and execute on opportunities to streamline business processes and enhancing core products by leveraging on new technologies and innovation such as Machine Learning, Cloud Native and RPA.
15 |
16 | Prior experience as a Project Manager and Client Relationship Manager for trade processing projects.
17 |
18 | Some Quick Bytes:
19 | - 👷 Sr Data Scientist
20 | * Product Recommendation framework for Millions of Customers. **_Peta-Byte Data_**, **_Distributed Compute: Spark, Ray_**, **_Transformers_**
21 | * Fraud Detection and Anti Phishing Solution for real time transaction screening and validation. **_Stream Processing_**, **_Deep Learning_**
22 | * Investment Strategy developed using Alternative Data and Machine Learning
23 | - 🔭 In my free time I’m currently working on ...NLP Projects such as:
24 | * [Transformer Tutorials](https://github.com/abhimishra91/transformers-tutorials): Notebooks to fine tune Transformers
25 | * [Project Insight](https://github.com/abhimishra91/insight): **NLP as a Service**
26 | - 🌱 I’m currently improving on ...C, Python: FastAI, Pytorch, TensorFlow, Streamlit, FastAPI, Transformers
27 | - 👯 I’m looking to collaborate on ...
28 | * [Transformer Tutorials](https://github.com/abhimishra91/transformers-tutorials)
29 | * [Project Insight](https://github.com/abhimishra91/insight) or any such project.
30 | - 👍 I’m certified as ...
31 | * AWS Solutions Architect Associate
32 | * PRINCE2 Practioner
33 | - 💬 Ask me about ...Anything
34 | - 😄 Pronouns: ... He/Him
35 | - ⚡ Fun fact: ... Big Time Manga Reader and Enjoy Cooking new dishes.
36 |
37 | ### Skills
38 | #### Language and Packages
39 |
40 |
41 | #### Deployment
42 |
43 |
44 | [](https://github.com/anuraghazra/github-readme-stats)
45 |
--------------------------------------------------------------------------------
/assets/js/plugins/jquery.fitvids.js:
--------------------------------------------------------------------------------
1 | /*jshint browser:true */
2 | /*!
3 | * FitVids 1.1
4 | *
5 | * Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
6 | * Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
7 | * Released under the WTFPL license - http://sam.zoy.org/wtfpl/
8 | *
9 | */
10 |
11 | ;(function( $ ){
12 |
13 | 'use strict';
14 |
15 | $.fn.fitVids = function( options ) {
16 | var settings = {
17 | customSelector: null,
18 | ignore: null
19 | };
20 |
21 | if(!document.getElementById('fit-vids-style')) {
22 | // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
23 | var head = document.head || document.getElementsByTagName('head')[0];
24 | var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
25 | var div = document.createElement("div");
26 | div.innerHTML = 'x
';
27 | head.appendChild(div.childNodes[1]);
28 | }
29 |
30 | if ( options ) {
31 | $.extend( settings, options );
32 | }
33 |
34 | return this.each(function(){
35 | var selectors = [
36 | 'iframe[src*="player.vimeo.com"]',
37 | 'iframe[src*="youtube.com"]',
38 | 'iframe[src*="youtube-nocookie.com"]',
39 | 'iframe[src*="kickstarter.com"][src*="video.html"]',
40 | 'object',
41 | 'embed'
42 | ];
43 |
44 | if (settings.customSelector) {
45 | selectors.push(settings.customSelector);
46 | }
47 |
48 | var ignoreList = '.fitvidsignore';
49 |
50 | if(settings.ignore) {
51 | ignoreList = ignoreList + ', ' + settings.ignore;
52 | }
53 |
54 | var $allVideos = $(this).find(selectors.join(','));
55 | $allVideos = $allVideos.not('object object'); // SwfObj conflict patch
56 | $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
57 |
58 | $allVideos.each(function(count){
59 | var $this = $(this);
60 | if($this.parents(ignoreList).length > 0) {
61 | return; // Disable FitVids on this video.
62 | }
63 | if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
64 | if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
65 | {
66 | $this.attr('height', 9);
67 | $this.attr('width', 16);
68 | }
69 | var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
70 | width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
71 | aspectRatio = height / width;
72 | if(!$this.attr('id')){
73 | var videoID = 'fitvid' + count;
74 | $this.attr('id', videoID);
75 | }
76 | $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
77 | $this.removeAttr('height').removeAttr('width');
78 | });
79 | });
80 | };
81 | // Works with either jQuery or Zepto
82 | })( window.jQuery || window.Zepto );
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_context.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Private Breakpoint Variables
3 | //////////////////////////////
4 | $private-breakpoint-context-holder: ();
5 | $private-breakpoint-query-count: 0 !default;
6 |
7 | //////////////////////////////
8 | // Breakpoint Has Context
9 | // Returns whether or not you are inside a Breakpoint query
10 | //////////////////////////////
11 | @function breakpoint-has-context() {
12 | @if length($private-breakpoint-query-count) {
13 | @return true;
14 | }
15 | @else {
16 | @return false;
17 | }
18 | }
19 |
20 | //////////////////////////////
21 | // Breakpoint Get Context
22 | // $feature: Input feature to get it's current MQ context. Returns false if no context
23 | //////////////////////////////
24 | @function breakpoint-get-context($feature) {
25 | @if map-has-key($private-breakpoint-context-holder, $feature) {
26 | $get: map-get($private-breakpoint-context-holder, $feature);
27 | // Special handling of no-query from get side so /false/ prepends aren't returned
28 | @if $feature == 'no-query' {
29 | @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false {
30 | $get: nth($get, length($get));
31 | }
32 | }
33 | @return $get;
34 | }
35 | @else {
36 | @if breakpoint-has-context() and $feature == 'media' {
37 | @return breakpoint-get('default media');
38 | }
39 | @else {
40 | @return false;
41 | }
42 | }
43 | }
44 |
45 | //////////////////////////////
46 | // Private function to set context
47 | //////////////////////////////
48 | @function private-breakpoint-set-context($feature, $value) {
49 | @if $value == 'monochrome' {
50 | $feature: 'monochrome';
51 | }
52 |
53 | $current: map-get($private-breakpoint-context-holder, $feature);
54 | @if $current and length($current) == $private-breakpoint-query-count {
55 | @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`";
56 | }
57 |
58 | @if not map-has-key($private-breakpoint-context-holder, $feature) {
59 | $v-holder: ();
60 | @for $i from 1 to $private-breakpoint-query-count {
61 | @if $feature == 'media' {
62 | $v-holder: append($v-holder, breakpoint-get('default media'));
63 | }
64 | @else {
65 | $v-holder: append($v-holder, false);
66 | }
67 | }
68 | $v-holder: append($v-holder, $value);
69 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
70 | }
71 | @else {
72 | $v-holder: map-get($private-breakpoint-context-holder, $feature);
73 | $length: length($v-holder);
74 | @for $i from $length to $private-breakpoint-query-count - 1 {
75 | @if $feature == 'media' {
76 | $v-holder: append($v-holder, breakpoint-get('default media'));
77 | }
78 | @else {
79 | $v-holder: append($v-holder, false);
80 | }
81 | }
82 | $v-holder: append($v-holder, $value);
83 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
84 | }
85 |
86 | @return true;
87 | }
88 |
89 | //////////////////////////////
90 | // Private function to reset context
91 | //////////////////////////////
92 | @mixin private-breakpoint-reset-contexts {
93 | $private-breakpoint-context-holder: () !global;
94 | $private-breakpoint-query-count: 0 !global;
95 | }
--------------------------------------------------------------------------------
/_includes/paginator.html:
--------------------------------------------------------------------------------
1 | {% if paginator.total_pages > 1 %}
2 |
69 | {% endif %}
70 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss:
--------------------------------------------------------------------------------
1 | /// Plugin: SVG Grid Image
2 | /// ======================
3 | /// @group plugin_svg-grid
4 | /// @see susy-svg-grid
5 |
6 |
7 |
8 | /// ## Overview
9 | /// If you want to generate svg-backgrounds
10 | /// for help visualizing and debugging your grids,
11 | /// import the SVG Grid Plugin.
12 | ///
13 | /// The plugin adds `svg-grid-colors` setting
14 | /// to your global defaults,
15 | /// which you can override in `$susy`.
16 | /// It also provides you with a new function,
17 | /// `susy-svg-grid()`,
18 | /// which will return inline svg for use in
19 | /// backgrounds or generated content.
20 | ///
21 | /// This function come with an unprefixed alias by default,
22 | /// using the `svg-grid` import.
23 | /// If you only only want prefixed versions of the API,
24 | /// import the `svg-grid/prefix` partial instead.
25 | ///
26 | /// @group plugin_svg-grid
27 | ///
28 | /// @example scss - importing the plugin
29 | /// // The full path to import Susy will depend on your setup…
30 | ///
31 | /// // unprefixed
32 | /// @import 'plugins/svg-grid';
33 | ///
34 | /// // prefixed
35 | /// @import 'plugins/svg-grid/prefix';
36 | ///
37 | /// @example scss - generating background grids
38 | /// .grid {
39 | /// background: susy-svg-grid() no-repeat scroll;
40 | /// }
41 |
42 |
43 |
44 | // SVG Grid
45 | // --------
46 | /// Return inline svg-data in to display the grid.
47 | ///
48 | /// @group plugin_svg-grid
49 | ///
50 | /// @param {Map | List} $grid [$susy] -
51 | /// Map or shorthand defining the current grid
52 | /// @param {Color | List | null} $colors [null] -
53 | /// Column color, or list of colors for column-gradient,
54 | /// used to override the global `svg-grid-colors` setting
55 | /// @param {Length | null} $offset [null] -
56 | /// Manually override the default grid-image offset,
57 | /// to account for grid edges
58 | ///
59 | /// @return {String} -
60 | /// CSS inline-data SVG string, in `url()` format,
61 | /// for use in image or content properties
62 | /// @example scss
63 | /// .grid {
64 | /// background: susy-svg-grid() no-repeat scroll;
65 | /// }
66 | @function susy-svg-grid(
67 | $grid: $susy,
68 | $colors: null,
69 | $offset: null
70 | ) {
71 | // Grid parsing & normalizing
72 | $grid: susy-compile($grid, $context-only: true);
73 |
74 | // Color and gradient handling
75 | $gradient: '';
76 |
77 | @if (not $colors) {
78 | $colors: susy-get('svg-grid-colors');
79 | }
80 |
81 | @if length($colors) > 1 {
82 | $gradient: _susy-svg-gradient($colors);
83 | $colors: 'url(%23susy-svg-gradient)';
84 | } @else {
85 | $colors: _susy-svg-color($colors);
86 | }
87 |
88 | // Get a default image-width
89 | $span: (
90 | 'span': map-get($grid, 'columns'),
91 | 'spread': map-get($grid, 'container-spread'),
92 | );
93 | $span: map-merge($grid, $span);
94 | $image-width: su-call('su-span', $span);
95 | $image-width: if((type-of($image-width) == 'number'), $image-width, 100%);
96 |
97 | // SVG construction
98 | $columns: map-get($grid, 'columns');
99 | $offset: $offset or _susy-svg-offset($grid);
100 |
101 | $attrs: 'fill="#{$colors}" width="#{$image-width}"';
102 | $svg: 'data:image/svg+xml,';
103 | $svg: $svg + '%3Csvg xmlns="http://www.w3.org/2000/svg" #{$attrs} %3E';
104 | $svg: $svg + $gradient;
105 |
106 | @for $column from 1 through length($columns) {
107 | $width: susy-span(1 narrow at $column, $grid);
108 | $x: _susy-svg-column-position($column, $grid);
109 |
110 | $svg: $svg + _susy-svg-rect($x, $width, $offset);
111 | }
112 |
113 | @return url('#{$svg}%3C/svg%3E');
114 | }
115 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss:
--------------------------------------------------------------------------------
1 | // SVG Utilities
2 | // =============
3 |
4 |
5 |
6 | // SVG Validate Units
7 | // ------------------
8 | /// Make sure a length is supported in svg
9 | ///
10 | /// @access private
11 | ///
12 | /// @param {Length} $length -
13 | /// The length to validate
14 | /// @param {String} $name [null] -
15 | /// Optional name of length origin,
16 | /// for error reporting
17 | ///
18 | /// @return {Length} -
19 | /// An svg-validated length, or comparable valid length
20 | @function _susy-svg-validate-units(
21 | $length,
22 | $name: null
23 | ) {
24 | $_svg-units: ('em', 'ex', 'px', 'pt', 'pc', 'cm', 'mm', 'in', '%');
25 | $string: type-of($length) == 'string';
26 |
27 | @if ($length == 0) or ($string) or index($_svg-units, unit($length)) {
28 | @return $length;
29 | }
30 |
31 | @return _susy-error(
32 | '`#{unit($length)}` #{$name} units are not supported in SVG',
33 | '_susy-svg-validate-units');
34 | }
35 |
36 |
37 |
38 | // SVG Rect
39 | // --------
40 | /// Build a single svg rectangle
41 | ///
42 | /// @access private
43 | ///
44 | /// @param {Length} $x -
45 | /// Horizontal position for the rectangle
46 | /// @param {Length} $width -
47 | /// Width of the rectangle
48 | /// @param {Length} $offset [null] -
49 | /// Offset the rectangle, to account for edge gutters
50 | ///
51 | /// @return {String} -
52 | /// Escaped string representing one svg rectangle
53 | @function _susy-svg-rect(
54 | $x,
55 | $width,
56 | $offset: null
57 | ) {
58 | $x: _susy-svg-validate-units($x);
59 | $width: _susy-svg-validate-units($width);
60 | $offset: if($offset == 0, null, $offset);
61 |
62 | @if (type-of($offset) == 'number') and (type-of($x) == 'number') {
63 | @if comparable($x, $offset) {
64 | $x: $x + $offset;
65 | } @else {
66 | $x: 'calc(#{$x} + #{$offset})';
67 | }
68 | } @else if $offset and ($x != 0) {
69 | $x: 'calc(#{$x} + #{$offset})';
70 | } @else if $offset {
71 | $x: $offset;
72 | }
73 |
74 | @return '%3Crect x="#{$x}" width="#{$width}" height="100%"/%3E';
75 | }
76 |
77 |
78 |
79 | // SVG Color
80 | // ---------
81 | /// Stringify colors, and escape hex symbol
82 | ///
83 | /// @access private
84 | ///
85 | /// @param {Color} $color -
86 | /// Color to stringify and escape
87 | ///
88 | /// @return {String} -
89 | /// Escaped string value of color
90 | @function _susy-svg-color(
91 | $color
92 | ) {
93 | $color: inspect($color); // convert to string
94 |
95 | @if (str-index($color, '#') == 1) {
96 | $color: '%23' + str-slice($color, 2);
97 | }
98 |
99 | @return $color;
100 | }
101 |
102 |
103 |
104 | // SVG Gradient
105 | // ------------
106 | /// Create a multi-color svg gradient
107 | ///
108 | /// @access private
109 | ///
110 | /// @param {List} $colors -
111 | /// List of colors to be equally spaced from `0%` to `100%`
112 | /// in each column rectangle
113 | ///
114 | /// @return {String} -
115 | /// Escaped string representing one svg gradient
116 | /// (`id="susy-svg-gradient"`)
117 | @function _susy-svg-gradient(
118 | $colors
119 | ) {
120 | $gradient: '%3Cdefs%3E%3ClinearGradient spreadMethod="pad"';
121 | $gradient: '#{$gradient} id="susy-svg-gradient"';
122 | $gradient: '#{$gradient} x1="0%" y1="0%" x2="100%" y2="0%"%3E';
123 |
124 | @for $i from 1 through length($colors) {
125 | $color: _susy-svg-color(nth($colors, $i));
126 | $offset: percentage(($i - 1) / (length($colors) - 1));
127 | $stop: '%3Cstop offset="#{$offset}" style="stop-color:#{$color};" /%3E';
128 |
129 | $gradient: $gradient + $stop;
130 | }
131 |
132 | @return $gradient + '%3C/linearGradient%3E%3C/defs%3E';
133 | }
134 |
--------------------------------------------------------------------------------
/staticman.yml:
--------------------------------------------------------------------------------
1 | # Name of the property. You can have multiple properties with completely
2 | # different config blocks for different sections of your site.
3 | # For example, you can have one property to handle comment submission and
4 | # another one to handle posts.
5 | # To encrypt strings use the following endpoint:
6 | # https://api.staticman.net/v2/encrypt/{TEXT TO BE ENCRYPTED}
7 |
8 | comments:
9 | # (*) REQUIRED
10 | #
11 | # Names of the fields the form is allowed to submit. If a field that is
12 | # not here is part of the request, an error will be thrown.
13 | allowedFields: ["name", "email", "url", "message"]
14 |
15 | # (*) REQUIRED WHEN USING NOTIFICATIONS
16 | #
17 | # When allowedOrigins is defined, only requests sent from one of the domains
18 | # listed will be accepted. The origin is sent as part as the `options` object
19 | # (e.g.
18 | {% include sidebar.html %}
19 |
20 |
21 | {% if page.title %} {% endif %}
22 | {% if page.excerpt %} {% endif %}
23 | {% if page.date %} {% endif %}
24 | {% if page.last_modified_at %} {% endif %}
25 |
26 |
27 | {% unless page.header.overlay_color or page.header.overlay_image %}
28 |
34 | {% if page.share %}{% include social-share.html %}{% endif %}
35 | {% endunless %}
36 |
37 |
38 | {% if page.toc %}
39 |
45 | {% endif %}
46 | {{ content }}
47 | {% if page.link %}{% endif %}
48 |
49 |
50 |
51 | {% if site.data.ui-text[site.locale].meta_label %}
52 | {{ site.data.ui-text[site.locale].meta_label }}
53 | {% endif %}
54 | {% include page__taxonomy.html %}
55 | {% include page__date.html %}
56 |
57 |
58 |
59 | {% include post_pagination.html %}
60 |
61 |
62 | {% if jekyll.environment == 'production' and site.comments.provider and page.comments %}
63 | {% include comments.html %}
64 | {% endif %}
65 |
66 |
67 | {% comment %}{% endcomment %}
68 | {% if page.id and page.related and site.related_posts.size > 0 %}
69 |
70 |
{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}
71 |
72 | {% for post in site.related_posts limit:4 %}
73 | {% include archive-single.html type="grid" %}
74 | {% endfor %}
75 |
76 |
77 | {% comment %}{% endcomment %}
78 | {% elsif page.id and page.related %}
79 |
80 |
{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}
81 |
82 | {% for post in site.posts limit:4 %}
83 | {% if post.id == page.id %}
84 | {% continue %}
85 | {% endif %}
86 | {% include archive-single.html type="grid" %}
87 | {% endfor %}
88 |
89 |
90 | {% endif %}
91 |
92 |
--------------------------------------------------------------------------------
/_layouts/compress.html:
--------------------------------------------------------------------------------
1 | ---
2 | # Jekyll layout that compresses HTML
3 | # v3.1.0
4 | # http://jch.penibelst.de/
5 | # © 2014–2015 Anatol Broder
6 | # MIT License
7 | ---
8 |
9 | {% capture _LINE_FEED %}
10 | {% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains " " %}{% endif %}{% unless _pre_before contains " " and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ; ; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} Step Bytes raw {{ content | size }}{% if _profile_endings %} endings {{ _profile_endings }}{% endif %}{% if _profile_startings %} startings {{ _profile_startings }}{% endif %}{% if _profile_comments %} comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %} collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %} clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %}
11 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_reset.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | STYLE RESETS
3 | ========================================================================== */
4 |
5 | * { box-sizing: border-box; }
6 |
7 | html {
8 | /* apply a natural box layout model to all elements */
9 | box-sizing: border-box;
10 | background-color: $background-color;
11 | font-size: 16px;
12 |
13 | @include breakpoint($medium) {
14 | font-size: 18px;
15 | }
16 |
17 | @include breakpoint($large) {
18 | font-size: 20px;
19 | }
20 |
21 | @include breakpoint($x-large) {
22 | font-size: 22px;
23 | }
24 |
25 | -webkit-text-size-adjust: 100%;
26 | -ms-text-size-adjust: 100%;
27 | }
28 |
29 | /* Remove margin */
30 |
31 | body { margin: 0; }
32 |
33 | /* Selected elements */
34 |
35 | ::-moz-selection {
36 | color: #fff;
37 | background: #000;
38 | }
39 |
40 | ::selection {
41 | color: #fff;
42 | background: #000;
43 | }
44 |
45 | /* Display HTML5 elements in IE6-9 and FF3 */
46 |
47 | article,
48 | aside,
49 | details,
50 | figcaption,
51 | figure,
52 | footer,
53 | header,
54 | hgroup,
55 | main,
56 | nav,
57 | section {
58 | display: block;
59 | }
60 |
61 | /* Display block in IE6-9 and FF3 */
62 |
63 | audio,
64 | canvas,
65 | video {
66 | display: inline-block;
67 | *display: inline;
68 | *zoom: 1;
69 | }
70 |
71 | /* Prevents modern browsers from displaying 'audio' without controls */
72 |
73 | audio:not([controls]) {
74 | display: none;
75 | }
76 |
77 | a {
78 | color: $link-color;
79 | }
80 |
81 | /* Apply focus state */
82 |
83 | a:focus {
84 | @extend %tab-focus;
85 | }
86 |
87 | /* Remove outline from links */
88 |
89 | a:hover,
90 | a:active {
91 | outline: 0;
92 | }
93 |
94 | /* Prevent sub and sup affecting line-height in all browsers */
95 |
96 | sub,
97 | sup {
98 | position: relative;
99 | font-size: 75%;
100 | line-height: 0;
101 | vertical-align: baseline;
102 | }
103 |
104 | sup {
105 | top: -0.5em;
106 | }
107 |
108 | sub {
109 | bottom: -0.25em;
110 | }
111 |
112 | /* img border in anchor's and image quality */
113 |
114 | img {
115 | /* Responsive images (ensure images don't scale beyond their parents) */
116 | max-width: 100%; /* part 1: Set a maximum relative to the parent*/
117 | width: auto\9; /* IE7-8 need help adjusting responsive images*/
118 | height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/
119 |
120 | vertical-align: middle;
121 | border: 0;
122 | -ms-interpolation-mode: bicubic;
123 | }
124 |
125 | /* Prevent max-width from affecting Google Maps */
126 |
127 | #map_canvas img,
128 | .google-maps img {
129 | max-width: none;
130 | }
131 |
132 | /* Consistent form font size in all browsers, margin changes, misc */
133 |
134 | button,
135 | input,
136 | select,
137 | textarea {
138 | margin: 0;
139 | font-size: 100%;
140 | vertical-align: middle;
141 | }
142 |
143 | button,
144 | input {
145 | *overflow: visible; /* inner spacing ie IE6/7*/
146 | line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/
147 | }
148 |
149 | button::-moz-focus-inner,
150 | input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/
151 | padding: 0;
152 | border: 0;
153 | }
154 |
155 | button,
156 | html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls
157 | input[type="reset"],
158 | input[type="submit"] {
159 | -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/
160 | cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
161 | }
162 |
163 | label,
164 | select,
165 | button,
166 | input[type="button"],
167 | input[type="reset"],
168 | input[type="submit"],
169 | input[type="radio"],
170 | input[type="checkbox"] {
171 | cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
172 | }
173 |
174 | input[type="search"] { /* Appearance in Safari/Chrome*/
175 | box-sizing: border-box;
176 | -webkit-appearance: textfield;
177 | }
178 |
179 | input[type="search"]::-webkit-search-decoration,
180 | input[type="search"]::-webkit-search-cancel-button {
181 | -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/
182 | }
183 |
184 | textarea {
185 | overflow: auto; /* remove vertical scrollbar in IE6-9*/
186 | vertical-align: top; /* readability and alignment cross-browser*/
187 | }
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss:
--------------------------------------------------------------------------------
1 | // Sass Utilities
2 | // ==============
3 | // - Susy Error Output Override [variable]
4 | // - Susy Error [function]
5 |
6 |
7 |
8 | // Susy Error Output Override
9 | // --------------------------
10 | /// Turn off error output for testing
11 | /// @group x-utility
12 | /// @access private
13 | $_susy-error-output-override: false !default;
14 |
15 |
16 |
17 | // Susy Error
18 | // ----------
19 | /// Optionally return error messages without failing,
20 | /// as a way to test error cases
21 | ///
22 | /// @group x-utility
23 | /// @access private
24 | ///
25 | /// @param {string} $message -
26 | /// A useful error message, explaining the problem
27 | /// @param {string} $source -
28 | /// The original source of the error for debugging
29 | /// @param {bool} $override [$_susy-error-output-override] -
30 | /// Optionally return the error rather than failing
31 | /// @return {string} -
32 | /// Combined error with source and message
33 | /// @throws When `$override == true`
34 | @function _susy-error(
35 | $message,
36 | $source,
37 | $override: $_susy-error-output-override
38 | ) {
39 | @if $override {
40 | @return 'ERROR [#{$source}] #{$message}';
41 | }
42 |
43 | @error '[#{$source}] #{$message}';
44 | }
45 |
46 |
47 | // Su Is Comparable
48 | // ----------------
49 | /// Check that the units in a grid are comparable
50 | ///
51 | /// @group x-validation
52 | /// @access private
53 | ///
54 | /// @param {numbers} $lengths… -
55 | /// Arglist of all the number values to compare
56 | /// (columns, gutters, span, etc)
57 | ///
58 | /// @return {'fluid' | 'static' | false} -
59 | /// The type of span (fluid or static) when units match,
60 | /// or `false` for mismatched units
61 | @function _su-is-comparable(
62 | $lengths...
63 | ) {
64 | $first: nth($lengths, 1);
65 |
66 | @if (length($lengths) == 1) {
67 | @return if(unitless($first), 'fluid', 'static');
68 | }
69 |
70 | @for $i from 2 through length($lengths) {
71 | $comp: nth($lengths, $i);
72 |
73 | $fail: not comparable($first, $comp);
74 | $fail: $fail or (unitless($first) and not unitless($comp));
75 | $fail: $fail or (unitless($comp) and not unitless($first));
76 |
77 | @if $fail {
78 | @return false;
79 | }
80 | }
81 |
82 | @return if(unitless($first), 'fluid', 'static');
83 | }
84 |
85 |
86 | // Su Map Add Units
87 | // ----------------
88 | /// The calc features use a map of units and values
89 | /// to compile the proper algorythm.
90 | /// This function adds a new value to any comparable existing unit/value,
91 | /// or adds a new unit/value pair to the map
92 | ///
93 | /// @group x-utility
94 | /// @access private
95 | ///
96 | /// @param {map} $map -
97 | /// A map of unit/value pairs, e.g. ('px': 120px)
98 | /// @param {length} $value -
99 | /// A new length to be added to the map
100 | /// @return {map} -
101 | /// The updated map, with new value added
102 | ///
103 | /// @example scss -
104 | /// $map: (0px: 120px);
105 | /// $map: _su-map-add-units($map, 1in); // add a comparable unit
106 | /// $map: _su-map-add-units($map, 3vw); // add a new unit
107 | ///
108 | /// @each $units, $value in $map {
109 | /// /* #{$units}: #{$value} */
110 | /// }
111 | @function _su-map-add-units(
112 | $map,
113 | $value
114 | ) {
115 | $unit: $value * 0;
116 | $has: map-get($map, $unit) or 0;
117 |
118 | @if ($has == 0) {
119 | @each $try, $could in $map {
120 | $match: comparable($try, $value);
121 | $unit: if($match, $try, $unit);
122 | $has: if($match, $could, $has);
123 | }
124 | }
125 |
126 | @return map-merge($map, ($unit: $has + $value));
127 | }
128 |
129 |
130 | // Susy Flatten
131 | // ------------
132 | /// Flatten a multidimensional list
133 | ///
134 | /// @group x-utility
135 | /// @access private
136 | ///
137 | /// @param {list} $list -
138 | /// The list to be flattened
139 | /// @return {list} -
140 | /// The flattened list
141 | ///
142 | /// @example scss -
143 | /// $list: 120px (30em 30em) 120px;
144 | /// /* #{_susy-flatten($list)} */
145 | @function _susy-flatten(
146 | $list
147 | ) {
148 | $flat: ();
149 |
150 | // Don't iterate over maps
151 | @if (type-of($list) == 'map') {
152 | @return $list;
153 | }
154 |
155 | // Iterate over lists (or single items)
156 | @each $item in $list {
157 | @if (type-of($item) == 'list') {
158 | $item: _susy-flatten($item);
159 | $flat: join($flat, $item);
160 | } @else {
161 | $flat: append($flat, $item);
162 | }
163 | }
164 |
165 | // Return flattened list
166 | @return $flat;
167 | }
168 |
--------------------------------------------------------------------------------
/assets/js/_main.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | jQuery plugin settings and other scripts
3 | ========================================================================== */
4 |
5 | $(document).ready(function() {
6 | // FitVids init
7 | $("#main").fitVids();
8 |
9 | // Sticky sidebar
10 | var stickySideBar = function() {
11 | var show =
12 | $(".author__urls-wrapper button").length === 0
13 | ? $(window).width() > 1024 // width should match $large Sass variable
14 | : !$(".author__urls-wrapper button").is(":visible");
15 | if (show) {
16 | // fix
17 | $(".sidebar").addClass("sticky");
18 | } else {
19 | // unfix
20 | $(".sidebar").removeClass("sticky");
21 | }
22 | };
23 |
24 | stickySideBar();
25 |
26 | $(window).resize(function() {
27 | stickySideBar();
28 | });
29 |
30 | // Follow menu drop down
31 | $(".author__urls-wrapper button").on("click", function() {
32 | $(".author__urls").toggleClass("is--visible");
33 | $(".author__urls-wrapper button").toggleClass("open");
34 | });
35 |
36 | // Close search screen with Esc key
37 | $(document).keyup(function(e) {
38 | if (e.keyCode === 27) {
39 | if ($(".initial-content").hasClass("is--hidden")) {
40 | $(".search-content").toggleClass("is--visible");
41 | $(".initial-content").toggleClass("is--hidden");
42 | }
43 | }
44 | });
45 |
46 | // Search toggle
47 | $(".search__toggle").on("click", function() {
48 | $(".search-content").toggleClass("is--visible");
49 | $(".initial-content").toggleClass("is--hidden");
50 | // set focus on input
51 | setTimeout(function() {
52 | $(".search-content input").focus();
53 | }, 400);
54 | });
55 |
56 | // Smooth scrolling
57 | var scroll = new SmoothScroll('a[href*="#"]', {
58 | offset: 20,
59 | speed: 400,
60 | speedAsDuration: true,
61 | durationMax: 500
62 | });
63 |
64 | // Gumshoe scroll spy init
65 | if($("nav.toc").length > 0) {
66 | var spy = new Gumshoe("nav.toc a", {
67 | // Active classes
68 | navClass: "active", // applied to the nav list item
69 | contentClass: "active", // applied to the content
70 |
71 | // Nested navigation
72 | nested: false, // if true, add classes to parents of active link
73 | nestedClass: "active", // applied to the parent items
74 |
75 | // Offset & reflow
76 | offset: 20, // how far from the top of the page to activate a content area
77 | reflow: true, // if true, listen for reflows
78 |
79 | // Event support
80 | events: true // if true, emit custom events
81 | });
82 | }
83 |
84 | // add lightbox class to all image links
85 | $(
86 | "a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']"
87 | ).addClass("image-popup");
88 |
89 | // Magnific-Popup options
90 | $(".image-popup").magnificPopup({
91 | // disableOn: function() {
92 | // if( $(window).width() < 500 ) {
93 | // return false;
94 | // }
95 | // return true;
96 | // },
97 | type: "image",
98 | tLoading: "Loading image #%curr%...",
99 | gallery: {
100 | enabled: true,
101 | navigateByImgClick: true,
102 | preload: [0, 1] // Will preload 0 - before current, and 1 after the current image
103 | },
104 | image: {
105 | tError: 'Image #%curr% could not be loaded.'
106 | },
107 | removalDelay: 500, // Delay in milliseconds before popup is removed
108 | // Class that is added to body when popup is open.
109 | // make it unique to apply your CSS animations just to this exact popup
110 | mainClass: "mfp-zoom-in",
111 | callbacks: {
112 | beforeOpen: function() {
113 | // just a hack that adds mfp-anim class to markup
114 | this.st.image.markup = this.st.image.markup.replace(
115 | "mfp-figure",
116 | "mfp-figure mfp-with-anim"
117 | );
118 | }
119 | },
120 | closeOnContentClick: true,
121 | midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
122 | });
123 |
124 | // Add anchors for headings
125 | $('.page__content').find('h1, h2, h3, h4, h5, h6').each(function() {
126 | var id = $(this).attr('id');
127 | if (id) {
128 | var anchor = document.createElement("a");
129 | anchor.className = 'header-link';
130 | anchor.href = '#' + id;
131 | anchor.innerHTML = 'Permalink ';
132 | anchor.title = "Permalink";
133 | $(this).append(anchor);
134 | }
135 | });
136 | });
137 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/_print.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | PRINT STYLES
3 | ========================================================================== */
4 |
5 | @media print {
6 |
7 | [hidden] {
8 | display: none;
9 | }
10 |
11 | * {
12 | -moz-box-sizing: border-box;
13 | -webkit-box-sizing: border-box;
14 | box-sizing: border-box;
15 | }
16 |
17 | html {
18 | margin: 0;
19 | padding: 0;
20 | min-height: auto !important;
21 | font-size: 16px;
22 | }
23 |
24 | body {
25 | margin: 0 auto;
26 | background: #fff !important;
27 | color: #000 !important;
28 | font-size: 1rem;
29 | line-height: 1.5;
30 | -moz-osx-font-smoothing: grayscale;
31 | -webkit-font-smoothing: antialiased;
32 | text-rendering: optimizeLegibility;
33 | }
34 |
35 | h1,
36 | h2,
37 | h3,
38 | h4,
39 | h5,
40 | h6 {
41 | color: #000;
42 | line-height: 1.2;
43 | margin-bottom: 0.75rem;
44 | margin-top: 0;
45 | }
46 |
47 | h1 {
48 | font-size: 2.5rem;
49 | }
50 |
51 | h2 {
52 | font-size: 2rem;
53 | }
54 |
55 | h3 {
56 | font-size: 1.75rem;
57 | }
58 |
59 | h4 {
60 | font-size: 1.5rem;
61 | }
62 |
63 | h5 {
64 | font-size: 1.25rem;
65 | }
66 |
67 | h6 {
68 | font-size: 1rem;
69 | }
70 |
71 | a,
72 | a:visited {
73 | color: #000;
74 | text-decoration: underline;
75 | word-wrap: break-word;
76 | }
77 |
78 | table {
79 | border-collapse: collapse;
80 | }
81 |
82 | thead {
83 | display: table-header-group;
84 | }
85 |
86 | table,
87 | th,
88 | td {
89 | border-bottom: 1px solid #000;
90 | }
91 |
92 | td,
93 | th {
94 | padding: 8px 16px;
95 | }
96 |
97 | img {
98 | border: 0;
99 | display: block;
100 | max-width: 100% !important;
101 | vertical-align: middle;
102 | }
103 |
104 | hr {
105 | border: 0;
106 | border-bottom: 2px solid #bbb;
107 | height: 0;
108 | margin: 2.25rem 0;
109 | padding: 0;
110 | }
111 |
112 | dt {
113 | font-weight: bold;
114 | }
115 |
116 | dd {
117 | margin: 0;
118 | margin-bottom: 0.75rem;
119 | }
120 |
121 | abbr[title],
122 | acronym[title] {
123 | border: 0;
124 | text-decoration: none;
125 | }
126 |
127 | table,
128 | blockquote,
129 | pre,
130 | code,
131 | figure,
132 | li,
133 | hr,
134 | ul,
135 | ol,
136 | a,
137 | tr {
138 | page-break-inside: avoid;
139 | }
140 |
141 | h2,
142 | h3,
143 | h4,
144 | p,
145 | a {
146 | orphans: 3;
147 | widows: 3;
148 | }
149 |
150 | h1,
151 | h2,
152 | h3,
153 | h4,
154 | h5,
155 | h6 {
156 | page-break-after: avoid;
157 | page-break-inside: avoid;
158 | }
159 |
160 | h1 + p,
161 | h2 + p,
162 | h3 + p {
163 | page-break-before: avoid;
164 | }
165 |
166 | img {
167 | page-break-after: auto;
168 | page-break-before: auto;
169 | page-break-inside: avoid;
170 | }
171 |
172 | pre {
173 | white-space: pre-wrap !important;
174 | word-wrap: break-word;
175 | }
176 |
177 | a[href^='http://']:after,
178 | a[href^='https://']:after,
179 | a[href^='ftp://']:after {
180 | content: " (" attr(href) ")";
181 | font-size: 80%;
182 | }
183 |
184 | abbr[title]:after,
185 | acronym[title]:after {
186 | content: " (" attr(title) ")";
187 | }
188 |
189 | #main {
190 | max-width: 100%;
191 | }
192 |
193 | .page {
194 | margin: 0;
195 | padding: 0;
196 | width: 100%;
197 | }
198 |
199 | .page-break,
200 | .page-break-before {
201 | page-break-before: always;
202 | }
203 |
204 | .page-break-after {
205 | page-break-after: always;
206 | }
207 |
208 | .no-print {
209 | display: none;
210 | }
211 |
212 | a.no-reformat:after {
213 | content: '';
214 | }
215 |
216 | abbr[title].no-reformat:after,
217 | acronym[title].no-reformat:after {
218 | content: '';
219 | }
220 |
221 | .page__hero-caption {
222 | color: #000 !important;
223 | background: #fff !important;
224 | opacity: 1;
225 |
226 | a {
227 | color: #000 !important;
228 | }
229 | }
230 |
231 | /*
232 | Hide the following elements on print
233 | ========================================================================== */
234 |
235 | .masthead,
236 | .toc,
237 | .page__share,
238 | .page__related,
239 | .pagination,
240 | .ads,
241 | .page__footer,
242 | .page__comments-form,
243 | .author__avatar,
244 | .author__content,
245 | .author__urls-wrapper,
246 | .nav__list,
247 | .sidebar,
248 | .adsbygoogle {
249 | display: none !important;
250 | height: 1px !important;
251 | }
252 | }
--------------------------------------------------------------------------------
/_includes/toc.html:
--------------------------------------------------------------------------------
1 | {% capture tocWorkspace %}
2 | {% comment %}
3 | Version 1.0.8
4 | https://github.com/allejo/jekyll-toc
5 |
6 | "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
7 |
8 | Usage:
9 | {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
10 |
11 | Parameters:
12 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
13 |
14 | Optional Parameters:
15 | * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
16 | * class (string) : '' - a CSS class assigned to the TOC
17 | * id (string) : '' - an ID to assigned to the TOC
18 | * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
19 | * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
20 | * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
21 | * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
22 | * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
23 | * anchor_class (string) : '' - add custom class(es) for each anchor element
24 |
25 | Output:
26 | An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
27 | generate the table of contents and will NOT output the markdown given to it
28 | {% endcomment %}
29 |
30 | {% capture my_toc %}{% endcapture %}
31 | {% assign orderedList = include.ordered | default: false %}
32 | {% assign minHeader = include.h_min | default: 1 %}
33 | {% assign maxHeader = include.h_max | default: 6 %}
34 | {% assign nodes = include.html | split: ' maxHeader %}
47 | {% continue %}
48 | {% endif %}
49 |
50 | {% if firstHeader %}
51 | {% assign firstHeader = false %}
52 | {% assign minHeader = headerLevel %}
53 | {% endif %}
54 |
55 | {% assign indentAmount = headerLevel | minus: minHeader %}
56 | {% assign _workspace = node | split: ' ' | first }}>{% endcapture %}
71 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
72 |
73 | {% assign space = '' %}
74 | {% for i in (1..indentAmount) %}
75 | {% assign space = space | prepend: ' ' %}
76 | {% endfor %}
77 |
78 | {% unless include.item_class == blank %}
79 | {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %}
80 | {% endunless %}
81 |
82 | {% capture heading_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
83 | {% capture my_toc %}{{ my_toc }}
84 | {{ space }}{{ listModifier }} {{ listItemClass }} [{{ heading_body | replace: "|", "\|" }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %}
85 | {% endfor %}
86 |
87 | {% if include.class %}
88 | {% capture my_toc %}{:.{{ include.class }}}
89 | {{ my_toc | lstrip }}{% endcapture %}
90 | {% endif %}
91 |
92 | {% if include.id %}
93 | {% capture my_toc %}{: #{{ include.id }}}
94 | {{ my_toc | lstrip }}{% endcapture %}
95 | {% endif %}
96 | {% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
97 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss:
--------------------------------------------------------------------------------
1 | //////////////////////////////
2 | // Converts the input value to Base EMs
3 | //////////////////////////////
4 | @function breakpoint-to-base-em($value) {
5 | $value-unit: unit($value);
6 |
7 | // Will convert relative EMs into root EMs.
8 | @if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' {
9 | $base-unit: unit(breakpoint-get('base font size'));
10 |
11 | @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {
12 | @return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em;
13 | }
14 | @else {
15 | @warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!';
16 | @return false;
17 | }
18 | }
19 | @else {
20 | @return base-conversion($value);
21 | }
22 | }
23 |
24 | @function base-conversion($value) {
25 | $unit: unit($value);
26 |
27 | @if $unit == 'px' {
28 | @return $value / 16px * 1em;
29 | }
30 | @else if $unit == '%' {
31 | @return $value / 100% * 1em;
32 | }
33 | @else if $unit == 'em' {
34 | @return $value;
35 | }
36 | @else if $unit == 'pt' {
37 | @return $value / 12pt * 1em;
38 | }
39 | @else {
40 | @return $value;
41 | // @warn 'Everything is terrible! What have you done?!';
42 | }
43 | }
44 |
45 | //////////////////////////////
46 | // Returns whether the feature can have a min/max pair
47 | //////////////////////////////
48 | $breakpoint-min-max-features: 'color',
49 | 'color-index',
50 | 'aspect-ratio',
51 | 'device-aspect-ratio',
52 | 'device-height',
53 | 'device-width',
54 | 'height',
55 | 'monochrome',
56 | 'resolution',
57 | 'width';
58 |
59 | @function breakpoint-min-max($feature) {
60 | @each $item in $breakpoint-min-max-features {
61 | @if $feature == $item {
62 | @return true;
63 | }
64 | }
65 | @return false;
66 | }
67 |
68 | //////////////////////////////
69 | // Returns whether the feature can have a string value
70 | //////////////////////////////
71 | $breakpoint-string-features: 'orientation',
72 | 'scan',
73 | 'color',
74 | 'aspect-ratio',
75 | 'device-aspect-ratio',
76 | 'pointer',
77 | 'luminosity';
78 |
79 | @function breakpoint-string-value($feature) {
80 | @each $item in $breakpoint-string-features {
81 | @if breakpoint-min-max($item) {
82 | @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {
83 | @return true;
84 | }
85 | }
86 | @else if $feature == $item {
87 | @return true;
88 | }
89 | }
90 | @return false;
91 | }
92 |
93 | //////////////////////////////
94 | // Returns whether the feature is a media type
95 | //////////////////////////////
96 | $breakpoint-media-types: 'all',
97 | 'braille',
98 | 'embossed',
99 | 'handheld',
100 | 'print',
101 | 'projection',
102 | 'screen',
103 | 'speech',
104 | 'tty',
105 | 'tv';
106 |
107 | @function breakpoint-is-media($feature) {
108 | @each $media in $breakpoint-media-types {
109 | @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {
110 | @return true;
111 | }
112 | }
113 |
114 | @return false;
115 | }
116 |
117 | //////////////////////////////
118 | // Returns whether the feature can stand alone
119 | //////////////////////////////
120 | $breakpoint-single-string-features: 'color',
121 | 'color-index',
122 | 'grid',
123 | 'monochrome';
124 |
125 | @function breakpoint-single-string($feature) {
126 | @each $item in $breakpoint-single-string-features {
127 | @if $feature == $item {
128 | @return true;
129 | }
130 | }
131 | @return false;
132 | }
133 |
134 | //////////////////////////////
135 | // Returns whether the feature
136 | //////////////////////////////
137 | @function breakpoint-is-resolution($feature) {
138 | $resolutions: 'device-pixel-ratio', 'dpr';
139 |
140 | @if breakpoint-get('transform resolutions') {
141 | $resolutions: append($resolutions, 'resolution');
142 | }
143 |
144 | @each $reso in $resolutions {
145 | @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {
146 | @return true;
147 | }
148 | }
149 |
150 | @return false;
151 | }
152 |
--------------------------------------------------------------------------------
/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss:
--------------------------------------------------------------------------------
1 | /// Shorthand Syntax Parser
2 | /// =======================
3 | /// The syntax parser converts [shorthand syntax][short]
4 | /// into a map of settings that can be compared/merged with
5 | /// other config maps and global setting.
6 | ///
7 | /// [short]: b-api.html
8 | ///
9 | /// @group x-parser
10 |
11 |
12 |
13 | // Parse
14 | // -----
15 | /// The `parse` function provides all the syntax-sugar in Susy,
16 | /// converting user shorthand
17 | /// into a usable map of keys and values
18 | /// that can be normalized and passed to Su.
19 | ///
20 | /// @group x-parser
21 | /// @see $susy
22 | ///
23 | /// @param {list} $shorthand -
24 | /// Shorthand expression to define the width of the span,
25 | /// optionally containing:
26 | /// - a count, length, or column-list span;
27 | /// - `at $n`, `first`, or `last` location on asymmetrical grids;
28 | /// - `narrow`, `wide`, or `wider` for optionally spreading
29 | /// across adjacent gutters;
30 | /// - `of $n ` for available grid columns
31 | /// and spread of the container
32 | /// (span counts like `of 6` are only valid
33 | /// in the context of symmetrical grids);
34 | /// - and `set-gutters $n` to override global gutter settings
35 | /// @param {bool} $context-only [false] -
36 | /// Allow the parser to ignore span and span-spread values,
37 | /// only parsing context and container-spread.
38 | /// This makes it possible to accept spanless values,
39 | /// like the `gutters()` syntax.
40 | /// When parsing context-only,
41 | /// the `of` indicator is optional.
42 | ///
43 | /// @return {map} -
44 | /// Map of span and grid settings
45 | /// parsed from shorthand input –
46 | /// including all the properties available globally –
47 | /// `columns`, `gutters`, `spread`, `container-spread` –
48 | /// along with the span-specific properties
49 | /// `span`, and `location`.
50 | ///
51 | /// @throw
52 | /// when a shorthand value is not recognized
53 | @function susy-parse(
54 | $shorthand,
55 | $context-only: false
56 | ) {
57 | $parse-error: 'Unknown shorthand property:';
58 | $options: (
59 | 'first': 'location',
60 | 'last': 'location',
61 | 'alpha': 'location',
62 | 'omega': 'location',
63 | 'narrow': 'spread',
64 | 'wide': 'spread',
65 | 'wider': 'spread',
66 | );
67 |
68 | $return: ();
69 | $span: null;
70 | $columns: null;
71 |
72 | $of: null;
73 | $next: false;
74 |
75 | // Allow context-only shorthand, without span
76 | @if ($context-only) and (not index($shorthand, 'of')) {
77 | @if su-valid-columns($shorthand, 'fail-silent') {
78 | $shorthand: 'of' $shorthand;
79 | } @else {
80 | $shorthand: join('of', $shorthand);
81 | }
82 | }
83 |
84 | // loop through the shorthand list
85 | @for $i from 1 through length($shorthand) {
86 | $item: nth($shorthand, $i);
87 | $type: type-of($item);
88 | $error: false;
89 | $details: '[#{$type}] `#{$item}`';
90 |
91 | // if we know what's supposed to be coming next…
92 | @if $next {
93 |
94 | // Add to the return map
95 | $return: map-merge($return, ($next: $item));
96 |
97 | // Reset next to `false`
98 | $next: false;
99 |
100 | } @else { // If we don't know what's supposed to be coming…
101 |
102 | // Keywords…
103 | @if ($type == 'string') {
104 | // Check the map for keywords…
105 | @if map-has-key($options, $item) {
106 | $setting: map-get($options, $item);
107 |
108 | // Spread could be on the span or the container…
109 | @if ($setting == 'spread') and ($of) {
110 | $return: map-merge($return, ('container-spread': $item));
111 | } @else {
112 | $return: map-merge($return, ($setting: $item));
113 | }
114 |
115 | } @else if ($item == 'all') {
116 | // `All` is a span shortcut
117 | $span: 'all';
118 | } @else if ($item == 'at') {
119 | // Some keywords setup what's next…
120 | $next: 'location';
121 | } @else if ($item == 'set-gutters') {
122 | $next: 'gutters';
123 | } @else if ($item == 'of') {
124 | $of: true;
125 | } @else {
126 | $error: true;
127 | }
128 |
129 | } @else if ($type == 'number') or ($type == 'list') { // Numbers & lists…
130 |
131 | @if not ($span or $of) {
132 | // We don't have a span, and we're not expecting context…
133 | $span: $item;
134 | } @else if ($of) and (not $columns) {
135 | // We are expecting context…
136 | $columns: $item;
137 | } @else {
138 | $error: true;
139 | }
140 |
141 | } @else {
142 | $error: true;
143 | }
144 | }
145 |
146 | @if $error {
147 | @return _susy-error('#{$parse-error} #{$details}', 'susy-parse');
148 | }
149 | }
150 |
151 | // If we have span, merge it in
152 | @if $span {
153 | $return: map-merge($return, ('span': $span));
154 | }
155 |
156 | // If we have columns, merge them in
157 | @if $columns {
158 | $return: map-merge($return, ('columns': $columns));
159 | }
160 |
161 | // Return the map of settings…
162 | @return $return;
163 | }
164 |
--------------------------------------------------------------------------------