minimal-mistakes-jekyll 4.24.0 → 4.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +296 -243
  3. data/README.md +27 -19
  4. data/_data/ui-text.yml +97 -39
  5. data/_includes/author-profile-custom-links.html +1 -1
  6. data/_includes/author-profile.html +36 -42
  7. data/_includes/breadcrumbs.html +3 -2
  8. data/_includes/category-list.html +1 -1
  9. data/_includes/comments-providers/utterances.html +1 -0
  10. data/_includes/comments.html +30 -12
  11. data/_includes/copyright.html +6 -0
  12. data/_includes/copyright.js +6 -0
  13. data/_includes/footer.html +1 -1
  14. data/_includes/head.html +2 -2
  15. data/_includes/page__date.html +3 -3
  16. data/_includes/paginator.html +2 -1
  17. data/_includes/search/algolia-search-scripts.html +72 -51
  18. data/_includes/search/search_form.html +2 -2
  19. data/_includes/social-share.html +1 -1
  20. data/_includes/tag-list.html +1 -1
  21. data/_includes/video +1 -1
  22. data/_layouts/categories.html +1 -1
  23. data/_layouts/default.html +1 -7
  24. data/_layouts/single.html +12 -6
  25. data/_sass/minimal-mistakes/_base.scss +0 -18
  26. data/_sass/minimal-mistakes/_copyright.scss +6 -0
  27. data/_sass/minimal-mistakes/_navigation.scss +2 -2
  28. data/_sass/minimal-mistakes/_notices.scss +4 -0
  29. data/_sass/minimal-mistakes/_page.scss +19 -0
  30. data/_sass/minimal-mistakes/_sidebar.scss +7 -0
  31. data/_sass/minimal-mistakes.scss +2 -5
  32. data/assets/css/main.scss +1 -0
  33. data/assets/js/_main.js +7 -7
  34. data/assets/js/lunr/lunr-store.js +36 -1
  35. data/assets/js/main.min.js +5 -4
  36. data/assets/js/plugins/jquery.greedy-navigation.js +2 -2
  37. data/assets/js/vendor/jquery/{jquery-3.5.1.js → jquery-3.6.0.js} +118 -109
  38. metadata +8 -5
  39. data/_includes/browser-upgrade.html +0 -3
@@ -19,7 +19,8 @@
19
19
  {% for crumb in crumbs offset: 1 %}
20
20
  {% if forloop.first %}
21
21
  <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
22
- <a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
22
+ <a href="{{ '/' | relative_url }}" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
23
+
23
24
  <meta itemprop="position" content="{{ i }}" />
24
25
  </li>
25
26
  <span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
@@ -29,7 +30,7 @@
29
30
  {% else %}
30
31
  {% assign i = i | plus: 1 %}
31
32
  <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
32
- <a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
33
+ <a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | url_decode | replace: '-', ' ' | capitalize }}</span></a>
33
34
  <meta itemprop="position" content="{{ i }}" />
34
35
  </li>
35
36
  <span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
@@ -12,7 +12,7 @@
12
12
  <strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
13
13
  <span itemprop="keywords">
14
14
  {% for category_word in categories_sorted %}
15
- <a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
15
+ <a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item p-category" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
16
16
  {% endfor %}
17
17
  </span>
18
18
  </p>
@@ -12,6 +12,7 @@
12
12
  script.setAttribute('src', 'https://utteranc.es/client.js');
13
13
  script.setAttribute('repo', '{{ site.repository }}');
14
14
  script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}');
15
+ {% if site.comments.utterances.label %}script.setAttribute('label', '{{ site.comments.utterances.label }}');{% endif %}
15
16
  script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}');
16
17
  script.setAttribute('crossorigin', 'anonymous');
17
18
 
@@ -17,14 +17,23 @@
17
17
  <div class="js-comments">
18
18
  {% if site.data.comments[page.slug] %}
19
19
  <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
20
- {% assign comments = site.data.comments[page.slug] | sort %}
20
+ {% assign comments = site.data.comments[page.slug] %}
21
21
 
22
+ <!-- In order to sort by date we must have an array of objects, not an array of arrays, so
23
+ create a new array of plain comment objects and then sort by the comment date. -->
24
+ {% assign commentObjects = '' | split: '' %}
22
25
  {% for comment in comments %}
23
- {% assign email = comment[1].email %}
24
- {% assign name = comment[1].name %}
25
- {% assign url = comment[1].url %}
26
- {% assign date = comment[1].date %}
27
- {% assign message = comment[1].message %}
26
+ {% assign commentObject = comment[1] %}
27
+ {% assign commentObjects = commentObjects | push: commentObject %}
28
+ {% endfor %}
29
+ {% assign comments = commentObjects | sort: "date" %}
30
+
31
+ {% for comment in comments %}
32
+ {% assign email = comment.email %}
33
+ {% assign name = comment.name %}
34
+ {% assign url = comment.url %}
35
+ {% assign date = comment.date %}
36
+ {% assign message = comment.message %}
28
37
  {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
29
38
  {% endfor %}
30
39
  {% endif %}
@@ -91,14 +100,23 @@
91
100
  <div class="js-comments">
92
101
  {% if site.data.comments[page.slug] %}
93
102
  <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
94
- {% assign comments = site.data.comments[page.slug] | sort %}
103
+ {% assign comments = site.data.comments[page.slug] %}
104
+
105
+ <!-- In order to sort by date we must have an array of objects, not an array of arrays, so
106
+ create a new array of plain comment objects and then sort by the comment date. -->
107
+ {% assign commentObjects = '' | split: '' %}
108
+ {% for comment in comments %}
109
+ {% assign commentObject = comment[1] %}
110
+ {% assign commentObjects = commentObjects | push: commentObject %}
111
+ {% endfor %}
112
+ {% assign comments = commentObjects | sort: "date" %}
95
113
 
96
114
  {% for comment in comments %}
97
- {% assign email = comment[1].email %}
98
- {% assign name = comment[1].name %}
99
- {% assign url = comment[1].url %}
100
- {% assign date = comment[1].date %}
101
- {% assign message = comment[1].message %}
115
+ {% assign email = comment.email %}
116
+ {% assign name = comment.name %}
117
+ {% assign url = comment.url %}
118
+ {% assign date = comment.date %}
119
+ {% assign message = comment.message %}
102
120
  {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
103
121
  {% endfor %}
104
122
  {% endif %}
@@ -0,0 +1,6 @@
1
+ <!--
2
+ Minimal Mistakes Jekyll Theme 4.25.0 by Michael Rose
3
+ Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
4
+ Free for personal and commercial use under the MIT license
5
+ https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
6
+ -->
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Minimal Mistakes Jekyll Theme 4.25.0 by Michael Rose
3
+ * Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
4
+ * Free for personal and commercial use under the MIT license
5
+ * https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
6
+ */
@@ -18,4 +18,4 @@
18
18
  </ul>
19
19
  </div>
20
20
 
21
- <div class="page__footer-copyright">&copy; {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
21
+ <div class="page__footer-copyright">&copy; {{ site.time | date: '%Y' }} <a href="{{ site.copyright_url | default: site.url }}">{{ site.copyright | default: site.title }}</a>. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
data/_includes/head.html CHANGED
@@ -15,8 +15,8 @@
15
15
 
16
16
  <!-- For all browsers -->
17
17
  <link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
18
- <link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
19
- <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css"></noscript>
18
+ <link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
19
+ <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript>
20
20
 
21
21
  {% if site.head_scripts %}
22
22
  {% for script in site.head_scripts %}
@@ -1,6 +1,6 @@
1
1
  {% assign date_format = site.date_format | default: "%B %-d, %Y" %}
2
2
  {% if page.last_modified_at %}
3
- <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: date_format }}</time></p>
3
+ <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time class="dt-published" datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: date_format }}</time></p>
4
4
  {% elsif page.date %}
5
- <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: date_format }}</time></p>
6
- {% endif %}
5
+ <p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: date_format }}</time></p>
6
+ {% endif %}
@@ -1,6 +1,7 @@
1
1
  {% if paginator.total_pages > 1 %}
2
2
  <nav class="pagination">
3
- {% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %}
3
+ {% assign paginate_path_last = site.paginate_path | split: '/' | last %}
4
+ {% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: paginate_path_last, '' | replace: '//', '/' | relative_url %}
4
5
  <ul>
5
6
  {% comment %} Link for previous page {% endcomment %}
6
7
  {% if paginator.previous_page %}
@@ -1,60 +1,81 @@
1
- <!-- Including InstantSearch.js library and styling -->
2
- <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
3
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
4
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
5
-
6
1
  <script>
7
- // Instanciating InstantSearch.js with Algolia credentials
8
- const search = instantsearch({
9
- appId: '{{ site.algolia.application_id }}',
10
- apiKey: '{{ site.algolia.search_only_api_key }}',
11
- indexName: '{{ site.algolia.index_name }}',
12
- searchParameters: {
13
- restrictSearchableAttributes: [
14
- 'title',
15
- 'content'
16
- ]
17
- }
18
- });
2
+ // Including InstantSearch.js library and styling
3
+ const loadSearch = function() {
4
+ const loadCSS = function(src) {
5
+ var link = document.createElement('link');
6
+ link.rel = 'stylesheet';
7
+ link.type = 'text/css';
8
+ link.href = src;
9
+ link.media = 'all';
10
+ document.head.appendChild(link);
11
+ };
12
+
13
+ var script = document.createElement('script');
14
+ script.setAttribute("type", "text/javascript");
15
+ script.setAttribute("src", "https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js");
16
+ script.addEventListener("load", function() {
17
+ // Instantiating InstantSearch.js with Algolia credentials
18
+ const search = instantsearch({
19
+ appId: '{{ site.algolia.application_id }}',
20
+ apiKey: '{{ site.algolia.search_only_api_key }}',
21
+ indexName: '{{ site.algolia.index_name }}',
22
+ searchParameters: {
23
+ restrictSearchableAttributes: ['title', 'content']
24
+ }
25
+ });
26
+
27
+ const hitTemplate = function(hit) {
28
+ const url = hit.url;
29
+ const hightlight = hit._highlightResult;
30
+ const title = hightlight.title && hightlight.title.value || "";
31
+ const content = hightlight.html && hightlight.html.value || "";
32
+
33
+ return `
34
+ <div class="list__item">
35
+ <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
36
+ <h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
37
+ <div class="archive__item-excerpt" itemprop="description">${content}</div>
38
+ </article>
39
+ </div>
40
+ `;
41
+ }
19
42
 
20
- const hitTemplate = function(hit) {
21
- const url = hit.url;
22
- const title = hit._highlightResult.title.value;
23
- const content = hit._highlightResult.html.value;
24
-
25
- return `
26
- <div class="list__item">
27
- <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
28
- <h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
29
- <div class="archive__item-excerpt" itemprop="description">${content}</div>
30
- </article>
31
- </div>
32
- `;
33
- }
34
-
35
- // Adding searchbar and results widgets
36
- search.addWidget(
37
- instantsearch.widgets.searchBox({
38
- container: '.search-searchbar',
39
- {% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
40
- placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
41
- })
42
- );
43
- search.addWidget(
44
- instantsearch.widgets.hits({
45
- container: '.search-hits',
46
- templates: {
47
- item: hitTemplate,
48
- empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
43
+ // Adding searchbar and results widgets
44
+ search.addWidget(
45
+ instantsearch.widgets.searchBox({
46
+ container: '.search-searchbar',
47
+ {% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
48
+ placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
49
+ })
50
+ );
51
+ search.addWidget(
52
+ instantsearch.widgets.hits({
53
+ container: '.search-hits',
54
+ templates: {
55
+ item: hitTemplate,
56
+ empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
57
+ }
58
+ })
59
+ );
60
+
61
+ if (!search.started) {
62
+ search.start();
49
63
  }
50
- })
51
- );
64
+ });
65
+ document.body.appendChild(script);
66
+
67
+ loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css");
68
+ loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css");
69
+ };
52
70
 
53
71
  // Starting the search only when toggle is clicked
54
- $(document).ready(function () {
72
+ $(document).ready(function() {
73
+ var scriptLoaded = false;
74
+
55
75
  $(".search__toggle").on("click", function() {
56
- if(!search.started) {
57
- search.start();
76
+ if (!scriptLoaded) {
77
+ loadSearch();
78
+ scriptLoaded = true;
58
79
  }
59
80
  });
60
81
  });
@@ -2,7 +2,7 @@
2
2
  {%- assign search_provider = site.search_provider | default: "lunr" -%}
3
3
  {%- case search_provider -%}
4
4
  {%- when "lunr" -%}
5
- <form class="search-content__form" onkeydown="return event.key != 'Enter';">
5
+ <form class="search-content__form" onkeydown="return event.key != 'Enter';" role="search">
6
6
  <label class="sr-only" for="search">
7
7
  {{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
8
8
  </label>
@@ -10,7 +10,7 @@
10
10
  </form>
11
11
  <div id="results" class="results"></div>
12
12
  {%- when "google" -%}
13
- <form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
13
+ <form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id" role="search">
14
14
  <label class="sr-only" for="cse-search-input-box-id">
15
15
  {{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
16
16
  </label>
@@ -7,5 +7,5 @@
7
7
 
8
8
  <a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
9
9
 
10
- <a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
10
+ <a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
11
11
  </section>
@@ -12,7 +12,7 @@
12
12
  <strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
13
13
  <span itemprop="keywords">
14
14
  {% for tag_word in tags_sorted %}
15
- <a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
15
+ <a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item p-category" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
16
16
  {% endfor %}
17
17
  </span>
18
18
  </p>
data/_includes/video CHANGED
@@ -16,7 +16,7 @@
16
16
  {% endcapture %}
17
17
  {% assign video_src = video_src | strip %}
18
18
 
19
- <!-- Courtesy of embedresponsively.com //-->
19
+ <!-- Courtesy of embedresponsively.com -->
20
20
  {% unless video_src == "" %}
21
21
  <div class="responsive-video-container">
22
22
  <iframe src="{{ video_src }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>
@@ -29,7 +29,7 @@ layout: archive
29
29
  {% for i in (1..categories_max) reversed %}
30
30
  {% for category in site.categories %}
31
31
  {% if category[1].size == i %}
32
- <section id="{{ category[0] | slugify | downcase }}" class="taxonomy__section">
32
+ <section id="{{ category[0] | slugify }}" class="taxonomy__section">
33
33
  <h2 class="archive__subtitle">{{ category[0] }}</h2>
34
34
  <div class="entries-{{ entries_layout }}">
35
35
  {% for post in category.last %}
@@ -2,12 +2,7 @@
2
2
  ---
3
3
 
4
4
  <!doctype html>
5
- <!--
6
- Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose
7
- Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
8
- Free for personal and commercial use under the MIT license
9
- https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
10
- -->
5
+ {% include copyright.html %}
11
6
  <html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
12
7
  <head>
13
8
  {% include head.html %}
@@ -16,7 +11,6 @@
16
11
 
17
12
  <body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
18
13
  {% include_cached skip-links.html %}
19
- {% include_cached browser-upgrade.html %}
20
14
  {% include_cached masthead.html %}
21
15
 
22
16
  <div class="initial-content">
data/_layouts/single.html CHANGED
@@ -8,7 +8,11 @@ layout: default
8
8
  {% include page__hero_video.html %}
9
9
  {% endif %}
10
10
 
11
- {% if page.url != "/" and site.breadcrumbs %}
11
+ {% assign breadcrumbs_enabled = site.breadcrumbs %}
12
+ {% if page.breadcrumbs != null %}
13
+ {% assign breadcrumbs_enabled = page.breadcrumbs %}
14
+ {% endif %}
15
+ {% if page.url != "/" and breadcrumbs_enabled %}
12
16
  {% unless paginator %}
13
17
  {% include breadcrumbs.html %}
14
18
  {% endunless %}
@@ -17,7 +21,7 @@ layout: default
17
21
  <div id="main" role="main">
18
22
  {% include sidebar.html %}
19
23
 
20
- <article class="page" itemscope itemtype="https://schema.org/CreativeWork">
24
+ <article class="page h-entry" itemscope itemtype="https://schema.org/CreativeWork">
21
25
  {% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
22
26
  {% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
23
27
  {% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %}
@@ -26,12 +30,14 @@ layout: default
26
30
  <div class="page__inner-wrap">
27
31
  {% unless page.header.overlay_color or page.header.overlay_image %}
28
32
  <header>
29
- {% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
33
+ {% if page.title %}<h1 id="page-title" class="page__title p-name" itemprop="headline">
34
+ <a href="{{ page.url | absolute_url }}" class="u-url" itemprop="url">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</a>
35
+ </h1>{% endif %}
30
36
  {% include page__meta.html %}
31
37
  </header>
32
38
  {% endunless %}
33
39
 
34
- <section class="page__content" itemprop="text">
40
+ <section class="page__content e-content" itemprop="text">
35
41
  {% if page.toc %}
36
42
  <aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
37
43
  <nav class="toc">
@@ -65,7 +71,7 @@ layout: default
65
71
  {% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
66
72
  {% if page.id and page.related and site.related_posts.size > 0 %}
67
73
  <div class="page__related">
68
- <h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
74
+ <h2 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h2>
69
75
  <div class="grid__wrapper">
70
76
  {% for post in site.related_posts limit:4 %}
71
77
  {% include archive-single.html type="grid" %}
@@ -75,7 +81,7 @@ layout: default
75
81
  {% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
76
82
  {% elsif page.id and page.related %}
77
83
  <div class="page__related">
78
- <h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
84
+ <h2 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h2>
79
85
  <div class="grid__wrapper">
80
86
  {% for post in site.posts limit:4 %}
81
87
  {% if post.id == page.id %}
@@ -160,24 +160,6 @@ pre {
160
160
  overflow-x: auto; /* add scrollbars to wide code blocks*/
161
161
  }
162
162
 
163
- p > code,
164
- a > code,
165
- li > code,
166
- figcaption > code,
167
- td > code {
168
- padding-top: 0.1rem;
169
- padding-bottom: 0.1rem;
170
- font-size: 0.8em;
171
- background: $code-background-color;
172
- border-radius: $border-radius;
173
-
174
- &:before,
175
- &:after {
176
- letter-spacing: -0.2em;
177
- content: "\00a0"; /* non-breaking space*/
178
- }
179
- }
180
-
181
163
  /* horizontal rule */
182
164
 
183
165
  hr {
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Minimal Mistakes Jekyll Theme 4.25.0 by Michael Rose
3
+ * Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
4
+ * Free for personal and commercial use under the MIT license
5
+ * https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
6
+ */
@@ -200,8 +200,8 @@
200
200
  margin-left: 0;
201
201
  }
202
202
  }
203
-
204
- img{
203
+
204
+ img {
205
205
  -webkit-transition: none;
206
206
  transition: none;
207
207
  }
@@ -53,6 +53,10 @@
53
53
  }
54
54
  }
55
55
 
56
+ @at-root #{selector-unify(&, "blockquote")} {
57
+ border-left-color: mix(#000, $notice-color, 10%);
58
+ }
59
+
56
60
  code {
57
61
  background-color: mix($background-color, $notice-color, $code-notice-background-mix)
58
62
  }
@@ -72,6 +72,11 @@ body {
72
72
  margin-top: 0;
73
73
  line-height: 1;
74
74
 
75
+ a {
76
+ color: $text-color;
77
+ text-decoration: none;
78
+ }
79
+
75
80
  & + .page__meta {
76
81
  margin-top: -0.5em;
77
82
  }
@@ -134,6 +139,20 @@ body {
134
139
  }
135
140
  }
136
141
 
142
+ :not(pre) > code {
143
+ padding-top: 0.1rem;
144
+ padding-bottom: 0.1rem;
145
+ font-size: 0.8em;
146
+ background: $code-background-color;
147
+ border-radius: $border-radius;
148
+
149
+ &::before,
150
+ &::after {
151
+ letter-spacing: -0.2em;
152
+ content: "\00a0"; /* non-breaking space*/
153
+ }
154
+ }
155
+
137
156
  dt {
138
157
  margin-top: 1em;
139
158
  font-family: $sans-serif;
@@ -89,6 +89,13 @@
89
89
  position: sticky;
90
90
  top: 2em;
91
91
  float: right;
92
+
93
+ .toc {
94
+ .toc__menu {
95
+ overflow-y: auto;
96
+ max-height: calc(100vh - 7em);
97
+ }
98
+ }
92
99
  }
93
100
  }
94
101
 
@@ -1,8 +1,5 @@
1
- /*!
2
- * Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose
3
- * Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
4
- * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE)
5
- */
1
+ /* Copyright comment */
2
+ @import "minimal-mistakes/copyright";
6
3
 
7
4
  /* Variables */
8
5
  @import "minimal-mistakes/variables";
data/assets/css/main.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  # Only the main Sass file needs front matter (the dashes are enough)
3
+ search: false
3
4
  ---
4
5
 
5
6
  @charset "utf-8";
data/assets/js/_main.js CHANGED
@@ -2,16 +2,16 @@
2
2
  jQuery plugin settings and other scripts
3
3
  ========================================================================== */
4
4
 
5
- $(document).ready(function() {
5
+ $(function() {
6
6
  // FitVids init
7
7
  $("#main").fitVids();
8
8
 
9
9
  // Sticky sidebar
10
10
  var stickySideBar = function() {
11
11
  var show =
12
- $(".author__urls-wrapper button").length === 0
12
+ $(".author__urls-wrapper").find("button").length === 0
13
13
  ? $(window).width() > 1024 // width should match $large Sass variable
14
- : !$(".author__urls-wrapper button").is(":visible");
14
+ : !$(".author__urls-wrapper").find("button").is(":visible");
15
15
  if (show) {
16
16
  // fix
17
17
  $(".sidebar").addClass("sticky");
@@ -28,9 +28,9 @@ $(document).ready(function() {
28
28
  });
29
29
 
30
30
  // Follow menu drop down
31
- $(".author__urls-wrapper button").on("click", function() {
31
+ $(".author__urls-wrapper").find("button").on("click", function() {
32
32
  $(".author__urls").toggleClass("is--visible");
33
- $(".author__urls-wrapper button").toggleClass("open");
33
+ $(".author__urls-wrapper").find("button").toggleClass("open");
34
34
  });
35
35
 
36
36
  // Close search screen with Esc key
@@ -49,7 +49,7 @@ $(document).ready(function() {
49
49
  $(".initial-content").toggleClass("is--hidden");
50
50
  // set focus on input
51
51
  setTimeout(function() {
52
- $(".search-content input").focus();
52
+ $(".search-content").find("input").focus();
53
53
  }, 400);
54
54
  });
55
55
 
@@ -84,7 +84,7 @@ $(document).ready(function() {
84
84
  // add lightbox class to all image links
85
85
  $(
86
86
  "a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']"
87
- ).addClass("image-popup");
87
+ ).has("> img").addClass("image-popup");
88
88
 
89
89
  // Magnific-Popup options
90
90
  $(".image-popup").magnificPopup({