minimal-mistakes-jekyll 4.24.0 → 4.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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({