Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a85a28685 | ||
|
|
be3c046acf | ||
|
|
573f286971 | ||
|
|
70462d0e16 | ||
|
|
9dce68d58a | ||
|
|
4c3ada478a | ||
|
|
438710da82 | ||
|
|
4f76c2546a | ||
|
|
14e3fa2b28 | ||
|
|
dc965c5bbe | ||
|
|
accc82a03b | ||
|
|
148349b029 | ||
|
|
0527e17354 | ||
|
|
c76813f6f5 | ||
|
|
4364fb73f5 | ||
|
|
dfaac405f0 | ||
|
|
9c386c5509 | ||
|
|
2f5e771072 | ||
|
|
16103c6d49 | ||
|
|
bf66a5c345 | ||
|
|
ceeda03132 | ||
|
|
f1ffad4b5e | ||
|
|
162f659f61 | ||
|
|
adae207d17 | ||
|
|
4b08acb115 | ||
|
|
d240efaa7c | ||
|
|
0378a31f53 | ||
|
|
d47d62f695 | ||
|
|
64b1d429a4 | ||
|
|
244eff763a | ||
|
|
25ce47de8c | ||
|
|
256e626503 | ||
|
|
1d3fd5d7d6 | ||
|
|
f8ea22fdb8 | ||
|
|
7e7b901974 | ||
|
|
f33349c2ee | ||
|
|
ed883ea2d4 | ||
|
|
ab42c3ba1d | ||
|
|
b278dac7fb | ||
|
|
0b8b5230f9 | ||
|
|
6165d896a0 | ||
|
|
bde92b6d4a | ||
|
|
271b5da8e5 | ||
|
|
bce2b50556 | ||
|
|
7daa7aceb3 | ||
|
|
3ed92f5ea8 | ||
|
|
dc41016c62 | ||
|
|
7ef6af66e4 | ||
|
|
4b0c8bd1b9 | ||
|
|
9ac9602e22 | ||
|
|
f3c617f7de | ||
|
|
753ccbbd03 | ||
|
|
1b06aff3bc | ||
|
|
7ea8510d4f | ||
|
|
7d61488f5e | ||
|
|
a7af9b0ad2 | ||
|
|
4310b5459c | ||
|
|
f8f6e589ac | ||
|
|
172a5169f1 | ||
|
|
48ed1444b9 | ||
|
|
409bc92868 | ||
|
|
f8527e7916 | ||
|
|
a179735103 | ||
|
|
60b9565277 | ||
|
|
7746db6f7e | ||
|
|
5e3d1406d2 | ||
|
|
a0aa8f80a7 | ||
|
|
6308789788 | ||
|
|
c7ef8c0fd0 | ||
|
|
ada1b6184e | ||
|
|
9b9d2c66e2 | ||
|
|
6693a4a8cc | ||
|
|
aca6648bd4 | ||
|
|
6e94773083 | ||
|
|
4c38bab95b | ||
|
|
6f1cbfb3be | ||
|
|
8d3592ff70 | ||
|
|
aae8dac76c | ||
|
|
b604e2a686 | ||
|
|
02d989370a | ||
|
|
2c92d34938 | ||
|
|
0d56036557 | ||
|
|
73c2ad818c | ||
|
|
495fb29b45 | ||
|
|
75841313de | ||
|
|
7aee05ce0c | ||
|
|
08b0303298 | ||
|
|
6eaee034d1 | ||
|
|
9770b663f9 | ||
|
|
2cc21c1e88 | ||
|
|
830595d967 | ||
|
|
f18799a0c9 | ||
|
|
51fcef50d0 | ||
|
|
91ab537546 | ||
|
|
23a91f8695 | ||
|
|
8a67ce8e41 | ||
|
|
18e89666a6 | ||
|
|
5946bd4ea0 | ||
|
|
3d65710bf7 | ||
|
|
c940a73b50 | ||
|
|
e44403e276 | ||
|
|
6f0ba5e363 | ||
|
|
955a19b955 | ||
|
|
de1e2b73a6 | ||
|
|
1433887f67 | ||
|
|
2f5af9050b | ||
|
|
03a26a105d | ||
|
|
65237df377 | ||
|
|
f92670442f | ||
|
|
cee4c86ee3 | ||
|
|
58d1ba8293 | ||
|
|
8dc2997d1f | ||
|
|
daf51177f8 | ||
|
|
416933d98a | ||
|
|
55f6e8fae5 | ||
|
|
bcb15f80e7 | ||
|
|
00b86b1ff8 | ||
|
|
a66bf7e317 | ||
|
|
3f36d171bb | ||
|
|
4ef57be787 | ||
|
|
df97788050 | ||
|
|
a499b0dcae | ||
|
|
3051fcd3c9 | ||
|
|
4e19f46d68 | ||
|
|
7aa8c7b5dc | ||
|
|
23e7ad2903 | ||
|
|
a19dbdbf78 | ||
|
|
8b67db3ff4 | ||
|
|
2632ff650a | ||
|
|
ad1e06633c | ||
|
|
9539e3bd84 | ||
|
|
d6c84c9508 | ||
|
|
5ef199a3eb | ||
|
|
d639c605c8 | ||
|
|
a431dd5cc3 | ||
|
|
691df116da | ||
|
|
9ab55b6c54 | ||
|
|
bdcfd791a0 | ||
|
|
9f7c0e4144 | ||
|
|
dbc9479fd5 | ||
|
|
6bd64ffd47 | ||
|
|
ebc8123d36 | ||
|
|
a6b51ed91e | ||
|
|
642ec7b20f | ||
|
|
000dc3b4a2 | ||
|
|
50d312d04c | ||
|
|
25e871c096 | ||
|
|
20cd63c05b | ||
|
|
eaef9ecd9f | ||
|
|
62c123c6b5 | ||
|
|
234d859040 | ||
|
|
c6c6bafad0 | ||
|
|
97cf6e189b | ||
|
|
9cf80336b3 | ||
|
|
ff5b354a9a | ||
|
|
0629bb770d | ||
|
|
1ca125d61b | ||
|
|
aa5dab277e | ||
|
|
f9b17c6249 | ||
|
|
084ddf8d8e | ||
|
|
9269842e9d | ||
|
|
567836e43c | ||
|
|
7e7e683801 | ||
|
|
0f06cb8225 | ||
|
|
89de4d46db | ||
|
|
65e79f5a7d | ||
|
|
42f7512702 | ||
|
|
cc18679227 | ||
|
|
5094a4092a | ||
|
|
6ade4536f7 | ||
|
|
bd46e0a1a8 | ||
|
|
14a47c9d39 | ||
|
|
2eda29dd1f | ||
|
|
26db31c52d | ||
|
|
4fcd51b9bd | ||
|
|
0491cd362b | ||
|
|
3c075fe76b | ||
|
|
00fa7be38b | ||
|
|
297989c1be | ||
|
|
8adb089a68 | ||
|
|
ad094187f7 | ||
|
|
5aeff0c01b | ||
|
|
579d1759d1 | ||
|
|
cc9d1fdaf3 | ||
|
|
3b62fcef6b | ||
|
|
8152b4cbfc | ||
|
|
3c60ebde58 | ||
|
|
b997dc5e25 | ||
|
|
7597735c73 | ||
|
|
184f4f3430 | ||
|
|
351174e494 | ||
|
|
5704e9c0ae | ||
|
|
00d9900743 | ||
|
|
d9305929cf | ||
|
|
f2461af7a8 | ||
|
|
327a7b6f62 | ||
|
|
5516883310 | ||
|
|
1f9698ce37 | ||
|
|
1f0746f2d5 | ||
|
|
b4b8369f5b | ||
|
|
1d2a1c51df | ||
|
|
e7687a8e15 | ||
|
|
edd326376b | ||
|
|
e2f65248b0 | ||
|
|
e134d13e45 | ||
|
|
5423463ca0 | ||
|
|
65eb672dcc | ||
|
|
ee67ad9743 | ||
|
|
635b1790f3 | ||
|
|
4847ce3330 | ||
|
|
b0f5370ede | ||
|
|
4e2e64989f | ||
|
|
2127655ad8 | ||
|
|
b0261f7c43 | ||
|
|
68327eb69b | ||
|
|
1ae5b070b6 | ||
|
|
4710639f05 | ||
|
|
736f77c9c6 | ||
|
|
e1fce9fc94 | ||
|
|
4259ffdd6f | ||
|
|
de6870743d | ||
|
|
99cd379c61 | ||
|
|
5ffad0d956 | ||
|
|
b1e4881c50 | ||
|
|
c521fe58df | ||
|
|
2e05b8568b | ||
|
|
2301fdf5a7 | ||
|
|
8a39b748c2 | ||
|
|
deaed193af | ||
|
|
641ca6f3d8 | ||
|
|
3d3cb58a2e | ||
|
|
6e4aa384d0 | ||
|
|
c501842db8 | ||
|
|
30ae2357c9 | ||
|
|
aaee7b0ac7 | ||
|
|
4556423b66 | ||
|
|
f734cf7e99 | ||
|
|
6282bd9221 | ||
|
|
29c403b3f6 | ||
|
|
3a2075a090 | ||
|
|
9be80f891f | ||
|
|
f189e40766 | ||
|
|
7bb68edf03 | ||
|
|
5fe4c4810d | ||
|
|
d585934803 | ||
|
|
0ec1aa1292 | ||
|
|
923aa95c97 | ||
|
|
20f45e1d01 | ||
|
|
4b29913413 | ||
|
|
0fe0d83976 | ||
|
|
784264d1e6 | ||
|
|
e243901e9f | ||
|
|
db9cff2ade | ||
|
|
08c53cb804 | ||
|
|
5d52384b85 | ||
|
|
5ef9af5fe5 | ||
|
|
fe77557d60 | ||
|
|
faf86f59e9 | ||
|
|
e61476d0a9 | ||
|
|
e3200acafc | ||
|
|
f69e6cbfc4 | ||
|
|
13a644d22c | ||
|
|
48bf0d4e6c | ||
|
|
2d813530d4 | ||
|
|
72897524d7 | ||
|
|
2e6fe02f78 | ||
|
|
d591b2b8d8 | ||
|
|
64dc575476 | ||
|
|
899050cdfa | ||
|
|
d1dd94246c | ||
|
|
010825dfca | ||
|
|
b24f69a71f |
+9
-5
@@ -1,6 +1,10 @@
|
||||
assets/fonts/* linguist-vendored
|
||||
assets/js/main.min.js linguist-vendored
|
||||
assets/js/lunr/* linguist-vendored
|
||||
assets/js/plugins/* linguist-vendored
|
||||
assets/js/vendor/* linguist-vendored
|
||||
assets/fonts/* linguist-vendored
|
||||
assets/js/main.min.js linguist-vendored
|
||||
assets/js/lunr/* linguist-vendored
|
||||
assets/js/plugins/* linguist-vendored
|
||||
assets/js/vendor/* linguist-vendored
|
||||
_sass/minimal-mistakes/vendor/* linguist-vendored
|
||||
CHANGELOG.md text merge=union
|
||||
docs/_docs/18-history.md text merge=union
|
||||
|
||||
*.md text
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
custom: https://www.paypal.me/mmistakes
|
||||
@@ -14,7 +14,7 @@ about: "Is something not working as expected?"
|
||||
for solutions and to avoid duplication.
|
||||
- Ask for help at http://talk.jekyllrb.com/
|
||||
|
||||
After exhausting these suggestions use the format below.
|
||||
If none of the above solved your problem, you can continue below.
|
||||
-->
|
||||
|
||||
## Environment
|
||||
@@ -25,7 +25,7 @@ about: "Is something not working as expected?"
|
||||
|
||||
Issues without a link to a public repository or ZIP file will likely go ignored.
|
||||
Being able to see your actual files is necessary to troubleshoot, as most
|
||||
issues stem from invalid/missing YAML Front Matter, a mis-configured _config.sys
|
||||
issues stem from invalid/missing YAML Front Matter, a mis-configured _config.yml
|
||||
file, or problematic site content.
|
||||
-->
|
||||
|
||||
@@ -33,7 +33,7 @@ about: "Is something not working as expected?"
|
||||
- Ruby gem or remote theme version:
|
||||
- Jekyll version:
|
||||
- Git repository URL:
|
||||
- GitHub Pages hosted (if yes provide URL to site):
|
||||
- Hosted on GitHub Pages (if yes provide URL to site):
|
||||
- Operating system:
|
||||
|
||||
## Expected behavior
|
||||
@@ -46,7 +46,7 @@ about: "Is something not working as expected?"
|
||||
## Steps to reproduce the behavior
|
||||
|
||||
<!--
|
||||
Describe the steps you took for this problem to exist. Such as: you installed
|
||||
Describe the steps you took for this problem to come up. Such as: you installed
|
||||
the theme, customized _config.yml, added your own posts, and started up a
|
||||
Jekyll server locally.
|
||||
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
name: Bug Report
|
||||
description: There is something wrong with the theme. 99% of the time you should select Support below.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Before opening a new issue please:
|
||||
|
||||
- Verify you have the latest versions of Jekyll and Minimal Mistakes
|
||||
installed by running `bundle update`.
|
||||
- Thoroughly read the theme's documentation at
|
||||
https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
|
||||
- Search all issues at https://github.com/mmistakes/minimal-mistakes/issues
|
||||
for solutions and to avoid duplication.
|
||||
- Ask for help at https://talk.jekyllrb.com/
|
||||
|
||||
If none of the above solved your problem, you can continue below.
|
||||
|
||||
- type: textarea
|
||||
id: environment
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: |
|
||||
Please include theme version, Jekyll version, public git repository, whether
|
||||
you are hosting with GitHub Pages, and the operating system you tested with.
|
||||
|
||||
Issues without a link to a public repository or ZIP file will likely go ignored.
|
||||
Being able to see your actual files is necessary to troubleshoot, as most
|
||||
issues stem from invalid/missing YAML Front Matter, a mis-configured _config.yml
|
||||
file, or problematic site content.
|
||||
value: |-
|
||||
- Minimal Mistakes version:
|
||||
- Ruby gem or remote theme version:
|
||||
- Jekyll version:
|
||||
- Git repository URL:
|
||||
- Hosted on GitHub Pages (if yes provide URL to site):
|
||||
- Operating system:
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: |
|
||||
Please describe the expected behavior and the actual result you got.
|
||||
placeholder: >
|
||||
What is it you expected to happen? This should be a description of how the
|
||||
functionality you tried to use is supposed to work.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: steps-to-reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce the behavior
|
||||
description: |
|
||||
Describe the steps you took for this problem to come up. Such as: you installed
|
||||
the theme, customized _config.yml, added your own posts, and started up a
|
||||
Jekyll server locally.
|
||||
|
||||
If an error occurred on GitHub Pages when pushing, please test a local version
|
||||
following these setup instructions:
|
||||
https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/
|
||||
|
||||
Then provide a complete log by running `bundle exec jekyll build --trace --verbose`
|
||||
and include this output in the filed issue.
|
||||
|
||||
Screenshots can also be included if they help illustrate a behavior.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: other
|
||||
attributes:
|
||||
label: Other
|
||||
description: |
|
||||
Please provide a code repository, gist, code snippet, sample files,
|
||||
screenshots, or anything else you think will aid in reproducing the issue.
|
||||
validations:
|
||||
required: false
|
||||
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Support
|
||||
url: https://github.com/mmistakes/minimal-mistakes/discussions
|
||||
about: Please post your support questions in the Discussions section.
|
||||
@@ -0,0 +1,25 @@
|
||||
name: Documentation
|
||||
description: Found a typo or something that needs clarification?
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to open an issue and help make the docs better.
|
||||
|
||||
- type: textarea
|
||||
id: motivation
|
||||
attributes:
|
||||
label: Motivation
|
||||
description: |
|
||||
Why should we update our docs?
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: suggestion
|
||||
attributes:
|
||||
label: Suggestion
|
||||
description: |
|
||||
What should we do instead?
|
||||
validations:
|
||||
required: true
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
name: "Enhancement / Feature Request"
|
||||
about: "What would make this theme better?"
|
||||
---
|
||||
|
||||
<!--
|
||||
Before opening a new issue please search all issues at
|
||||
https://github.com/mmistakes/minimal-mistakes/issues to avoid duplication.
|
||||
-->
|
||||
|
||||
## Summary
|
||||
|
||||
<!--
|
||||
A short explanation of the enhancement or feature.
|
||||
-->
|
||||
|
||||
## Motivation
|
||||
|
||||
<!--
|
||||
Why do you want to see this feature in the theme?
|
||||
What use cases does it support?
|
||||
|
||||
NOTE: This theme has been designed as a base for you to customize and fit
|
||||
your site's unique needs. If a feature is not something most people will use,
|
||||
it likely won't be considered. When in doubt ask.
|
||||
-->
|
||||
|
||||
## Drawbacks
|
||||
|
||||
<!--
|
||||
Why should this enhancement or feature **not** be considered?
|
||||
-->
|
||||
@@ -1,22 +0,0 @@
|
||||
---
|
||||
name: "Question"
|
||||
about: "Having trouble working with the theme?"
|
||||
---
|
||||
|
||||
<!--
|
||||
Before opening a new issue please:
|
||||
|
||||
- Verify you have the latest versions of Jekyll and Minimal Mistakes
|
||||
installed by running `bundle update`.
|
||||
- Thoroughly read the theme's documentation at
|
||||
https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
|
||||
- Search all issues at https://github.com/mmistakes/minimal-mistakes/issues
|
||||
for solutions and to avoid duplication.
|
||||
- Ask for help at http://talk.jekyllrb.com/
|
||||
|
||||
After exhausting these suggestions ask your question below.
|
||||
|
||||
NOTE: Please provide a code repository, gist, code snippet, sample files, or
|
||||
screenshots to triage your issue.
|
||||
-->
|
||||
|
||||
@@ -23,4 +23,8 @@
|
||||
|
||||
<!--
|
||||
Is this related to any GitHub issue(s)?
|
||||
-->
|
||||
-->
|
||||
|
||||
<!--
|
||||
Please confirm that you want to submit this Pull Request to Minimal Mistakes, the free Jekyll theme by Michael Rose, by deleting this comment block.
|
||||
-->
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 30
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- "Status: Accepted"
|
||||
- "Status: Under Consideration"
|
||||
- "Status: Review Needed"
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: "Status: Stale"
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: |
|
||||
This issue has been automatically marked as stale because it has not had recent activity.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
This issue will automatically be closed in 7 days if no further activity occurs. Thank you for all your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
@@ -0,0 +1,32 @@
|
||||
name: Cleanup bad PR
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, reopened]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
close-pr:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
if: "contains(github.event.pull_request.body, 'by deleting this comment block') || github.event.pull_request.body == ''"
|
||||
steps:
|
||||
- uses: actions-ecosystem/action-add-labels@v1
|
||||
with:
|
||||
labels: 'Type: Invalid'
|
||||
- uses: superbrothers/close-pull-request@v3
|
||||
with:
|
||||
# Optional. Post an issue comment just before closing a pull request.
|
||||
comment: |
|
||||
**You have created a Pull Request to the wrong repository.** This is the repository for [Minimal Mistakes][1], the free Jekyll theme. See [GitHub Docs: About pull requests][2] if you need help.
|
||||
|
||||
[1]: https://mmistakes.github.io/minimal-mistakes/
|
||||
[2]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
|
||||
- uses: sudo-bot/action-pull-request-lock@v1.0.5
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
number: ${{ github.event.pull_request.number }}
|
||||
lock-reason: spam
|
||||
@@ -2,6 +2,9 @@
|
||||
*~
|
||||
*.sw[p_]
|
||||
|
||||
# IntelliJ IDEA
|
||||
*.idea
|
||||
|
||||
# Sublime Text
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
|
||||
+431
-245
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013-2020 Michael Rose and contributors
|
||||
Copyright (c) 2013-2024 Michael Rose and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -2,18 +2,12 @@
|
||||
|
||||
[](https://raw.githubusercontent.com/mmistakes/minimal-mistakes/master/LICENSE)
|
||||
[](https://jekyllrb.com/)
|
||||
[](https://rubygems.org/gems/minimal-mistakes-jekyll)
|
||||
[](https://www.paypal.me/mmistakes)
|
||||
|
||||
Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building personal sites, blogs, and portfolios. As the name implies, styling is purposely minimalistic to be enhanced and customized by you :smile:.
|
||||
|
||||
:sparkles: See what's new in the [CHANGELOG](CHANGELOG.md).
|
||||
|
||||
**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) to continue developing and maintaining it.**
|
||||
|
||||
[](https://www.paypal.me/mmistakes)
|
||||
|
||||
**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll encounter `Unknown tag 'include_cached'` errors at build.
|
||||
**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and must be retained in the `plugins` array of `_config.yml`. Otherwise you'll encounter `Unknown tag 'include_cached'` errors at build.
|
||||
|
||||
[![Minimal Mistakes live preview][2]][1]
|
||||
|
||||
@@ -31,9 +25,9 @@ Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building per
|
||||
- Several responsive layout options (single, archive index, search, splash, and paginated home page).
|
||||
- Optimized for search engines with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data.
|
||||
- Optional [header images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#headers), [custom sidebars](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#sidebars), [table of contents](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#table-of-contents), [galleries](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery), related posts, [breadcrumb links](https://mmistakes.github.io/minimal-mistakes/docs/configuration/#breadcrumb-navigation-beta), [navigation lists](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list), and more.
|
||||
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), and [utterances](https://utteranc.es/)).
|
||||
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), [utterances](https://utteranc.es/), and [giscus](https://giscus.app/)).
|
||||
- [Google Analytics](https://www.google.com/analytics/) support.
|
||||
- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Catalan, Chinese, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), Norwegian (Norsk), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese.
|
||||
- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), Catalan, Chinese, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hebrew, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Kiswahili, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), Norwegian (Norsk), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), Ukrainian (Українська) and Vietnamese.
|
||||
|
||||
## Skins (color variations)
|
||||
|
||||
@@ -116,17 +110,42 @@ To install:
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
gem "jekyll-include-cache", group: :jekyll_plugins
|
||||
```
|
||||
|
||||
2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`.
|
||||
|
||||
3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command:
|
||||
3. Fetch and update bundled gems by running the following [Bundler](https://bundler.io/) command:
|
||||
|
||||
```bash
|
||||
bundle
|
||||
```
|
||||
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.21.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.26.1"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
|
||||
<!--
|
||||
Dev note: The version number is currently hard-coded in these files:
|
||||
|
||||
- package.json
|
||||
- README.md (this file)
|
||||
- docs/_data/theme.yml
|
||||
- docs/_pages/home.md (in Front Matter "excerpt")
|
||||
|
||||
`package.json` holds the authoritative version number, and the others can be updated with `bundle exec rake version`.
|
||||
|
||||
The following files should also be regenerated:
|
||||
|
||||
- _includes/copyright.html, _includes/copyright.js, _sass/minimal-mistakes/_copyright.scss
|
||||
(Run `bundle exec rake clean` then `bundle exec rake copyright` - all three references `package.json`)
|
||||
- assets/js/main.min.js (Run `bundle exec rake js`, references `_includes/copyright.js`)
|
||||
|
||||
*Tip*: The default Rake task will update all of the above files at once.
|
||||
|
||||
Additionally, the license year is hard-coded in these files and are NOT covered by a Rake task:
|
||||
|
||||
- README.md (this file, near the end)
|
||||
- LICENSE
|
||||
-->
|
||||
|
||||
**Looking for an example?** Use the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter/generate) for the quickest method of getting a GitHub Pages hosted site up and running. Generate a new repository from the starter, replace sample content with your own, and configure as needed.
|
||||
|
||||
@@ -134,8 +153,6 @@ To install:
|
||||
|
||||
For detailed instructions on how to configure, customize, add/migrate content, and more read the [theme's documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/).
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
Found a typo in the documentation or interested in [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first.
|
||||
@@ -158,8 +175,6 @@ To set up your environment to develop this theme, run `bundle install`.
|
||||
|
||||
To test the theme, run `bundle exec rake preview` and open your browser at `http://localhost:4000/test/`. This starts a Jekyll server using content in the `test/` directory. As modifications are made to the theme and test site, it will regenerate and you should see the changes in the browser after a refresh.
|
||||
|
||||
---
|
||||
|
||||
## Credits
|
||||
|
||||
### Creator
|
||||
@@ -172,7 +187,7 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http
|
||||
|
||||
### Icons + Demo Images:
|
||||
|
||||
- [The Noun Project](https://thenounproject.com) -- Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam)
|
||||
- [The Noun Project](https://thenounproject.com) - Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam)
|
||||
- [Font Awesome](http://fontawesome.io/)
|
||||
- [Unsplash](https://unsplash.com/)
|
||||
|
||||
@@ -189,14 +204,13 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http
|
||||
- [Gumshoe](https://github.com/cferdinandi/gumshoe)
|
||||
- [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/)
|
||||
- [Lunr](http://lunrjs.com)
|
||||
|
||||
---
|
||||
- [Clipboard.js](https://clipboardjs.com)
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013-2020 Michael Rose and contributors
|
||||
Copyright (c) 2013-2024 Michael Rose and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -248,7 +262,7 @@ Smooth Scroll is distributed under the terms of the [MIT License](http://opensou
|
||||
|
||||
Minimal Mistakes incorporates [Gumshoejs](http://github.com/cferdinandi/gumshoe),
|
||||
Copyright (c) 2019 Chris Ferdinandi.
|
||||
Smooth Scroll is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
||||
Gumshoejs is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
||||
|
||||
Minimal Mistakes incorporates [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/),
|
||||
Copyright (c) 2010 "Cowboy" Ben Alman.
|
||||
@@ -269,3 +283,7 @@ Pure Liquid Jekyll Table of Contents is distributed under the terms of the [MIT
|
||||
Minimal Mistakes incorporates [Lunr](http://lunrjs.com),
|
||||
Copyright (c) 2018 Oliver Nightingale.
|
||||
Lunr is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
||||
|
||||
Minimal Mistakes incorporates [clipboard.js](https://clipboardjs.com/),
|
||||
Copyright (c) 2021 Zeno Rocha.
|
||||
Clipboard.js is distributed under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
require "bundler/gem_tasks"
|
||||
require "jekyll"
|
||||
require "json"
|
||||
require "listen"
|
||||
require "rake/clean"
|
||||
require "shellwords"
|
||||
require "time"
|
||||
require "yaml"
|
||||
|
||||
task :default => %i[copyright changelog js version]
|
||||
|
||||
package_json = JSON.parse(File.read("package.json"))
|
||||
|
||||
def listen_ignore_paths(base, options)
|
||||
[
|
||||
@@ -65,8 +74,7 @@ task :preview do
|
||||
puts " Halting auto-regeneration."
|
||||
exit 0
|
||||
end
|
||||
|
||||
loop { sleep 1000 }
|
||||
sleep
|
||||
end
|
||||
rescue ThreadError
|
||||
# You pressed Ctrl-C, oh my!
|
||||
@@ -74,3 +82,123 @@ task :preview do
|
||||
|
||||
Jekyll::Commands::Serve.process(options)
|
||||
end
|
||||
|
||||
task :history => :changelog
|
||||
task :changelog => "docs/_docs/18-history.md"
|
||||
file "docs/_docs/18-history.md" => "CHANGELOG.md" do |t|
|
||||
front_matter = {
|
||||
title: "History",
|
||||
classes: "wide",
|
||||
permalink: "/docs/history/",
|
||||
excerpt: "Change log of enhancements and bug fixes made to the theme.",
|
||||
sidebar: {
|
||||
nav: "docs",
|
||||
},
|
||||
last_modified_at: Time.now.iso8601,
|
||||
toc: false,
|
||||
}
|
||||
# https://stackoverflow.com/a/49553523/5958455
|
||||
front_matter = JSON.parse(JSON.dump(front_matter))
|
||||
File.open(t.name, "w") do |f|
|
||||
f.puts front_matter.to_yaml
|
||||
f.puts "---"
|
||||
f.puts ""
|
||||
f.puts "<!--\n Sourced from CHANGELOG.md\n See Rakefile `task :changelog` for details\n-->"
|
||||
f.puts ""
|
||||
f.puts "{% raw %}"
|
||||
# Remove H1
|
||||
changelog = File.read(t.prerequisites.first).gsub(/^# [^\n]*$/m, "").strip
|
||||
f.write changelog
|
||||
f.puts ""
|
||||
f.puts "{% endraw %}"
|
||||
end
|
||||
end
|
||||
|
||||
COPYRIGHT_LINES = [
|
||||
"Minimal Mistakes Jekyll Theme #{package_json["version"]} by Michael Rose",
|
||||
"Copyright 2013-#{Time.now.year} Michael Rose - mademistakes.com | @mmistakes",
|
||||
"Free for personal and commercial use under the MIT license",
|
||||
"https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE",
|
||||
]
|
||||
|
||||
COPYRIGHT_FILES = [
|
||||
"_includes/copyright.html",
|
||||
"_includes/copyright.js",
|
||||
"_sass/minimal-mistakes/_copyright.scss",
|
||||
]
|
||||
|
||||
def genenerate_copyright_file(filename, header, prefix, footer)
|
||||
File.open(filename, "w") do |f|
|
||||
f.puts header
|
||||
COPYRIGHT_LINES.each do |line|
|
||||
f.puts "#{prefix}#{line}"
|
||||
end
|
||||
f.puts footer
|
||||
end
|
||||
end
|
||||
|
||||
file "_includes/copyright.html" => "package.json" do |t|
|
||||
genenerate_copyright_file(t.name, "<!--", " ", "-->")
|
||||
end
|
||||
|
||||
file "_includes/copyright.js" => "package.json" do |t|
|
||||
genenerate_copyright_file(t.name, "/*!", " * ", " */")
|
||||
end
|
||||
|
||||
file "_sass/minimal-mistakes/_copyright.scss" => "package.json" do |t|
|
||||
genenerate_copyright_file(t.name, "/*!", " * ", " */")
|
||||
end
|
||||
|
||||
task :copyright => COPYRIGHT_FILES
|
||||
|
||||
CLEAN.include(*COPYRIGHT_FILES)
|
||||
|
||||
JS_FILES = ["assets/js/vendor/jquery/jquery-3.6.0.js"] + Dir.glob("assets/js/plugins/*.js") + ["assets/js/_main.js"]
|
||||
JS_TARGET = "assets/js/main.min.js"
|
||||
task :js => JS_TARGET
|
||||
file JS_TARGET => ["_includes/copyright.js"] + JS_FILES do |t|
|
||||
sh Shellwords.join(%w[npx uglifyjs -c --comments /@mmistakes/ --source-map -m -o] +
|
||||
[t.name] + t.prerequisites)
|
||||
end
|
||||
|
||||
task :watch_js do
|
||||
listener = Listen.to(
|
||||
"assets/js",
|
||||
ignore: /main\.min\.js$/,
|
||||
) do |modified, added, removed|
|
||||
Rake::Task[:js].invoke
|
||||
end
|
||||
|
||||
trap("INT") do
|
||||
listener.stop
|
||||
exit 0
|
||||
end
|
||||
|
||||
begin
|
||||
listener.start
|
||||
sleep
|
||||
rescue ThreadError
|
||||
end
|
||||
end
|
||||
|
||||
task :version => ["docs/_data/theme.yml", "README.md", "docs/_pages/home.md"]
|
||||
|
||||
file "docs/_data/theme.yml" => "package.json" do |t|
|
||||
theme = { "version" => package_json["version"] }
|
||||
File.open(t.name, "w") do |f|
|
||||
f.puts "# for use with in-page templates"
|
||||
f.puts theme.to_yaml
|
||||
end
|
||||
end
|
||||
|
||||
file "README.md" => "package.json" do |t|
|
||||
content = File.read(t.name)
|
||||
content = content.gsub(/(mmistakes\/minimal-mistakes@)[\d.]+/, '\1' + package_json["version"])
|
||||
File.write(t.name, content)
|
||||
end
|
||||
|
||||
file "docs/_pages/home.md" => "package.json" do |t|
|
||||
content = File.read(t.name)
|
||||
content = content.gsub(/(\breleases\/tag\/|Latest release v)[\d.]+/, '\1' + package_json["version"])
|
||||
File.write(t.name, content)
|
||||
end
|
||||
|
||||
+46
-3
@@ -29,8 +29,11 @@ logo : # path of logo image to display in the masthead, e.g.
|
||||
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
|
||||
# breadcrumbs : false # true, false (default)
|
||||
words_per_minute : 200
|
||||
enable_copy_code_button : # true, false (default)
|
||||
copyright : # "copyright" name, defaults to site.title
|
||||
copyright_url : # "copyright" URL, defaults to site.url
|
||||
comments:
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom"
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom"
|
||||
disqus:
|
||||
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
|
||||
discourse:
|
||||
@@ -43,6 +46,18 @@ comments:
|
||||
utterances:
|
||||
theme : # "github-light" (default), "github-dark"
|
||||
issue_term : # "pathname" (default)
|
||||
giscus:
|
||||
repo_id : # Shown during giscus setup at https://giscus.app
|
||||
category_name : # Full text name of the category
|
||||
category_id : # Shown during giscus setup at https://giscus.app
|
||||
discussion_term : # "pathname" (default), "url", "title", "og:title"
|
||||
reactions_enabled : # '1' for enabled (default), '0' for disabled
|
||||
theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
|
||||
strict : # 1 for enabled, 0 for disabled (default)
|
||||
input_position : # "top", "bottom" # The comment input box will be placed above or below the comments
|
||||
emit_metadata : # 1 for enabled, 0 for disabled (default) # https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#imetadatamessage
|
||||
lang : # "en" (default)
|
||||
lazy : # true, false # Loading of the comments will be deferred until the user scrolls near the comments container.
|
||||
staticman:
|
||||
branch : # "master"
|
||||
endpoint : # "https://{your Staticman v3 API}/v3/entry/github/"
|
||||
@@ -51,9 +66,12 @@ reCaptcha:
|
||||
secret :
|
||||
atom_feed:
|
||||
path : # blank (default) uses feed.xml
|
||||
hide : # true, false (default)
|
||||
search : # true, false (default)
|
||||
search_full_content : # true, false (default)
|
||||
search_provider : # lunr (default), algolia, google
|
||||
lunr:
|
||||
search_within_pages : # true, false (default)
|
||||
algolia:
|
||||
application_id : # YOUR_APPLICATION_ID
|
||||
index_name : # YOUR_INDEX_NAME
|
||||
@@ -65,8 +83,9 @@ google:
|
||||
# SEO Related
|
||||
google_site_verification :
|
||||
bing_site_verification :
|
||||
yandex_site_verification :
|
||||
naver_site_verification :
|
||||
yandex_site_verification :
|
||||
baidu_site_verification :
|
||||
|
||||
# Social Sharing
|
||||
twitter:
|
||||
@@ -207,9 +226,33 @@ sass:
|
||||
|
||||
# Outputting
|
||||
permalink: /:categories/:title/
|
||||
timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||
|
||||
|
||||
# Pagination with jekyll-paginate
|
||||
paginate: 5 # amount of posts to show
|
||||
paginate_path: /page:num/
|
||||
timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||
|
||||
# Pagination with jekyll-paginate-v2
|
||||
# See https://github.com/sverrirs/jekyll-paginate-v2/blob/master/README-GENERATOR.md#site-configuration
|
||||
# for configuration details
|
||||
pagination:
|
||||
# Set enabled to true to use paginate v2
|
||||
# enabled: true
|
||||
debug: false
|
||||
collection: 'posts'
|
||||
per_page: 10
|
||||
permalink: '/page/:num/'
|
||||
title: ':title - page :num'
|
||||
limit: 0
|
||||
sort_field: 'date'
|
||||
sort_reverse: true
|
||||
category: 'posts'
|
||||
tag: ''
|
||||
locale: ''
|
||||
trail:
|
||||
before: 2
|
||||
after: 2
|
||||
|
||||
|
||||
# Plugins (previously gems:)
|
||||
|
||||
+265
-43
@@ -272,20 +272,20 @@ pt-PT:
|
||||
<<: *DEFAULT_PT
|
||||
# Brazilian Portuguese
|
||||
pt-BR:
|
||||
skip_links :
|
||||
skip_primary_nav :
|
||||
skip_content :
|
||||
skip_footer :
|
||||
skip_links : "Pular links"
|
||||
skip_primary_nav : "Pular para navegação primária"
|
||||
skip_content : "Pular para conteúdo"
|
||||
skip_footer : "Pular para rodapé"
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Próxima"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_home_label : "Início"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
search_label : "Buscar"
|
||||
menu_label : "Chavear menu"
|
||||
search_label : "Chavear busca"
|
||||
toc_label : "Nesta página"
|
||||
ext_link_label : "Link direto"
|
||||
less_than : "menos que"
|
||||
less_than : "menos de"
|
||||
minute_read : "minuto(s) de leitura"
|
||||
share_on_label : "Compartilhe"
|
||||
meta_label :
|
||||
@@ -296,13 +296,13 @@ pt-BR:
|
||||
comments_title : "Comentários"
|
||||
more_label : "Saiba mais"
|
||||
related_label : "Talvez você também goste"
|
||||
follow_label : "Acompanhe no"
|
||||
follow_label : "Siga:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Desenvolvido com"
|
||||
website_label : "Site"
|
||||
email_label : "E-mail"
|
||||
recent_posts : "Publicações recentes"
|
||||
undefined_wpm : "Parâmetro words_per_minute indefinido no _config.yml"
|
||||
undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
|
||||
comment_form_info : "Seu e-mail não será publicado. Os campos obrigatórios estão marcados"
|
||||
comment_form_comment_label : "Comentário"
|
||||
comment_form_md_info : "Você pode usar Markdown."
|
||||
@@ -314,9 +314,9 @@ pt-BR:
|
||||
comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado."
|
||||
comment_error_msg : "Desculpe, ocorreu um erro no envio. Verifique se todos os campos obrigatórios foram preenchidos e tente novamente."
|
||||
loading_label : "Carregando..."
|
||||
search_label_text :
|
||||
search_placeholder_text : "Pesquisar..."
|
||||
search_algolia_no_results :
|
||||
search_label_text : "Digite seu termo de busca..."
|
||||
search_placeholder_text : "Digite seu termo de busca..."
|
||||
search_algolia_no_results : "Nenhum resultado"
|
||||
results_found : "Resultado(s) encontrado(s)"
|
||||
back_to_top : "Voltar para o topo"
|
||||
|
||||
@@ -496,7 +496,7 @@ de: &DEFAULT_DE
|
||||
toc_label : "Auf dieser Seite"
|
||||
ext_link_label : "Direkter Link"
|
||||
less_than : "weniger als"
|
||||
minute_read : "Minuten zum lesen"
|
||||
minute_read : "Minuten zum Lesen"
|
||||
share_on_label : "Teilen auf"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
@@ -953,10 +953,10 @@ id: &DEFAULT_ID
|
||||
comment_success_msg : "Terimakasih atas komentar Anda! Komentar akan tampil setelah disetujui."
|
||||
comment_error_msg : "Maaf, ada kesalahan pada komentar Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali."
|
||||
loading_label : "Sedang memuat..."
|
||||
search_label_text : "Masukkan kata kunci percarian..."
|
||||
search_placeholder_text : "Masukkan kata kunci percarian..."
|
||||
search_label_text : "Masukkan kata kunci pencarian..."
|
||||
search_placeholder_text : "Masukkan kata kunci pencarian..."
|
||||
search_algolia_no_results : "Tidak ada hasil"
|
||||
results_found : "Hasil percarian ditemukan"
|
||||
results_found : "Hasil pencarian ditemukan"
|
||||
back_to_top : "Kembali ke awal"
|
||||
id-ID:
|
||||
<<: *DEFAULT_ID
|
||||
@@ -1018,16 +1018,16 @@ vi-VN:
|
||||
# ------
|
||||
da: &DEFAULT_DA
|
||||
skip_links :
|
||||
skip_primary_nav :
|
||||
skip_content :
|
||||
skip_footer :
|
||||
skip_primary_nav : "Gå til hovedmenuen"
|
||||
skip_content : "Gå til indholdet"
|
||||
skip_footer : "Gå til sidefoden"
|
||||
page : "Side"
|
||||
pagination_previous : "Forrige"
|
||||
pagination_next : "Næste"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_home_label : "Forside"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "Vis/skjul menu"
|
||||
search_label :
|
||||
search_label : "Søgning til/fra"
|
||||
toc_label : "På denne side"
|
||||
ext_link_label : "Direkte link"
|
||||
less_than : "mindre end"
|
||||
@@ -1059,9 +1059,9 @@ da: &DEFAULT_DA
|
||||
comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt."
|
||||
comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt."
|
||||
loading_label : "Indlæser..."
|
||||
search_label_text :
|
||||
search_label_text : "Hvad leder du efter..."
|
||||
search_placeholder_text : "Hvad leder du efter..."
|
||||
search_algolia_no_results :
|
||||
search_algolia_no_results : "Ingen resultater"
|
||||
results_found : "Resultat(er) fundet"
|
||||
back_to_top : "Tilbage til toppen"
|
||||
da-DK:
|
||||
@@ -1112,8 +1112,11 @@ pl: &DEFAULT_PL
|
||||
comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji."
|
||||
comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie."
|
||||
loading_label : "Trwa ładowanie strony..."
|
||||
search_label_text :
|
||||
search_label_text : "Wprowadź kryteria wyszukiwania..."
|
||||
search_placeholder_text : "Wprowadź kryteria wyszukiwania..."
|
||||
search_algolia_no_results : "Brak wyników"
|
||||
results_found : "Znalezione wyniki"
|
||||
back_to_top : "Wróć na górę"
|
||||
pl-PL:
|
||||
<<: *DEFAULT_PL
|
||||
|
||||
@@ -1697,9 +1700,9 @@ ga-IE:
|
||||
# -----------------
|
||||
fi: &DEFAULT_FI
|
||||
skip_links : "Ohita linkit"
|
||||
skip_primary_nav : "Hyppää pää navigaatioon"
|
||||
skip_content : "Hyppää sisältöön"
|
||||
skip_footer : "Hyppää alareunaan"
|
||||
skip_primary_nav : "Siirry päävalikkoon"
|
||||
skip_content : "Siirry sisältöön"
|
||||
skip_footer : "Siirry alareunaan"
|
||||
page : "Sivu"
|
||||
pagination_previous : "Edellinen"
|
||||
pagination_next : "Seuraava"
|
||||
@@ -1710,39 +1713,39 @@ fi: &DEFAULT_FI
|
||||
toc_label : "Tällä sivulla"
|
||||
ext_link_label : "Suora linkki"
|
||||
less_than : "vähemmän kuin"
|
||||
minute_read : "lukuaika"
|
||||
minute_read : "minuuttia luettavaa"
|
||||
share_on_label : "Jaa"
|
||||
meta_label :
|
||||
tags_label : "Tagit:"
|
||||
tags_label : "Tunnisteet:"
|
||||
categories_label : "Kategoriat:"
|
||||
date_label : "Päivitetty:"
|
||||
comments_label : "Jätä kommentti"
|
||||
comments_title : "Kommentit"
|
||||
more_label : "Lisää"
|
||||
related_label : "Voit olla kiinnostunut myös"
|
||||
related_label : "Saatat olla kiinnostunut myös"
|
||||
follow_label : "Seuraa:"
|
||||
feed_label : "Syöte"
|
||||
powered_by : "Voimanlähteenä"
|
||||
website_label : "Websivu"
|
||||
email_label : "Email"
|
||||
recent_posts : "Viimeisimmät postaukset"
|
||||
powered_by : "Käyttäen"
|
||||
website_label : "Kotisivu"
|
||||
email_label : "Sähköposti"
|
||||
recent_posts : "Viimeisimmät kirjoitukset"
|
||||
undefined_wpm : "words_per_minute asetusta ei ole määritelty _config.yml tiedostossa"
|
||||
comment_form_info : "Your email address will not be published. Required fields are marked"
|
||||
comment_form_info : "Sinun sähköpostiosoitetta ei julkaista. Vaaditut kentät ovat merkittyjä"
|
||||
comment_form_comment_label : "Kommentti"
|
||||
comment_form_md_info : "Tukee markdown muotoilua."
|
||||
comment_form_name_label : "Nimi"
|
||||
comment_form_email_label : "Email osoite"
|
||||
comment_form_website_label : "Webbisivu (vapaaehtoinen)"
|
||||
comment_form_email_label : "Sähköpostiosoite"
|
||||
comment_form_website_label : "Nettisivu (vapaaehtoinen)"
|
||||
comment_btn_submit : "Lähetä"
|
||||
comment_btn_submitted : "Lähetetty"
|
||||
comment_success_msg : "Kiitos kommentista, se julkaistaan tällä sivulla moderoinnin jälkeen."
|
||||
comment_error_msg : "Tarkista että olet täyttänyt kaikki kentät ja yritä uudelleen."
|
||||
comment_success_msg : "Kiitos kommentista, se julkaistaan tällä sivulla tarkastelun jälkeen."
|
||||
comment_error_msg : "Tapahtui virhe. Tarkista, että olet täyttänyt kaikki kentät ja yritä uudelleen."
|
||||
loading_label : "Ladataan..."
|
||||
search_label_text : "Hakusana..."
|
||||
search_placeholder_text : "Hakusana..."
|
||||
search_algolia_no_results :
|
||||
search_algolia_no_results : "Ei hakutuloksia"
|
||||
results_found : "Tulosta"
|
||||
back_to_top : "Ylös"
|
||||
back_to_top : "Siirry ylös"
|
||||
|
||||
# Myanmar (Burmese)
|
||||
# -----------------
|
||||
@@ -1852,6 +1855,225 @@ no-NB:
|
||||
no-NN:
|
||||
<<: *DEFAULT_NO
|
||||
|
||||
# Hebrew
|
||||
# -------
|
||||
he: &DEFAULT_HE
|
||||
skip_links : "דלגו על קישור"
|
||||
skip_primary_nav : "דלגו לראשי"
|
||||
skip_content : "דלגו לתוכן"
|
||||
skip_footer : "דלגו לתחתית"
|
||||
page : "דף"
|
||||
pagination_previous : "קודם"
|
||||
pagination_next : "הבא"
|
||||
breadcrumb_home_label : "בית"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "סגירה/פתיחה של תפריט"
|
||||
search_label : "סגירה/פתיחה של חיפוש"
|
||||
toc_label : "בדף זה"
|
||||
ext_link_label : "קישור ישיר"
|
||||
less_than : "פחות מ"
|
||||
minute_read : "דקת קריאה"
|
||||
share_on_label : "שתפו ב"
|
||||
meta_label :
|
||||
tags_label : "תגיות:"
|
||||
categories_label : "קטגוריות:"
|
||||
date_label : "מעודכן:"
|
||||
comments_label : "השאירו הערה"
|
||||
comments_title : "הערות"
|
||||
more_label : "קראו עוד"
|
||||
related_label : "אולי יעניין אותך גם"
|
||||
follow_label : "עקבו אחרי"
|
||||
feed_label : "פיד"
|
||||
powered_by : "Powered by"
|
||||
website_label : "אתר"
|
||||
email_label : "אימייל"
|
||||
recent_posts : "פוסטים אחרונים"
|
||||
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
|
||||
comment_form_info : "האימייל שלך נשמר חסוי. שדות חובה מסומנים"
|
||||
comment_form_comment_label : "הערה"
|
||||
comment_form_md_info : "Markdown is supported."
|
||||
comment_form_name_label : "שם"
|
||||
comment_form_email_label : "כתובת אימייל"
|
||||
comment_form_website_label : "אתר (אפשרות)"
|
||||
comment_btn_submit : "שלחו הערה"
|
||||
comment_btn_submitted : "נשלח"
|
||||
comment_success_msg : "תודה על ההערה שלך! היא תופיע באתר ברגע שתאושר."
|
||||
comment_error_msg : "סליחה, קרתה תקלה בשליחה. אנא וודאו שכל השדות מלאים ונסו שנית."
|
||||
loading_label : "טוען..."
|
||||
search_label_text : "מילות חיפוש..."
|
||||
search_placeholder_text : "מילות חיפוש..."
|
||||
search_algolia_no_results : "אין תוצאות"
|
||||
results_found : "תוצאות נמצאו"
|
||||
back_to_top : "חזרה להתחלה"
|
||||
he-IL:
|
||||
<<: *DEFAULT_HE
|
||||
|
||||
# Arabic (عربي)
|
||||
# --------------
|
||||
ar: &DEFAULT_AR
|
||||
skip_links : "تخطي الروابط"
|
||||
skip_primary_nav : "تخطى الى شريط التنقل"
|
||||
skip_content : "الانتقال الى المحتوى"
|
||||
skip_footer : "الانتقال الى ذيل الصفحة"
|
||||
page : "صفحه"
|
||||
pagination_previous : "قبل"
|
||||
pagination_next : "بعد"
|
||||
breadcrumb_home_label : "الرئيس"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "الخيارات"
|
||||
search_label : "البحث"
|
||||
toc_label : "على هذه الصفحة"
|
||||
ext_link_label : "رابط مباشر"
|
||||
less_than : "اقل من"
|
||||
minute_read : "دقيقة قرائية"
|
||||
share_on_label : "مشاركة"
|
||||
meta_label :
|
||||
tags_label : "العلامات الوصفية:"
|
||||
categories_label : "الفئات:"
|
||||
date_label : "تم التحديث:"
|
||||
comments_label : "اترك تعليق"
|
||||
comments_title : "التعليقات"
|
||||
more_label : "اقرأ المزيد"
|
||||
related_label : "قد يعجبك أيضا"
|
||||
follow_label : "تابع:"
|
||||
feed_label : "الاخبار - RSS"
|
||||
powered_by : "تم تطوير بواسطة"
|
||||
website_label : "موقع"
|
||||
email_label : "ايميل"
|
||||
recent_posts : "المشاركات الأخيرة"
|
||||
undefined_wpm : "معامل غير معرف في words_per_minute (كلمة في الدقيقة) في ملف _config.yml"
|
||||
comment_form_info : "لن يتم نشر عنوان بريدك الإلكتروني. الحقول المطلوبة إلزامية"
|
||||
comment_form_comment_label : "تعليق"
|
||||
comment_form_md_info : "لغة ال Markdown مدعومة."
|
||||
comment_form_name_label : "الاسم"
|
||||
comment_form_email_label : "البريد الالكتروني"
|
||||
comment_form_website_label : "الموقع (اختياري)"
|
||||
comment_btn_submit : "أضف تعليق"
|
||||
comment_btn_submitted : "تم الإرسال"
|
||||
comment_success_msg : "شكراً على التعليق! سيتم اظهاره عندما يتم موافقة عليه."
|
||||
comment_error_msg : "للأسف, هناك خطأ في المحاولة. الرجاء الحرص على تعبئة جميع الخانات و محاولة مجدداً."
|
||||
loading_label : "جاري التحميل..."
|
||||
search_label_text : "اكتب مصطلح للبحث..."
|
||||
search_placeholder_text : "اكتب مصطلح للبحث..."
|
||||
search_algolia_no_results : "لا توجد نتائج"
|
||||
results_found : "تم إيجاد نتيجة"
|
||||
back_to_top : "الانتقال الى الأعلى"
|
||||
ar-SD:
|
||||
<<: *DEFAULT_AR
|
||||
ar-SA:
|
||||
<<: *DEFAULT_AR
|
||||
ar-AE:
|
||||
<<: *DEFAULT_AR
|
||||
ar-EG:
|
||||
<<: *DEFAULT_AR
|
||||
|
||||
# Kiswahili
|
||||
# -----------------
|
||||
sw: &DEFAULT_SW
|
||||
skip_links : "Ruka viungo"
|
||||
skip_primary_nav : "Ruka orodha kuu"
|
||||
skip_content : "Ruka maandiko maakuu"
|
||||
skip_footer : "Ruka chini"
|
||||
page : "Ukurasa"
|
||||
pagination_previous : "Rudi"
|
||||
pagination_next : "Endelea"
|
||||
breadcrumb_home_label : "Ukurasa wa kwanza"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "Wezesha/Zima orodha"
|
||||
search_label : "Wezesha/Zima kutafuta"
|
||||
toc_label : "Kwa ukurasa huu"
|
||||
ext_link_label : "Kiungo mbio"
|
||||
less_than : "Soma kwa dakikia ndogo kuliko"
|
||||
minute_read : "Soma kwa dakika"
|
||||
share_on_label : "Tangaza"
|
||||
meta_label :
|
||||
tags_label : "Alama:"
|
||||
categories_label : "Aina:"
|
||||
date_label : "Geuzi ya mwisho:"
|
||||
comments_label : "Wacha maoni"
|
||||
comments_title : "Maoni"
|
||||
more_label : "Jifunze zaidi"
|
||||
related_label : "Pia, utapenda"
|
||||
follow_label : "Fuata:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Inatumia"
|
||||
website_label : "Tovuti"
|
||||
email_label : "Barua pepe"
|
||||
recent_posts : "Makala juzi"
|
||||
undefined_wpm : "Ingizo words_per_minute kwa _config.yml haijawekwa"
|
||||
comment_form_info : "Barua pepe yako haitaonekana. Kuna alama kwa ingizo tunahitaji."
|
||||
comment_form_comment_label : "Maoni"
|
||||
comment_form_md_info : "Unaweza kutumia `Markdown`."
|
||||
comment_form_name_label : "Jina"
|
||||
comment_form_email_label : "Barua pepe"
|
||||
comment_form_website_label : "Tovuti (hiari)"
|
||||
comment_btn_submit : "Tuma maoni"
|
||||
comment_btn_submitted : "Umetuma"
|
||||
comment_success_msg : "Asante kwa maoni yako! Itaonekana ikiridhiwa."
|
||||
comment_error_msg : "Pole, kuna makosa kwa ingizo yako. Tafadhali angalia umeandika kwa ingizo zote zinahitaji, na jaribu tena."
|
||||
loading_label : "Inapakiwa..."
|
||||
search_label_text : "Ingiza neno unatafuta..."
|
||||
search_placeholder_text : "Ingiza neno unatafuta..."
|
||||
search_algolia_no_results : "Hakuna matokeo"
|
||||
results_found : "Tumepata"
|
||||
back_to_top : "Rudi juu"
|
||||
sw-KE:
|
||||
<<: *DEFAULT_SW
|
||||
sw-TZ:
|
||||
<<: *DEFAULT_SW
|
||||
|
||||
# Ukrainian / Українська
|
||||
# -----------------
|
||||
uk: &DEFAULT_UK
|
||||
skip_links : "Посилання для переходу"
|
||||
skip_primary_nav : "Перейти до основної навігації"
|
||||
skip_content : "Перейти до змісту"
|
||||
skip_footer : "Перейти до нижнього колонтитула"
|
||||
page : "Сторінка"
|
||||
pagination_previous : "Попередня"
|
||||
pagination_next : "Наступна"
|
||||
breadcrumb_home_label : "Головна"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "Випадаюче меню"
|
||||
search_label : "Пошук"
|
||||
toc_label : "Зміст"
|
||||
ext_link_label : "Пряме посилання"
|
||||
less_than : "менше ніж"
|
||||
minute_read : "хв. на чітання"
|
||||
share_on_label : "Поділитися"
|
||||
meta_label :
|
||||
tags_label : "Мітки:"
|
||||
categories_label : "Розділи:"
|
||||
date_label : "Дата зміни:"
|
||||
comments_label : "Залишити коментар"
|
||||
comments_title : "Коментарі"
|
||||
more_label : "Читати далі"
|
||||
related_label : "Вам також може сподобатись"
|
||||
follow_label : "Зв'язатися зі мною:"
|
||||
feed_label : "RSS-стрічка"
|
||||
powered_by : "Сайт працює на"
|
||||
website_label : "Сайт"
|
||||
email_label : "Электронна пошта"
|
||||
recent_posts : "Останні записи"
|
||||
undefined_wpm : "Не визначено параметр words_per_minute в _config.yml"
|
||||
comment_form_info : "Вашу адресу електронної пошти не буде опубліковано. Обов'язкові поля позначені"
|
||||
comment_form_comment_label : "Коментар"
|
||||
comment_form_md_info : "Підтримується синтаксис Markdown."
|
||||
comment_form_name_label : "Ім'я"
|
||||
comment_form_email_label : "Електронна пошта"
|
||||
comment_form_website_label : "Посилання на сайт (необов'язково)"
|
||||
comment_btn_submit : "Залишити коментар"
|
||||
comment_btn_submitted : "Відправлено"
|
||||
comment_success_msg : "Дякую за Ваш коментар! Його буде опубліковано на сайті після перевірки."
|
||||
comment_error_msg : "На жаль, сталася помилка з надсиланням коментаря. Будь ласка, переконайтеся, що всі обов'язкові поля заповнені та спробуйте знову."
|
||||
loading_label : "Відправка..."
|
||||
search_label_text : "Введіть пошуковий запит..."
|
||||
search_placeholder_text : "Введіть пошуковий запит..."
|
||||
search_algolia_no_results :
|
||||
results_found : "Знайдено"
|
||||
uk-UA:
|
||||
<<: *DEFAULT_UK
|
||||
|
||||
# Another locale
|
||||
# --------------
|
||||
#
|
||||
#
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--
|
||||
<li>
|
||||
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1,28 +1,22 @@
|
||||
{% assign author = page.author | default: page.authors[0] | default: site.author %}
|
||||
{% assign author = site.data.authors[author] | default: author %}
|
||||
|
||||
<div itemscope itemtype="https://schema.org/Person">
|
||||
<div itemscope itemtype="https://schema.org/Person" class="h-card">
|
||||
|
||||
{% if author.avatar %}
|
||||
<div class="author__avatar">
|
||||
{% if author.home %}
|
||||
<a href="{{ author.home | relative_url }}">
|
||||
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
|
||||
</a>
|
||||
{% else %}
|
||||
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
|
||||
{% endif %}
|
||||
<a href="{{ author.home | default: '/' | absolute_url }}">
|
||||
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image" class="u-photo">
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="author__content">
|
||||
{% if author.home %}
|
||||
<a href="{{ author.home | relative_url }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a>
|
||||
{% else %}
|
||||
<h3 class="author__name" itemprop="name">{{ author.name }}</h3>
|
||||
{% endif %}
|
||||
<h3 class="author__name p-name" itemprop="name">
|
||||
<a class="u-url" rel="me" href="{{ author.home | default: '/' | absolute_url }}" itemprop="url">{{ author.name }}</a>
|
||||
</h3>
|
||||
{% if author.bio %}
|
||||
<div class="author__bio" itemprop="description">
|
||||
<div class="author__bio p-note" itemprop="description">
|
||||
{{ author.bio | markdownify }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -33,21 +27,21 @@
|
||||
<ul class="author__urls social-icons">
|
||||
{% if author.location %}
|
||||
<li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place">
|
||||
<i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span>
|
||||
<i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name" class="p-locality">{{ author.location }}</span>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.links %}
|
||||
{% for link in author.links %}
|
||||
{% if link.label and link.url %}
|
||||
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li>
|
||||
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer me"{% if link.url contains 'http' %} itemprop="sameAs"{% endif %}><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if author.uri %}
|
||||
<li>
|
||||
<a href="{{ author.uri }}" itemprop="url">
|
||||
<a href="{{ author.uri }}" itemprop="url" rel="me">
|
||||
<i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].website_label | default: "Website" }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -55,7 +49,7 @@
|
||||
|
||||
{% if author.email %}
|
||||
<li>
|
||||
<a href="mailto:{{ author.email }}">
|
||||
<a href="mailto:{{ author.email }}" rel="me" class="u-email">
|
||||
<meta itemprop="email" content="{{ author.email }}" />
|
||||
<i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span>
|
||||
</a>
|
||||
@@ -64,15 +58,15 @@
|
||||
|
||||
{% if author.keybase %}
|
||||
<li>
|
||||
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<i class="fas fa-fw fa-key" aria-hidden="true"></i><span class="label">Keybase</span>
|
||||
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-keybase" aria-hidden="true"></i><span class="label">Keybase</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.twitter %}
|
||||
<li>
|
||||
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -80,7 +74,7 @@
|
||||
|
||||
{% if author.facebook %}
|
||||
<li>
|
||||
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i><span class="label">Facebook</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -88,7 +82,7 @@
|
||||
|
||||
{% if author.linkedin %}
|
||||
<li>
|
||||
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">LinkedIn</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -96,7 +90,7 @@
|
||||
|
||||
{% if author.xing %}
|
||||
<li>
|
||||
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-xing-square" aria-hidden="true"></i><span class="label">XING</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -104,7 +98,7 @@
|
||||
|
||||
{% if author.instagram %}
|
||||
<li>
|
||||
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -112,7 +106,7 @@
|
||||
|
||||
{% if author.tumblr %}
|
||||
<li>
|
||||
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i><span class="label">Tumblr</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -120,7 +114,7 @@
|
||||
|
||||
{% if author.bitbucket %}
|
||||
<li>
|
||||
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i><span class="label">Bitbucket</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -128,7 +122,7 @@
|
||||
|
||||
{% if author.github %}
|
||||
<li>
|
||||
<a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -136,7 +130,7 @@
|
||||
|
||||
{% if author.gitlab %}
|
||||
<li>
|
||||
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-gitlab" aria-hidden="true"></i><span class="label">GitLab</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -144,7 +138,7 @@
|
||||
|
||||
{% if author.stackoverflow %}
|
||||
<li>
|
||||
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i><span class="label">Stack Overflow</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -152,7 +146,7 @@
|
||||
|
||||
{% if author.lastfm %}
|
||||
<li>
|
||||
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i><span class="label">Last.fm</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -160,7 +154,7 @@
|
||||
|
||||
{% if author.dribbble %}
|
||||
<li>
|
||||
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-dribbble" aria-hidden="true"></i><span class="label">Dribbble</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -168,7 +162,7 @@
|
||||
|
||||
{% if author.pinterest %}
|
||||
<li>
|
||||
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -176,7 +170,7 @@
|
||||
|
||||
{% if author.foursquare %}
|
||||
<li>
|
||||
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-foursquare" aria-hidden="true"></i><span class="label">Foursquare</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -184,7 +178,7 @@
|
||||
|
||||
{% if author.steam %}
|
||||
<li>
|
||||
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-steam" aria-hidden="true"></i><span class="label">Steam</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -193,13 +187,13 @@
|
||||
{% if author.youtube %}
|
||||
{% if author.youtube contains "://" %}
|
||||
<li>
|
||||
<a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
|
||||
</a>
|
||||
</li>
|
||||
{% elsif author.youtube %}
|
||||
<li>
|
||||
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -208,7 +202,7 @@
|
||||
|
||||
{% if author.soundcloud %}
|
||||
<li>
|
||||
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">SoundCloud</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -216,7 +210,7 @@
|
||||
|
||||
{% if author.weibo %}
|
||||
<li>
|
||||
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-weibo" aria-hidden="true"></i><span class="label">Weibo</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -224,7 +218,7 @@
|
||||
|
||||
{% if author.flickr %}
|
||||
<li>
|
||||
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -232,7 +226,7 @@
|
||||
|
||||
{% if author.codepen %}
|
||||
<li>
|
||||
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-codepen" aria-hidden="true"></i><span class="label">CodePen</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -240,7 +234,7 @@
|
||||
|
||||
{% if author.vine %}
|
||||
<li>
|
||||
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
|
||||
<i class="fab fa-fw fa-vine" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
{% for crumb in crumbs offset: 1 %}
|
||||
{% if forloop.first %}
|
||||
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
|
||||
<a href="{{ '/' | relative_url }}" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
|
||||
|
||||
<meta itemprop="position" content="{{ i }}" />
|
||||
</li>
|
||||
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||
@@ -29,7 +30,7 @@
|
||||
{% else %}
|
||||
{% assign i = i | plus: 1 %}
|
||||
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<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>
|
||||
<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>
|
||||
<meta itemprop="position" content="{{ i }}" />
|
||||
</li>
|
||||
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<!--[if lt IE 9]>
|
||||
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
|
||||
<![endif]-->
|
||||
@@ -6,20 +6,13 @@
|
||||
{% endcase %}
|
||||
|
||||
{% if site.category_archive.path %}
|
||||
{% comment %}
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}|{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign category_hashes = page_categories | split: ',' | sort %}
|
||||
{% assign categories_sorted = page.categories | sort_natural %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in category_hashes %}
|
||||
{% assign keyValue = hash | split: '|' %}
|
||||
{% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<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 %}
|
||||
{% for category_word in categories_sorted %}
|
||||
<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 %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
(function () {
|
||||
var commentContainer = document.querySelector('#giscus-comments');
|
||||
|
||||
if (!commentContainer) {
|
||||
return;
|
||||
}
|
||||
|
||||
var script = document.createElement('script');
|
||||
|
||||
script.setAttribute('src', 'https://giscus.app/client.js');
|
||||
script.setAttribute('data-repo', '{{ site.repository | downcase }}');
|
||||
script.setAttribute('data-repo-id', '{{ site.comments.giscus.repo_id }}');
|
||||
script.setAttribute('data-category', '{{ site.comments.giscus.category_name }}');
|
||||
script.setAttribute('data-category-id', '{{ site.comments.giscus.category_id }}');
|
||||
script.setAttribute('data-mapping', '{{ site.comments.giscus.discussion_term | default: "pathname" }}');
|
||||
script.setAttribute('data-strict', '{{ site.comments.giscus.strict | default: 0 }}');
|
||||
script.setAttribute('data-reactions-enabled', '{{ site.comments.giscus.reactions_enabled | default: 1 }}');
|
||||
script.setAttribute('data-emit-metadata', '{{ site.comments.giscus.emit_metadata | default: 0 }}');
|
||||
script.setAttribute('data-input-position', '{{ site.comments.giscus.input_position | default: "top" }}');
|
||||
script.setAttribute('data-theme', '{{ site.comments.giscus.theme | default: "light" }}');
|
||||
script.setAttribute('data-lang', '{{ site.comments.giscus.lang | default: "en" }}');
|
||||
{% if site.comments.giscus.lazy %}
|
||||
script.setAttribute('data-loading', 'lazy');
|
||||
{% endif %}
|
||||
script.setAttribute('crossorigin', 'anonymous');
|
||||
|
||||
script.setAttribute('async', '');
|
||||
|
||||
commentContainer.appendChild(script);
|
||||
})();
|
||||
</script>
|
||||
@@ -12,6 +12,8 @@
|
||||
{% include /comments-providers/staticman_v2.html %}
|
||||
{% when "utterances" %}
|
||||
{% include /comments-providers/utterances.html %}
|
||||
{% when "giscus" %}
|
||||
{% include /comments-providers/giscus.html %}
|
||||
{% when "custom" %}
|
||||
{% include /comments-providers/custom_scripts.html %}
|
||||
{% endcase %}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
script.setAttribute('src', 'https://utteranc.es/client.js');
|
||||
script.setAttribute('repo', '{{ site.repository }}');
|
||||
script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}');
|
||||
{% if site.comments.utterances.label %}script.setAttribute('label', '{{ site.comments.utterances.label }}');{% endif %}
|
||||
script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}');
|
||||
script.setAttribute('crossorigin', 'anonymous');
|
||||
|
||||
|
||||
+34
-13
@@ -17,14 +17,23 @@
|
||||
<div class="js-comments">
|
||||
{% if site.data.comments[page.slug] %}
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
|
||||
{% assign comments = site.data.comments[page.slug] | sort %}
|
||||
{% assign comments = site.data.comments[page.slug] %}
|
||||
|
||||
<!-- In order to sort by date we must have an array of objects, not an array of arrays, so
|
||||
create a new array of plain comment objects and then sort by the comment date. -->
|
||||
{% assign commentObjects = '' | split: '' %}
|
||||
{% for comment in comments %}
|
||||
{% assign commentObject = comment[1] %}
|
||||
{% assign commentObjects = commentObjects | push: commentObject %}
|
||||
{% endfor %}
|
||||
{% assign comments = commentObjects | sort: "date" %}
|
||||
|
||||
{% for comment in comments %}
|
||||
{% assign email = comment[1].email %}
|
||||
{% assign name = comment[1].name %}
|
||||
{% assign url = comment[1].url %}
|
||||
{% assign date = comment[1].date %}
|
||||
{% assign message = comment[1].message %}
|
||||
{% assign email = comment.email %}
|
||||
{% assign name = comment.name %}
|
||||
{% assign url = comment.url %}
|
||||
{% assign date = comment.date %}
|
||||
{% assign message = comment.message %}
|
||||
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
@@ -35,7 +44,7 @@
|
||||
<div class="page__comments-form">
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
|
||||
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
|
||||
<form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint | default: 'https://api.staticman.net/v2/entry/' }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments">
|
||||
<form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments">
|
||||
<div class="form__spinner">
|
||||
<i class="fas fa-spinner fa-spin fa-3x fa-fw"></i>
|
||||
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
|
||||
@@ -91,14 +100,23 @@
|
||||
<div class="js-comments">
|
||||
{% if site.data.comments[page.slug] %}
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
|
||||
{% assign comments = site.data.comments[page.slug] | sort %}
|
||||
{% assign comments = site.data.comments[page.slug] %}
|
||||
|
||||
<!-- In order to sort by date we must have an array of objects, not an array of arrays, so
|
||||
create a new array of plain comment objects and then sort by the comment date. -->
|
||||
{% assign commentObjects = '' | split: '' %}
|
||||
{% for comment in comments %}
|
||||
{% assign commentObject = comment[1] %}
|
||||
{% assign commentObjects = commentObjects | push: commentObject %}
|
||||
{% endfor %}
|
||||
{% assign comments = commentObjects | sort: "date" %}
|
||||
|
||||
{% for comment in comments %}
|
||||
{% assign email = comment[1].email %}
|
||||
{% assign name = comment[1].name %}
|
||||
{% assign url = comment[1].url %}
|
||||
{% assign date = comment[1].date %}
|
||||
{% assign message = comment[1].message %}
|
||||
{% assign email = comment.email %}
|
||||
{% assign name = comment.name %}
|
||||
{% assign url = comment.url %}
|
||||
{% assign date = comment.date %}
|
||||
{% assign message = comment.message %}
|
||||
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
@@ -153,6 +171,9 @@
|
||||
{% when "utterances" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="utterances-comments"></section>
|
||||
{% when "giscus" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="giscus-comments"></section>
|
||||
{% when "custom" %}
|
||||
{% include /comments-providers/custom.html %}
|
||||
{% endcase %}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.26.1 by Michael Rose
|
||||
Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
-->
|
||||
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Minimal Mistakes Jekyll Theme 4.26.1 by Michael Rose
|
||||
* Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
|
||||
* Free for personal and commercial use under the MIT license
|
||||
* https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
*/
|
||||
@@ -1,21 +1,13 @@
|
||||
{% assign entries = site[include.collection] %}
|
||||
{% assign entries = site[include.collection] | where_exp: "post", "post.hidden != true" %}
|
||||
|
||||
{% if include.sort_by == 'title' %}
|
||||
{% if include.sort_order == 'reverse' %}
|
||||
{% assign entries = entries | sort: 'title' | reverse %}
|
||||
{% else %}
|
||||
{% assign entries = entries | sort: 'title' %}
|
||||
{% endif %}
|
||||
{% elsif include.sort_by == 'date' %}
|
||||
{% if include.sort_order == 'reverse' %}
|
||||
{% assign entries = entries | sort: 'date' | reverse %}
|
||||
{% else %}
|
||||
{% assign entries = entries | sort: 'date' %}
|
||||
{% endif %}
|
||||
{% if include.sort_by %}
|
||||
{% assign entries = entries | sort: include.sort_by %}
|
||||
{% endif %}
|
||||
|
||||
{% if include.sort_order == 'reverse' %}
|
||||
{% assign entries = entries | reverse %}
|
||||
{% endif %}
|
||||
|
||||
{%- for post in entries -%}
|
||||
{%- unless post.hidden -%}
|
||||
{% include archive-single.html %}
|
||||
{%- endunless -%}
|
||||
{% include archive-single.html %}
|
||||
{%- endfor -%}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<figure class="{{ include.class }}">
|
||||
{%- if include.popup -%}<a href="{{ include.image_path | relative_url }}" class="image-popup" title="{% if include.caption %}{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}{% endif %}">{%- endif -%}
|
||||
<img src="{{ include.image_path | relative_url }}"
|
||||
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
|
||||
{%- if include.popup -%}</a>{%- endif -%}
|
||||
{%- if include.caption -%}
|
||||
<figcaption>
|
||||
{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}
|
||||
|
||||
@@ -12,8 +12,10 @@
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
|
||||
{% unless site.atom_feed.hide %}
|
||||
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
|
||||
{% endunless %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="page__footer-copyright">© {{ 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> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
||||
<div class="page__footer-copyright">© {{ 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> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
||||
|
||||
+10
-19
@@ -2,33 +2,24 @@
|
||||
|
||||
{% include seo.html %}
|
||||
|
||||
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
||||
{% unless site.atom_feed.hide %}
|
||||
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
||||
{% endunless %}
|
||||
|
||||
<!-- https://t.co/dKP3o1e -->
|
||||
{%- comment %} https://docs.google.com/presentation/d/1rmxwWa9P6_xHqonmh5ONXRS-jPc5XKbnv99Rjkhe04s/present {% endcomment -%}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<script>
|
||||
<script type="text/javascript">
|
||||
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
||||
{% if site.enable_copy_code_button -%}
|
||||
window.enable_copy_code_button = true;
|
||||
{%- endif %}
|
||||
</script>
|
||||
|
||||
<!-- For all browsers -->
|
||||
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css">
|
||||
|
||||
<!--[if IE]>
|
||||
<style>
|
||||
/* old IE unsupported flexbox fixes */
|
||||
.greedy-nav .site-title {
|
||||
padding-right: 3em;
|
||||
}
|
||||
.greedy-nav button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<![endif]-->
|
||||
<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'">
|
||||
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript>
|
||||
|
||||
{% if site.head_scripts %}
|
||||
{% for script in site.head_scripts %}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class="masthead__menu">
|
||||
<nav id="site-nav" class="greedy-nav">
|
||||
{% unless logo_path == empty %}
|
||||
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt=""></a>
|
||||
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt="{{ site.masthead_title | default: site.title }}"></a>
|
||||
{% endunless %}
|
||||
<a class="site-title" href="{{ '/' | relative_url }}">
|
||||
{{ site.masthead_title | default: site.title }}
|
||||
@@ -14,16 +14,18 @@
|
||||
<ul class="visible-links">
|
||||
{%- for link in site.data.navigation.main -%}
|
||||
<li class="masthead__menu-item">
|
||||
<a href="{{ link.url | relative_url }}"{% if link.description %} title="{{ link.description }}"{% endif %}>{{ link.title }}</a>
|
||||
<a
|
||||
href="{{ link.url | relative_url }}"
|
||||
{% if link.description %} title="{{ link.description }}"{% endif %}
|
||||
{% if link.target %} target="{{ link.target }}"{% endif %}
|
||||
>{{ link.title }}</a>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{% if site.search == true %}
|
||||
<button class="search__toggle" type="button">
|
||||
<span class="visually-hidden">{{ site.data.ui-text[site.locale].search_label | default: "Toggle search" }}</span>
|
||||
<svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16">
|
||||
<path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path>
|
||||
</svg>
|
||||
<i class="fas fa-search"></i>
|
||||
</button>
|
||||
{% endif %}
|
||||
<button class="greedy-nav__toggle hidden" type="button">
|
||||
|
||||
+18
-17
@@ -1,26 +1,27 @@
|
||||
{% assign navigation = site.data.navigation[include.nav] %}
|
||||
|
||||
<nav class="nav__list">
|
||||
{% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %}
|
||||
<input id="ac-toc" name="accordion-toc" type="checkbox" />
|
||||
<label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label>
|
||||
<ul class="nav__items">
|
||||
{% for nav in navigation %}
|
||||
<li>
|
||||
{% if nav.url %}
|
||||
<a href="{{ nav.url | relative_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
|
||||
{% else %}
|
||||
<span class="nav__sub-title">{{ nav.title }}</span>
|
||||
{% endif %}
|
||||
{% for navname in include.nav %}
|
||||
{% assign navigation = site.data.navigation[navname] %}
|
||||
{% for nav in navigation %}
|
||||
<li>
|
||||
{% if nav.url %}
|
||||
<a href="{{ nav.url | relative_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
|
||||
{% else %}
|
||||
<span class="nav__sub-title">{{ nav.title }}</span>
|
||||
{% endif %}
|
||||
|
||||
{% if nav.children != null %}
|
||||
<ul>
|
||||
{% for child in nav.children %}
|
||||
<li><a href="{{ child.url | relative_url }}"{% if child.url == page.url %} class="active"{% endif %}>{{ child.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% if nav.children != null %}
|
||||
<ul>
|
||||
{% for child in nav.children %}
|
||||
<li><a href="{{ child.url | relative_url }}"{% if child.url == page.url %} class="active"{% endif %}>{{ child.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
|
||||
{% if page.last_modified_at %}
|
||||
<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: "%B %-d, %Y" }}</time></p>
|
||||
<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>
|
||||
{% elsif page.date %}
|
||||
<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: "%B %-d, %Y" }}</time></p>
|
||||
{% endif %}
|
||||
<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>
|
||||
{% endif %}
|
||||
@@ -1,9 +1,13 @@
|
||||
{% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %}
|
||||
|
||||
{% if page.header.overlay_filter contains "rgba" %}
|
||||
{% if page.header.overlay_filter contains "gradient" %}
|
||||
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
|
||||
{% elsif page.header.overlay_filter contains "rgba" %}
|
||||
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
|
||||
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
|
||||
{% elsif page.header.overlay_filter %}
|
||||
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
|
||||
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.image_description %}
|
||||
@@ -15,7 +19,7 @@
|
||||
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
|
||||
|
||||
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
|
||||
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}"
|
||||
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}"
|
||||
>
|
||||
{% if page.header.overlay_color or page.header.overlay_image %}
|
||||
<div class="wrapper">
|
||||
@@ -32,14 +36,12 @@
|
||||
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
|
||||
{% endif %}
|
||||
{% include page__meta.html %}
|
||||
{% if page.header.cta_url %}
|
||||
<p><a href="{{ page.header.cta_url | relative_url }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||
{% endif %}
|
||||
{% if page.header.actions %}
|
||||
<p>
|
||||
{% for action in page.header.actions %}
|
||||
<a href="{{ action.url | relative_url }}" class="btn btn--light-outline btn--large">{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a>
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
{% assign date = document.date %}
|
||||
<span class="page__meta-date">
|
||||
<i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-calendar-alt" aria-hidden="true"></i>
|
||||
<time datetime="{{ date | date_to_xmlschema }}">{{ date | date: "%B %-d, %Y" }}</time>
|
||||
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
|
||||
<time datetime="{{ date | date_to_xmlschema }}">{{ date | date: date_format }}</time>
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{% assign posts = include.posts | where_exp: "post", "post.hidden != true" %}
|
||||
<div class="page__related">
|
||||
{% include before-related.html %}
|
||||
<h2 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h2>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in posts limit:4 %}
|
||||
{% if post.id == page.id %}{% continue %}{% endif %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,70 @@
|
||||
{% if paginator.total_pages > 1 %}
|
||||
<nav class="pagination">
|
||||
{% assign paginate_path_last = site.paginate_path | split: '/' | last %}
|
||||
{% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: paginate_path_last, '' | replace: '//', '/' | relative_url %}
|
||||
<ul>
|
||||
{% comment %} Link for previous page {% endcomment %}
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} First page {% endcomment %}
|
||||
{% if paginator.page == 1 %}
|
||||
<li><a href="#" class="disabled current">1</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ first_page_path }}">1</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_start = 2 %}
|
||||
{% if paginator.page > 4 %}
|
||||
{% assign page_start = paginator.page | minus: 2 %}
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_end = paginator.total_pages | minus: 1 %}
|
||||
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
|
||||
{% if pages_to_end > 4 %}
|
||||
{% assign page_end = paginator.page | plus: 2 %}
|
||||
{% endif %}
|
||||
|
||||
{% for index in (page_start..page_end) %}
|
||||
{% if index == paginator.page %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li>
|
||||
{% else %}
|
||||
{% comment %} Distance from current page and this link {% endcomment %}
|
||||
{% assign dist = paginator.page | minus: index %}
|
||||
{% if dist < 0 %}
|
||||
{% comment %} Distance must be a positive value {% endcomment %}
|
||||
{% assign dist = 0 | minus: dist %}
|
||||
{% endif %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
{% if pages_to_end > 3 %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.page == paginator.total_pages %}
|
||||
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Link next page {% endcomment %}
|
||||
{% if paginator.next_page %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,68 @@
|
||||
<nav class="pagination">
|
||||
<ul>
|
||||
{% comment %} Link for previous page {% endcomment %}
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<li><a href="{{ paginator.first_page_path | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ paginator.previous_page_path | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Determine whether the first page and the last page are already included in trail {% endcomment %}
|
||||
{% for trail in paginator.page_trail %}
|
||||
{% if trail.num == paginator.first_page %}
|
||||
{% assign has_first_page = true %}
|
||||
{% elsif trail.num == paginator.last_page %}
|
||||
{% assign has_last_page = true %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} First page {% endcomment %}
|
||||
{% unless has_first_page %}
|
||||
{% if paginator.page == 1 %}
|
||||
<li><a href="#" class="disabled current">1</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ paginator.first_page_path | relative_url }}">1</a></li>
|
||||
{% endif %}
|
||||
{% endunless %}
|
||||
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
{% assign ellipsis_start = paginator.first_page | plus: 1 %}
|
||||
{% if paginator.page_trail.first.num > ellipsis_start %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Main pagination trail {% endcomment %}
|
||||
{% for trail in paginator.page_trail %}
|
||||
{% if paginator.page == trail.num %}
|
||||
<li><a href="{{ trail.path | remove: 'index.html' | relative_url }}" class="disabled current">{{ trail.num }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ trail.path | remove: 'index.html' | relative_url }}">{{ trail.num }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
{% assign ellipsis_end = paginator.last_page | minus: 1 %}
|
||||
{% if paginator.page_trail.last.num < ellipsis_end %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% unless has_last_page %}
|
||||
{% if paginator.page == paginator.total_pages %}
|
||||
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ paginator.last_page_path | remove: 'index.html' | relative_url }}">{{ paginator.total_pages }}</a></li>
|
||||
{% endif %}
|
||||
{% endunless %}
|
||||
|
||||
{% comment %} Link next page {% endcomment %}
|
||||
{% if paginator.next_page %}
|
||||
<li><a href="{{ paginator.next_page_path | remove: 'index.html' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
@@ -1,69 +1,7 @@
|
||||
{% if paginator.total_pages > 1 %}
|
||||
<nav class="pagination">
|
||||
{% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %}
|
||||
<ul>
|
||||
{% comment %} Link for previous page {% endcomment %}
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} First page {% endcomment %}
|
||||
{% if paginator.page == 1 %}
|
||||
<li><a href="#" class="disabled current">1</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ first_page_path }}">1</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_start = 2 %}
|
||||
{% if paginator.page > 4 %}
|
||||
{% assign page_start = paginator.page | minus: 2 %}
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_end = paginator.total_pages | minus: 1 %}
|
||||
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
|
||||
{% if pages_to_end > 4 %}
|
||||
{% assign page_end = paginator.page | plus: 2 %}
|
||||
{% endif %}
|
||||
|
||||
{% for index in (page_start..page_end) %}
|
||||
{% if index == paginator.page %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li>
|
||||
{% else %}
|
||||
{% comment %} Distance from current page and this link {% endcomment %}
|
||||
{% assign dist = paginator.page | minus: index %}
|
||||
{% if dist < 0 %}
|
||||
{% comment %} Distance must be a positive value {% endcomment %}
|
||||
{% assign dist = 0 | minus: dist %}
|
||||
{% endif %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
{% if pages_to_end > 3 %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.page == paginator.total_pages %}
|
||||
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Link next page {% endcomment %}
|
||||
{% if paginator.next_page %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% if site.paginate %}
|
||||
{% include paginator-v1.html %}
|
||||
{% elsif site.pagination.enabled %}
|
||||
{% include paginator-v2.html %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{%- for post in site.categories[include.taxonomy] -%}
|
||||
{%- unless post.hidden -%}
|
||||
{% include archive-single.html %}
|
||||
{%- endunless -%}
|
||||
{% assign posts = site.categories[include.taxonomy] | where_exp: "post", "post.hidden != true" %}
|
||||
{%- for post in posts -%}
|
||||
{% include archive-single.html %}
|
||||
{%- endfor -%}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{%- for post in site.tags[include.taxonomy] -%}
|
||||
{%- unless post.hidden -%}
|
||||
{% include archive-single.html %}
|
||||
{%- endunless -%}
|
||||
{% assign posts = site.tags[include.taxonomy] | where_exp: "post", "post.hidden != true" %}
|
||||
{%- for post in posts -%}
|
||||
{% include archive-single.html %}
|
||||
{%- endfor -%}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{% assign items_max = 0 %}
|
||||
{% for item in include.taxonomies %}
|
||||
{% if item[1].size > items_max %}
|
||||
{% assign items_max = item[1].size %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<ul class="taxonomy__index">
|
||||
{% for i in (1..items_max) reversed %}
|
||||
{% for item in include.taxonomies %}
|
||||
{% if item[1].size == i %}
|
||||
<li>
|
||||
<a href="#{{ item[0] | slugify }}">
|
||||
<strong>{{ item[0] }}</strong> <span class="taxonomy__count">{{ i }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||
{% for i in (1..items_max) reversed %}
|
||||
{% for taxonomy in include.taxonomies %}
|
||||
{% if taxonomy[1].size == i %}
|
||||
<section id="{{ taxonomy[0] | slugify }}" class="taxonomy__section">
|
||||
<h2 class="archive__subtitle">{{ taxonomy[0] }}</h2>
|
||||
<div class="entries-{{ entries_layout }}">
|
||||
{% for post in taxonomy.last %}
|
||||
{% include archive-single.html type=entries_layout %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,16 @@
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
{% if site.social.type == "Organization" -%}
|
||||
"@type": "Organization",
|
||||
"url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
|
||||
"logo": {{ site_og_image | jsonify }}{% endif %}{% if site.social.links %},
|
||||
"sameAs": {{ site.social.links | jsonify }}{% endif %}
|
||||
{%- else -%}
|
||||
"@type": "Person",
|
||||
"name": {{ site.social.name | default: site.name | jsonify }},
|
||||
"url": {{ '/' | absolute_url | jsonify }}{% if site.social.links %},
|
||||
"sameAs": {{ site.social.links | jsonify }}{% endif %}
|
||||
{%- endif %}
|
||||
}
|
||||
</script>
|
||||
@@ -1,60 +1,81 @@
|
||||
<!-- Including InstantSearch.js library and styling -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
|
||||
|
||||
<script>
|
||||
// Instanciating InstantSearch.js with Algolia credentials
|
||||
const search = instantsearch({
|
||||
appId: '{{ site.algolia.application_id }}',
|
||||
apiKey: '{{ site.algolia.search_only_api_key }}',
|
||||
indexName: '{{ site.algolia.index_name }}',
|
||||
searchParameters: {
|
||||
restrictSearchableAttributes: [
|
||||
'title',
|
||||
'content'
|
||||
]
|
||||
}
|
||||
});
|
||||
// Including InstantSearch.js library and styling
|
||||
const loadSearch = function() {
|
||||
const loadCSS = function(src) {
|
||||
var link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
link.href = src;
|
||||
link.media = 'all';
|
||||
document.head.appendChild(link);
|
||||
};
|
||||
|
||||
const hitTemplate = function(hit) {
|
||||
const url = hit.url;
|
||||
const title = hit._highlightResult.title.value;
|
||||
const content = hit._highlightResult.html.value;
|
||||
var script = document.createElement('script');
|
||||
script.setAttribute("type", "text/javascript");
|
||||
script.setAttribute("src", "https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js");
|
||||
script.addEventListener("load", function() {
|
||||
// Instantiating InstantSearch.js with Algolia credentials
|
||||
const search = instantsearch({
|
||||
appId: '{{ site.algolia.application_id }}',
|
||||
apiKey: '{{ site.algolia.search_only_api_key }}',
|
||||
indexName: '{{ site.algolia.index_name }}',
|
||||
searchParameters: {
|
||||
restrictSearchableAttributes: ['title', 'content']
|
||||
}
|
||||
});
|
||||
|
||||
return `
|
||||
<div class="list__item">
|
||||
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
|
||||
<div class="archive__item-excerpt" itemprop="description">${content}</div>
|
||||
</article>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
const hitTemplate = function(hit) {
|
||||
const url = hit.url;
|
||||
const hightlight = hit._highlightResult;
|
||||
const title = hightlight.title && hightlight.title.value || "";
|
||||
const content = hightlight.html && hightlight.html.value || "";
|
||||
|
||||
// Adding searchbar and results widgets
|
||||
search.addWidget(
|
||||
instantsearch.widgets.searchBox({
|
||||
container: '.search-searchbar',
|
||||
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
|
||||
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
|
||||
})
|
||||
);
|
||||
search.addWidget(
|
||||
instantsearch.widgets.hits({
|
||||
container: '.search-hits',
|
||||
templates: {
|
||||
item: hitTemplate,
|
||||
empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
|
||||
return `
|
||||
<div class="list__item">
|
||||
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
|
||||
<div class="archive__item-excerpt" itemprop="description">${content}</div>
|
||||
</article>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
// Adding searchbar and results widgets
|
||||
search.addWidget(
|
||||
instantsearch.widgets.searchBox({
|
||||
container: '.search-searchbar',
|
||||
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
|
||||
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
|
||||
})
|
||||
);
|
||||
search.addWidget(
|
||||
instantsearch.widgets.hits({
|
||||
container: '.search-hits',
|
||||
templates: {
|
||||
item: hitTemplate,
|
||||
empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
if (!search.started) {
|
||||
search.start();
|
||||
}
|
||||
});
|
||||
document.body.appendChild(script);
|
||||
|
||||
loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css");
|
||||
loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css");
|
||||
};
|
||||
|
||||
// Starting the search only when toggle is clicked
|
||||
$(document).ready(function () {
|
||||
$(document).ready(function() {
|
||||
var scriptLoaded = false;
|
||||
|
||||
$(".search__toggle").on("click", function() {
|
||||
if(!search.started) {
|
||||
search.start();
|
||||
if (!scriptLoaded) {
|
||||
loadSearch();
|
||||
scriptLoaded = true;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||
{%- case search_provider -%}
|
||||
{%- when "lunr" -%}
|
||||
<form class="search-content__form" onkeydown="return event.key != 'Enter';">
|
||||
<form class="search-content__form" onkeydown="return event.key != 'Enter';" role="search">
|
||||
<label class="sr-only" for="search">
|
||||
{{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
|
||||
</label>
|
||||
@@ -10,7 +10,7 @@
|
||||
</form>
|
||||
<div id="results" class="results"></div>
|
||||
{%- when "google" -%}
|
||||
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
|
||||
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id" role="search">
|
||||
<label class="sr-only" for="cse-search-input-box-id">
|
||||
{{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
|
||||
</label>
|
||||
|
||||
+18
-43
@@ -1,24 +1,13 @@
|
||||
<!-- begin _includes/seo.html -->
|
||||
{%- if site.url -%}
|
||||
{%- assign seo_url = site.url | append: site.baseurl -%}
|
||||
{%- endif -%}
|
||||
{%- assign seo_url = seo_url | default: site.github.url -%}
|
||||
{%- assign title_separator = site.title_separator | default: '-' -%}
|
||||
|
||||
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
||||
{%- assign page_title = page.title | default: site.title | replace: '|', '|' -%}
|
||||
{%- assign seo_title = page_title | append: " " | append: title_separator | append: " " | append: site.title | replace: '|', '|' -%}
|
||||
|
||||
{%- if page.title -%}
|
||||
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
|
||||
{%- endif -%}
|
||||
{%- assign page_title = page_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
||||
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
||||
|
||||
{%- if seo_title -%}
|
||||
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
||||
{%- endif -%}
|
||||
|
||||
{% if page.canonical_url %}
|
||||
{%- assign canonical_url = page.canonical_url %}
|
||||
{% else %}
|
||||
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
|
||||
{% endif %}
|
||||
{%- assign canonical_url = page.canonical_url | default: page.url | replace: "/index.html", "/" | absolute_url %}
|
||||
|
||||
{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
|
||||
{%- if seo_description -%}
|
||||
@@ -32,14 +21,9 @@
|
||||
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url -%}
|
||||
{%- assign page_large_image = page_large_image | escape -%}
|
||||
|
||||
{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url -%}
|
||||
{%- assign page_teaser_image = page_teaser_image | escape -%}
|
||||
|
||||
{%- assign site_og_image = site.og_image | absolute_url -%}
|
||||
{%- assign site_og_image = site_og_image | escape -%}
|
||||
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url | escape -%}
|
||||
{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url | escape -%}
|
||||
{%- assign site_og_image = site.og_image | absolute_url | escape -%}
|
||||
|
||||
{%- if page.date -%}
|
||||
{%- assign og_type = "article" -%}
|
||||
@@ -47,7 +31,7 @@
|
||||
{%- assign og_type = "website" -%}
|
||||
{%- endif -%}
|
||||
|
||||
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
||||
<title>{{ seo_title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
||||
<meta name="description" content="{{ seo_description }}">
|
||||
|
||||
{% if author.name %}
|
||||
@@ -60,7 +44,7 @@
|
||||
<meta property="og:type" content="{{ og_type }}">
|
||||
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
|
||||
<meta property="og:site_name" content="{{ site.title }}">
|
||||
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||
<meta property="og:title" content="{{ page_title }}">
|
||||
<meta property="og:url" content="{{ canonical_url }}">
|
||||
|
||||
{% if seo_description %}
|
||||
@@ -75,7 +59,7 @@
|
||||
|
||||
{% if site.twitter.username %}
|
||||
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
||||
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||
<meta name="twitter:title" content="{{ page_title }}">
|
||||
<meta name="twitter:description" content="{{ seo_description }}">
|
||||
<meta name="twitter:url" content="{{ canonical_url }}">
|
||||
|
||||
@@ -121,21 +105,9 @@
|
||||
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
||||
{% endif %}
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
{% if site.social.type == "Organization" %}
|
||||
"@type": "Organization",
|
||||
"url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
|
||||
"logo": {{ site_og_image | jsonify }}{% endif %}
|
||||
{% else %}
|
||||
"@type": "Person",
|
||||
"name": {{ site.social.name | default: site.name | jsonify }},
|
||||
"url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %},
|
||||
"sameAs": {{ site.social.links | jsonify }}{% endif %}
|
||||
{% endif %}
|
||||
}
|
||||
</script>
|
||||
{% if page.url == '/' %}
|
||||
{% include schema.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.google_site_verification %}
|
||||
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
||||
@@ -152,4 +124,7 @@
|
||||
{% if site.naver_site_verification %}
|
||||
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
|
||||
{% endif %}
|
||||
{% if site.baidu_site_verification %}
|
||||
<meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}">
|
||||
{% endif %}
|
||||
<!-- end _includes/seo.html -->
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<nav class="skip-links">
|
||||
<h2 class="screen-reader-text">{{ site.data.ui-text[site.locale].skip_links | default: 'Skip links' }}</h2>
|
||||
<ul>
|
||||
<li><a href="#site-nav" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_primary_nav | default: 'Skip to primary navigation' }}</a></li>
|
||||
<li><a href="#main" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_content | default: 'Skip to content' }}</a></li>
|
||||
|
||||
@@ -7,5 +7,5 @@
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
</section>
|
||||
|
||||
+3
-10
@@ -6,20 +6,13 @@
|
||||
{% endcase %}
|
||||
|
||||
{% if site.tag_archive.path %}
|
||||
{% comment %}
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}|{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign tag_hashes = page_tags | split: ',' | sort %}
|
||||
{% assign tags_sorted = page.tags | sort_natural %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in tag_hashes %}
|
||||
{% assign keyValue = hash | split: '|' %}
|
||||
{% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<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 %}
|
||||
{% for tag_word in tags_sorted %}
|
||||
<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 %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
+93
-74
@@ -24,7 +24,7 @@
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
{% endcomment %}
|
||||
{% comment %}
|
||||
Version 1.0.14
|
||||
Version 1.2.1
|
||||
https://github.com/allejo/jekyll-toc
|
||||
|
||||
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
|
||||
@@ -44,34 +44,53 @@
|
||||
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
|
||||
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
|
||||
* submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
|
||||
* baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
|
||||
* base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
|
||||
* anchor_class (string) : '' - add custom class(es) for each anchor element
|
||||
* skipNoIDs (bool) : false - skip headers that do not have an `id` attribute
|
||||
* skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
|
||||
* flat_toc (bool) : false - when set to true, the TOC will be a single level list
|
||||
|
||||
Output:
|
||||
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
|
||||
generate the table of contents and will NOT output the markdown given to it
|
||||
{% endcomment %}
|
||||
|
||||
{% capture my_toc %}{% endcapture %}
|
||||
{% capture newline %}
|
||||
{% endcapture %}
|
||||
{% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
|
||||
|
||||
{% capture deprecation_warnings %}{% endcapture %}
|
||||
|
||||
{% if include.baseurl %}
|
||||
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if include.skipNoIDs %}
|
||||
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% capture jekyll_toc %}{% endcapture %}
|
||||
{% assign orderedList = include.ordered | default: false %}
|
||||
{% assign skipNoIDs = include.skipNoIDs | default: false %}
|
||||
{% assign flatToc = include.flat_toc | default: false %}
|
||||
{% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
|
||||
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
|
||||
{% assign minHeader = include.h_min | default: 1 %}
|
||||
{% assign maxHeader = include.h_max | default: 6 %}
|
||||
{% assign nodes = include.html | split: '<h' %}
|
||||
{% assign firstHeader = true %}
|
||||
{% assign previousLevel = 0 %}
|
||||
{% assign nodes = include.html | strip | split: '<h' %}
|
||||
|
||||
{% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %}
|
||||
{% assign firstHeader = true %}
|
||||
{% assign currLevel = 0 %}
|
||||
{% assign lastLevel = 0 %}
|
||||
|
||||
{% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
|
||||
|
||||
{% for node in nodes %}
|
||||
{% if node == "" %}
|
||||
{% continue %}
|
||||
{% endif %}
|
||||
|
||||
{% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
|
||||
{% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
|
||||
|
||||
{% if headerLevel < minHeader or headerLevel > maxHeader %}
|
||||
{% if currLevel < minHeader or currLevel > maxHeader %}
|
||||
{% continue %}
|
||||
{% endif %}
|
||||
|
||||
@@ -79,92 +98,92 @@
|
||||
|
||||
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
|
||||
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
|
||||
{% assign html_id = _idWorkspace[0] %}
|
||||
{% assign htmlID = _idWorkspace[0] %}
|
||||
|
||||
{% assign _classWorkspace = _workspace[0] | split: 'class="' %}
|
||||
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
|
||||
{% assign html_class = _classWorkspace[0] %}
|
||||
{% assign htmlClass = _classWorkspace[0] %}
|
||||
|
||||
{% if html_class contains "no_toc" %}
|
||||
{% if htmlClass contains "no_toc" %}
|
||||
{% continue %}
|
||||
{% endif %}
|
||||
|
||||
{% if firstHeader %}
|
||||
{% assign firstHeader = false %}
|
||||
{% assign minHeader = headerLevel %}
|
||||
{% assign minHeader = currLevel %}
|
||||
{% endif %}
|
||||
|
||||
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
|
||||
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
|
||||
|
||||
{% assign indentAmount = headerLevel | minus: minHeader %}
|
||||
{% assign space = '' %}
|
||||
{% for i in (1..indentAmount) %}
|
||||
{% assign space = space | prepend: ' ' %}
|
||||
{% endfor %}
|
||||
|
||||
{% if include.item_class and include.item_class != blank %}
|
||||
{% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %}
|
||||
{% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% capture anchor_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
|
||||
{% capture anchor_body %}{{ anchor_body | replace: "|", "\|" }}{% endcapture %}
|
||||
{% if include.submenu_class and include.submenu_class != blank %}
|
||||
{% assign subMenuLevel = currLevel | minus: 1 %}
|
||||
{% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if html_id %}
|
||||
{% capture list_item %}[{{ anchor_body }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %}
|
||||
{% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
|
||||
|
||||
{% if htmlID %}
|
||||
{% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
|
||||
|
||||
{% if include.anchor_class %}
|
||||
{% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
|
||||
{% elsif skipNoIDs == true %}
|
||||
{% continue %}
|
||||
{% else %}
|
||||
{% capture list_item %}{{ anchor_body }}{% endcapture %}
|
||||
{% capture listItem %}{{ anchorBody }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<!--
|
||||
If we have a submenu class and we're unindenting, then we need to add a "closing" class to this group of bullet
|
||||
points
|
||||
-->
|
||||
{% if include.submenu_class and previousLevel > indentAmount %}
|
||||
<!--
|
||||
`space` is the current indentation, so we if want to close off the previous grouping, we need to add one
|
||||
more level of indentation
|
||||
-->
|
||||
{% assign submenuIndentation = space | prepend: ' ' %}
|
||||
{% if currLevel > lastLevel and flatToc == false %}
|
||||
{% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
|
||||
{% elsif currLevel < lastLevel and flatToc == false %}
|
||||
{% assign repeatCount = lastLevel | minus: currLevel %}
|
||||
|
||||
{% capture my_toc %}{{ my_toc }}
|
||||
{{ submenuIndentation }}{:.{{ include.submenu_class | replace: '%level%', previousLevel }}}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% capture my_toc %}{{ my_toc }}
|
||||
{{ space }}{{ listModifier }} {{ listItemClass }} {{ list_item }}{% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %}
|
||||
|
||||
{% assign previousLevel = indentAmount %}
|
||||
{% endfor %}
|
||||
|
||||
{% if include.class and include.class != blank %}
|
||||
{% capture my_toc %}{:.{{ include.class }}}
|
||||
{{ my_toc | lstrip }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if include.id %}
|
||||
{% capture my_toc %}{: #{{ include.id }}}
|
||||
{{ my_toc | lstrip }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<!--
|
||||
If we have a submenu class, we need to close off all the remaining list item groups so that submenu classes are
|
||||
applied correctly to them
|
||||
-->
|
||||
{% if include.submenu_class != blank %}
|
||||
<!-- The last level of indentation that we were at, we need to work backwards from there closing each group -->
|
||||
{% for i in (1..previousLevel) %}
|
||||
{% assign lvl = previousLevel | plus: 1 | minus: i %} <!-- Invert the indent level based on `i` -->
|
||||
{% assign closingSpace = '' %}
|
||||
|
||||
{% for i in (1..lvl) %}
|
||||
{% assign closingSpace = closingSpace | prepend: ' ' %}
|
||||
{% for i in (1..repeatCount) %}
|
||||
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
|
||||
{% endfor %}
|
||||
|
||||
{% capture my_toc %}{{ my_toc }}
|
||||
{{ closingSpace }}{:.{{ include.submenu_class | replace: '%level%', lvl }}}{% endcapture %}
|
||||
{% endfor %}
|
||||
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
|
||||
{% else %}
|
||||
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
|
||||
|
||||
{% assign lastLevel = currLevel %}
|
||||
{% assign firstHeader = false %}
|
||||
{% endfor %}
|
||||
|
||||
{% if flatToc == true %}
|
||||
{% assign repeatCount = 1 %}
|
||||
{% else %}
|
||||
{% assign repeatCount = minHeader | minus: 1 %}
|
||||
{% assign repeatCount = lastLevel | minus: repeatCount %}
|
||||
{% endif %}
|
||||
{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
|
||||
|
||||
{% for i in (1..repeatCount) %}
|
||||
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
|
||||
{% endfor %}
|
||||
|
||||
{% if jekyll_toc != '' %}
|
||||
{% assign rootAttributes = '' %}
|
||||
{% if include.class and include.class != blank %}
|
||||
{% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if include.id and include.id != blank %}
|
||||
{% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if rootAttributes %}
|
||||
{% assign nodes = jekyll_toc | split: '>' %}
|
||||
{% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}}
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
{% endcapture %}
|
||||
{% assign video_src = video_src | strip %}
|
||||
|
||||
<!-- Courtesy of embedresponsively.com //-->
|
||||
<!-- Courtesy of embedresponsively.com -->
|
||||
{% unless video_src == "" %}
|
||||
<div class="responsive-video-container">
|
||||
<iframe src="{{ video_src }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>
|
||||
|
||||
@@ -23,4 +23,4 @@ layout: default
|
||||
{% endunless %}
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,40 +4,4 @@ layout: archive
|
||||
|
||||
{{ content }}
|
||||
|
||||
{% assign categories_max = 0 %}
|
||||
{% for category in site.categories %}
|
||||
{% if category[1].size > categories_max %}
|
||||
{% assign categories_max = category[1].size %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<ul class="taxonomy__index">
|
||||
{% for i in (1..categories_max) reversed %}
|
||||
{% for category in site.categories %}
|
||||
{% if category[1].size == i %}
|
||||
<li>
|
||||
<a href="#{{ category[0] | slugify }}">
|
||||
<strong>{{ category[0] }}</strong> <span class="taxonomy__count">{{ i }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||
{% for i in (1..categories_max) reversed %}
|
||||
{% for category in site.categories %}
|
||||
{% if category[1].size == i %}
|
||||
<section id="{{ category[0] | slugify | downcase }}" class="taxonomy__section">
|
||||
<h2 class="archive__subtitle">{{ category[0] }}</h2>
|
||||
<div class="entries-{{ entries_layout }}">
|
||||
{% for post in category.last %}
|
||||
{% include archive-single.html type=entries_layout %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% include posts-taxonomy.html taxonomies=site.categories %}
|
||||
|
||||
@@ -2,12 +2,7 @@
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.21.0 by Michael Rose
|
||||
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
-->
|
||||
{% include copyright.html %}
|
||||
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
|
||||
<head>
|
||||
{% include head.html %}
|
||||
@@ -16,11 +11,11 @@
|
||||
|
||||
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
|
||||
{% include_cached skip-links.html %}
|
||||
{% include_cached browser-upgrade.html %}
|
||||
{% include_cached masthead.html %}
|
||||
|
||||
<div class="initial-content">
|
||||
{{ content }}
|
||||
{% include after-content.html %}
|
||||
</div>
|
||||
|
||||
{% if site.search == true %}
|
||||
@@ -37,6 +32,5 @@
|
||||
</div>
|
||||
|
||||
{% include scripts.html %}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -25,11 +25,11 @@ layout: default
|
||||
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||
{%- case search_provider -%}
|
||||
{%- when "lunr" -%}
|
||||
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<input type="text" id="search" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<div id="results" class="results"></div>
|
||||
{%- when "google" -%}
|
||||
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
|
||||
<input type="text" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<input type="text" id="cse-search-input-box-id" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
</form>
|
||||
<div id="results" class="results">
|
||||
<gcse:searchresults-only></gcse:searchresults-only>
|
||||
|
||||
+14
-23
@@ -8,7 +8,11 @@ layout: default
|
||||
{% include page__hero_video.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url != "/" and site.breadcrumbs %}
|
||||
{% assign breadcrumbs_enabled = site.breadcrumbs %}
|
||||
{% if page.breadcrumbs != null %}
|
||||
{% assign breadcrumbs_enabled = page.breadcrumbs %}
|
||||
{% endif %}
|
||||
{% if page.url != "/" and breadcrumbs_enabled %}
|
||||
{% unless paginator %}
|
||||
{% include breadcrumbs.html %}
|
||||
{% endunless %}
|
||||
@@ -18,7 +22,7 @@ layout: default
|
||||
{% include sidebar.html %}
|
||||
|
||||
<article class="page" itemscope itemtype="https://schema.org/CreativeWork">
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | replace: '|', '|' | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %}
|
||||
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">{% endif %}
|
||||
@@ -26,7 +30,11 @@ layout: default
|
||||
<div class="page__inner-wrap">
|
||||
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||
<header>
|
||||
{% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
|
||||
{% if page.title -%}
|
||||
<h1 id="page-title" class="page__title" itemprop="headline">
|
||||
<a href="{{ page.url | absolute_url }}" itemprop="url">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</a>
|
||||
</h1>
|
||||
{%- endif %}
|
||||
{% include page__meta.html %}
|
||||
</header>
|
||||
{% endunless %}
|
||||
@@ -36,7 +44,7 @@ layout: default
|
||||
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
|
||||
<nav class="toc">
|
||||
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
|
||||
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %}
|
||||
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" skip_no_ids=true %}
|
||||
</nav>
|
||||
</aside>
|
||||
{% endif %}
|
||||
@@ -64,26 +72,9 @@ layout: default
|
||||
|
||||
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
|
||||
{% if page.id and page.related and site.related_posts.size > 0 %}
|
||||
<div class="page__related">
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.related_posts limit:4 %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% include page__related.html posts=site.related_posts %}
|
||||
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
|
||||
{% elsif page.id and page.related %}
|
||||
<div class="page__related">
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.posts limit:4 %}
|
||||
{% if post.id == page.id %}
|
||||
{% continue %}
|
||||
{% endif %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% include page__related.html posts=site.posts %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
+1
-37
@@ -4,40 +4,4 @@ layout: archive
|
||||
|
||||
{{ content }}
|
||||
|
||||
{% assign tags_max = 0 %}
|
||||
{% for tag in site.tags %}
|
||||
{% if tag[1].size > tags_max %}
|
||||
{% assign tags_max = tag[1].size %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<ul class="taxonomy__index">
|
||||
{% for i in (1..tags_max) reversed %}
|
||||
{% for tag in site.tags %}
|
||||
{% if tag[1].size == i %}
|
||||
<li>
|
||||
<a href="#{{ tag[0] | slugify }}">
|
||||
<strong>{{ tag[0] }}</strong> <span class="taxonomy__count">{{ i }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||
{% for i in (1..tags_max) reversed %}
|
||||
{% for tag in site.tags %}
|
||||
{% if tag[1].size == i %}
|
||||
<section id="{{ tag[0] | slugify | downcase }}" class="taxonomy__section">
|
||||
<h2 class="archive__subtitle">{{ tag[0] }}</h2>
|
||||
<div class="entries-{{ entries_layout }}">
|
||||
{% for post in tag.last %}
|
||||
{% include archive-single.html type=entries_layout %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% include posts-taxonomy.html taxonomies=site.tags %}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
/*!
|
||||
* Minimal Mistakes Jekyll Theme 4.21.0 by Michael Rose
|
||||
* Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
|
||||
* Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE)
|
||||
*/
|
||||
/* Copyright comment */
|
||||
@import "minimal-mistakes/copyright";
|
||||
|
||||
/* Variables */
|
||||
@import "minimal-mistakes/variables";
|
||||
|
||||
@@ -160,24 +160,6 @@ pre {
|
||||
overflow-x: auto; /* add scrollbars to wide code blocks*/
|
||||
}
|
||||
|
||||
p > code,
|
||||
a > code,
|
||||
li > code,
|
||||
figcaption > code,
|
||||
td > code {
|
||||
padding-top: 0.1rem;
|
||||
padding-bottom: 0.1rem;
|
||||
font-size: 0.8em;
|
||||
background: $code-background-color;
|
||||
border-radius: $border-radius;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0"; /* non-breaking space*/
|
||||
}
|
||||
}
|
||||
|
||||
/* horizontal rule */
|
||||
|
||||
hr {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Minimal Mistakes Jekyll Theme 4.26.1 by Michael Rose
|
||||
* Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
|
||||
* Free for personal and commercial use under the MIT license
|
||||
* https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
*/
|
||||
@@ -357,37 +357,3 @@ select:focus {
|
||||
left: 50%;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
/*
|
||||
Google search form
|
||||
========================================================================== */
|
||||
|
||||
#goog-fixurl {
|
||||
ul {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#goog-wm-qt {
|
||||
width: auto;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 20px;
|
||||
padding: 8px 20px;
|
||||
display: inline-block;
|
||||
font-size: $type-size-6;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
border-width: 2px !important;
|
||||
border-style: solid !important;
|
||||
border-color: $border-color;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
#goog-wm-sb {
|
||||
@extend .btn;
|
||||
}
|
||||
|
||||
@@ -200,8 +200,8 @@
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
img{
|
||||
|
||||
img {
|
||||
-webkit-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
@mixin notice($notice-color) {
|
||||
margin: 2em 0 !important; /* override*/
|
||||
padding: 1em;
|
||||
color: $dark-gray;
|
||||
color: $text-color;
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-6 !important;
|
||||
text-indent: initial; /* override*/
|
||||
background-color: mix(#fff, $notice-color, 90%);
|
||||
background-color: mix($background-color, $notice-color, $notice-background-mix);
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 1px rgba($notice-color, 0.25);
|
||||
|
||||
@@ -46,15 +46,19 @@
|
||||
}
|
||||
|
||||
a {
|
||||
color: $notice-color;
|
||||
color: mix(#000, $notice-color, 10%);
|
||||
|
||||
&:hover {
|
||||
color: mix(#000, $notice-color, 40%);
|
||||
color: mix(#000, $notice-color, 50%);
|
||||
}
|
||||
}
|
||||
|
||||
@at-root #{selector-unify(&, "blockquote")} {
|
||||
border-left-color: mix(#000, $notice-color, 10%);
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: mix(#fff, $notice-color, 95%)
|
||||
background-color: mix($background-color, $notice-color, $code-notice-background-mix)
|
||||
}
|
||||
|
||||
pre code {
|
||||
|
||||
@@ -72,6 +72,11 @@ body {
|
||||
margin-top: 0;
|
||||
line-height: 1;
|
||||
|
||||
a {
|
||||
color: $text-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
& + .page__meta {
|
||||
margin-top: -0.5em;
|
||||
}
|
||||
@@ -134,6 +139,20 @@ body {
|
||||
}
|
||||
}
|
||||
|
||||
:not(pre) > code {
|
||||
padding-top: 0.1rem;
|
||||
padding-bottom: 0.1rem;
|
||||
font-size: 0.8em;
|
||||
background: $code-background-color;
|
||||
border-radius: $border-radius;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0"; /* non-breaking space*/
|
||||
}
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: 1em;
|
||||
font-family: $sans-serif;
|
||||
|
||||
@@ -89,6 +89,13 @@
|
||||
position: sticky;
|
||||
top: 2em;
|
||||
float: right;
|
||||
|
||||
.toc {
|
||||
.toc__menu {
|
||||
overflow-y: auto;
|
||||
max-height: calc(100vh - 7em);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -211,118 +211,35 @@ body:hover .visually-hidden button {
|
||||
color: $text-color;
|
||||
}
|
||||
|
||||
.fa-behance,
|
||||
.fa-behance-square {
|
||||
color: $behance-color;
|
||||
}
|
||||
|
||||
.fa-bitbucket {
|
||||
color: $bitbucket-color;
|
||||
}
|
||||
|
||||
.fa-dribbble,
|
||||
.fa-dribble-square {
|
||||
color: $dribbble-color;
|
||||
}
|
||||
|
||||
.fa-facebook,
|
||||
.fa-facebook-square,
|
||||
.fa-facebook-f {
|
||||
color: $facebook-color;
|
||||
}
|
||||
|
||||
.fa-flickr {
|
||||
color: $flickr-color;
|
||||
}
|
||||
|
||||
.fa-foursquare {
|
||||
color: $foursquare-color;
|
||||
}
|
||||
|
||||
.fa-github,
|
||||
.fa-github-alt,
|
||||
.fa-github-square {
|
||||
color: $github-color;
|
||||
}
|
||||
|
||||
.fa-gitlab {
|
||||
color: $gitlab-color;
|
||||
}
|
||||
|
||||
.fa-instagram {
|
||||
color: $instagram-color;
|
||||
}
|
||||
|
||||
.fa-keybase {
|
||||
color: $keybase-color;
|
||||
}
|
||||
|
||||
.fa-lastfm,
|
||||
.fa-lastfm-square {
|
||||
color: $lastfm-color;
|
||||
}
|
||||
|
||||
.fa-linkedin,
|
||||
.fa-linkedin-in {
|
||||
color: $linkedin-color;
|
||||
}
|
||||
|
||||
.fa-mastodon,
|
||||
.fa-mastodon-square {
|
||||
color: $mastodon-color;
|
||||
}
|
||||
|
||||
.fa-pinterest,
|
||||
.fa-pinterest-p,
|
||||
.fa-pinterest-square {
|
||||
color: $pinterest-color;
|
||||
}
|
||||
|
||||
.fa-reddit {
|
||||
color: $reddit-color;
|
||||
}
|
||||
|
||||
.fa-rss,
|
||||
.fa-rss-square {
|
||||
color: $rss-color;
|
||||
}
|
||||
|
||||
.fa-soundcloud {
|
||||
color: $soundcloud-color;
|
||||
}
|
||||
|
||||
.fa-stack-exchange,
|
||||
.fa-stack-overflow {
|
||||
color: $stackoverflow-color;
|
||||
}
|
||||
|
||||
.fa-tumblr,
|
||||
.fa-tumblr-square {
|
||||
color: $tumblr-color;
|
||||
}
|
||||
|
||||
.fa-twitter,
|
||||
.fa-twitter-square {
|
||||
color: $twitter-color;
|
||||
}
|
||||
|
||||
.fa-vimeo,
|
||||
.fa-vimeo-square,
|
||||
.fa-vimeo-v {
|
||||
color: $vimeo-color;
|
||||
}
|
||||
|
||||
.fa-vine {
|
||||
color: $vine-color;
|
||||
}
|
||||
|
||||
.fa-youtube {
|
||||
color: $youtube-color;
|
||||
}
|
||||
|
||||
.fa-xing,
|
||||
.fa-xing-square {
|
||||
color: $xing-color;
|
||||
@each $color, $icons in (
|
||||
$behance-color: ".fa-behance, .fa-behance-square",
|
||||
$bitbucket-color: ".fa-bitbucket",
|
||||
$dribbble-color: ".fa-dribbble, .fa-dribbble-square",
|
||||
$facebook-color: ".fa-facebook, .fa-facebook-square, .fa-facebook-f",
|
||||
$flickr-color: ".fa-flickr",
|
||||
$foursquare-color: ".fa-foursquare",
|
||||
$github-color: ".fa-github, .fa-github-alt, .fa-github-square",
|
||||
$gitlab-color: ".fa-gitlab",
|
||||
$instagram-color: ".fa-instagram",
|
||||
$keybase-color: ".fa-keybase",
|
||||
$lastfm-color: ".fa-lastfm, .fa-lastfm-square",
|
||||
$linkedin-color: ".fa-linkedin, .fa-linkedin-in",
|
||||
$mastodon-color: ".fa-mastodon, .fa-mastodon-square",
|
||||
$pinterest-color: ".fa-pinterest, .fa-pinterest-p, .fa-pinterest-square",
|
||||
$reddit-color: ".fa-reddit",
|
||||
$rss-color: ".fa-rss, .fa-rss-square",
|
||||
$soundcloud-color: ".fa-soundcloud",
|
||||
$stackoverflow-color: ".fa-stack-exchange, .fa-stack-overflow",
|
||||
$tumblr-color: ".fa-tumblr, .fa-tumblr-square",
|
||||
$twitter-color: ".fa-twitter, .fa-twitter-square",
|
||||
$vimeo-color: ".fa-vimeo, .fa-vimeo-square, .fa-vimeo-v",
|
||||
$vine-color: ".fa-vine",
|
||||
$xing-color: ".fa-xing, .fa-xing-square",
|
||||
$youtube-color: ".fa-youtube",
|
||||
) {
|
||||
#{$icons} {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -591,3 +508,77 @@ a.reversefootnote {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Copy <pre> block to clipboard
|
||||
========================================================================== */
|
||||
|
||||
// a <textarea> to hold text for document.execCommand("copy")
|
||||
.clipboard-helper {
|
||||
// Prevent zooming on iOS
|
||||
font-size: 12pt !important;
|
||||
border: 0 !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
outline: none !important;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
pre {
|
||||
&.highlight .clipboard-copy-button {
|
||||
color: #ffffca;
|
||||
}
|
||||
|
||||
.clipboard-copy-button {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0.6em;
|
||||
right: 0.5em;
|
||||
width: 1.8em;
|
||||
height: 1.5em;
|
||||
z-index: 1;
|
||||
background: none;
|
||||
border: none;
|
||||
outline: none;
|
||||
border-radius: 0.1em;
|
||||
padding: 0.2em 0.5em;
|
||||
opacity: 0.4;
|
||||
transition: color 0.25s linear -0.25s, opacity 0.25s linear;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
i {
|
||||
position: absolute;
|
||||
top: 0.25em;
|
||||
right: 0.25em;
|
||||
&.copied {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.copied i {
|
||||
opacity: 0;
|
||||
&.copied {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@at-root {
|
||||
.no-copy & {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover .clipboard-copy-button {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,6 +118,10 @@ $masthead-link-color: $primary-color !default;
|
||||
$masthead-link-color-hover: mix(#000, $primary-color, 25%) !default;
|
||||
$navicon-link-color-hover: mix(#fff, $primary-color, 75%) !default;
|
||||
|
||||
/* notices */
|
||||
$notice-background-mix: 80% !default;
|
||||
$code-notice-background-mix: 90% !default;
|
||||
|
||||
/* syntax highlighting (base16) */
|
||||
$base00: #263238 !default;
|
||||
$base01: #2e3c43 !default;
|
||||
|
||||
@@ -27,4 +27,8 @@ $link-color : $info-color !default;
|
||||
$link-color-hover : mix(#000, $link-color, 25%) !default;
|
||||
$link-color-visited : mix(#fff, $link-color, 25%) !default;
|
||||
$masthead-link-color : $primary-color !default;
|
||||
$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default;
|
||||
$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default;
|
||||
|
||||
/* notices */
|
||||
$notice-background-mix: 90% !default;
|
||||
$code-notice-background-mix: 95% !default;
|
||||
|
||||
@@ -46,6 +46,7 @@ $base0f: #b18a3d !default;
|
||||
color: #fff !important; // override
|
||||
}
|
||||
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
.page__footer-follow .social-icons i,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
@@ -18,11 +18,13 @@ $masthead-link-color: $text-color !default;
|
||||
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
|
||||
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
|
||||
|
||||
.author__urls.social-icons i,
|
||||
.author__urls.social-icons .svg-inline--fa,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
.page__footer-follow .social-icons i,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.ais-search-box .ais-search-box--input {
|
||||
background-color: $form-background-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
|
||||
color: #fff !important; // override
|
||||
}
|
||||
|
||||
.page__footer-follow .social-icons i,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,10 @@ $masthead-link-color: $text-color !default;
|
||||
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
|
||||
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
|
||||
|
||||
/* notices */
|
||||
$notice-background-mix: 90% !default;
|
||||
$code-notice-background-mix: 95% !default;
|
||||
|
||||
/* neon syntax highlighting (base16) */
|
||||
$base00: #ffffff !default;
|
||||
$base01: #e0e0e0 !default;
|
||||
@@ -36,8 +40,10 @@ $base0d: #3777e6 !default;
|
||||
$base0e: #ad00a1 !default;
|
||||
$base0f: #cc6633 !default;
|
||||
|
||||
.author__urls.social-icons i,
|
||||
.author__urls.social-icons .svg-inline--fa,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
.page__footer-follow .social-icons i,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,10 @@ $masthead-link-color: $text-color !default;
|
||||
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
|
||||
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
|
||||
|
||||
/* notices */
|
||||
$notice-background-mix: 70% !default;
|
||||
$code-notice-background-mix: 80% !default;
|
||||
|
||||
/* plum syntax highlighting (base16) */
|
||||
$base00: #ffffff !default;
|
||||
$base01: #e0e0e0 !default;
|
||||
@@ -36,8 +40,10 @@ $base0d: #3777e6 !default;
|
||||
$base0e: #ad00a1 !default;
|
||||
$base0f: #cc6633 !default;
|
||||
|
||||
.author__urls.social-icons i,
|
||||
.author__urls.social-icons .svg-inline--fa,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
.page__footer-follow .social-icons i,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,9 @@ $masthead-link-color: $text-color !default;
|
||||
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
|
||||
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
|
||||
|
||||
/* notices */
|
||||
$notice-background-mix: 75% !default;
|
||||
|
||||
/* sunrise syntax highlighting (base16) */
|
||||
$base00: #1d1f21 !default;
|
||||
$base01: #282a2e !default;
|
||||
@@ -38,7 +41,9 @@ $base0d: #81a2be !default;
|
||||
$base0e: #b294bb !default;
|
||||
$base0f: #a3685a !default;
|
||||
|
||||
.author__urls.social-icons .fa,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
.author__urls.social-icons i,
|
||||
.author__urls.social-icons .svg-inline--fa,
|
||||
.page__footer-follow .social-icons i,
|
||||
.page__footer-follow .social-icons .svg-inline--fa {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
# Only the main Sass file needs front matter (the dashes are enough)
|
||||
search: false
|
||||
---
|
||||
|
||||
@charset "utf-8";
|
||||
|
||||
+141
-47
@@ -2,39 +2,18 @@
|
||||
jQuery plugin settings and other scripts
|
||||
========================================================================== */
|
||||
|
||||
$(document).ready(function() {
|
||||
$(document).ready(function () {
|
||||
// FitVids init
|
||||
$("#main").fitVids();
|
||||
|
||||
// Sticky sidebar
|
||||
var stickySideBar = function() {
|
||||
var show =
|
||||
$(".author__urls-wrapper button").length === 0
|
||||
? $(window).width() > 1024 // width should match $large Sass variable
|
||||
: !$(".author__urls-wrapper button").is(":visible");
|
||||
if (show) {
|
||||
// fix
|
||||
$(".sidebar").addClass("sticky");
|
||||
} else {
|
||||
// unfix
|
||||
$(".sidebar").removeClass("sticky");
|
||||
}
|
||||
};
|
||||
|
||||
stickySideBar();
|
||||
|
||||
$(window).resize(function() {
|
||||
stickySideBar();
|
||||
});
|
||||
|
||||
// Follow menu drop down
|
||||
$(".author__urls-wrapper button").on("click", function() {
|
||||
$(".author__urls-wrapper button").on("click", function () {
|
||||
$(".author__urls").toggleClass("is--visible");
|
||||
$(".author__urls-wrapper button").toggleClass("open");
|
||||
$(".author__urls-wrapper").find("button").toggleClass("open");
|
||||
});
|
||||
|
||||
// Close search screen with Esc key
|
||||
$(document).keyup(function(e) {
|
||||
$(document).keyup(function (e) {
|
||||
if (e.keyCode === 27) {
|
||||
if ($(".initial-content").hasClass("is--hidden")) {
|
||||
$(".search-content").toggleClass("is--visible");
|
||||
@@ -44,11 +23,11 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
// Search toggle
|
||||
$(".search__toggle").on("click", function() {
|
||||
$(".search__toggle").on("click", function () {
|
||||
$(".search-content").toggleClass("is--visible");
|
||||
$(".initial-content").toggleClass("is--hidden");
|
||||
// set focus on input
|
||||
setTimeout(function() {
|
||||
setTimeout(function () {
|
||||
$(".search-content input").focus();
|
||||
}, 400);
|
||||
});
|
||||
@@ -58,11 +37,11 @@ $(document).ready(function() {
|
||||
offset: 20,
|
||||
speed: 400,
|
||||
speedAsDuration: true,
|
||||
durationMax: 500
|
||||
durationMax: 500,
|
||||
});
|
||||
|
||||
// Gumshoe scroll spy init
|
||||
if($("nav.toc").length > 0) {
|
||||
if ($("nav.toc").length > 0) {
|
||||
var spy = new Gumshoe("nav.toc a", {
|
||||
// Active classes
|
||||
navClass: "active", // applied to the nav list item
|
||||
@@ -77,14 +56,36 @@ $(document).ready(function() {
|
||||
reflow: true, // if true, listen for reflows
|
||||
|
||||
// Event support
|
||||
events: true // if true, emit custom events
|
||||
events: true, // if true, emit custom events
|
||||
});
|
||||
}
|
||||
|
||||
// Auto scroll sticky ToC with content
|
||||
const scrollTocToContent = function (event) {
|
||||
var target = event.target;
|
||||
var scrollOptions = { behavior: "auto", block: "nearest", inline: "start" };
|
||||
|
||||
var tocElement = document.querySelector("aside.sidebar__right.sticky");
|
||||
if (!tocElement) return;
|
||||
if (window.getComputedStyle(tocElement).position !== "sticky") return;
|
||||
|
||||
if (target.parentElement.classList.contains("toc__menu") && target == target.parentElement.firstElementChild) {
|
||||
// Scroll to top instead
|
||||
document.querySelector("nav.toc header").scrollIntoView(scrollOptions);
|
||||
} else {
|
||||
target.scrollIntoView(scrollOptions);
|
||||
}
|
||||
};
|
||||
|
||||
// Has issues on Firefox, whitelist Chrome for now
|
||||
if (!!window.chrome) {
|
||||
document.addEventListener("gumshoeActivate", scrollTocToContent);
|
||||
}
|
||||
|
||||
// add lightbox class to all image links
|
||||
$(
|
||||
"a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']"
|
||||
).addClass("image-popup");
|
||||
"a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']"
|
||||
).has("> img").addClass("image-popup");
|
||||
|
||||
// Magnific-Popup options
|
||||
$(".image-popup").magnificPopup({
|
||||
@@ -99,38 +100,131 @@ $(document).ready(function() {
|
||||
gallery: {
|
||||
enabled: true,
|
||||
navigateByImgClick: true,
|
||||
preload: [0, 1] // Will preload 0 - before current, and 1 after the current image
|
||||
preload: [0, 1], // Will preload 0 - before current, and 1 after the current image
|
||||
},
|
||||
image: {
|
||||
tError: '<a href="%url%">Image #%curr%</a> could not be loaded.'
|
||||
tError: '<a href="%url%">Image #%curr%</a> could not be loaded.',
|
||||
},
|
||||
removalDelay: 500, // Delay in milliseconds before popup is removed
|
||||
// Class that is added to body when popup is open.
|
||||
// make it unique to apply your CSS animations just to this exact popup
|
||||
mainClass: "mfp-zoom-in",
|
||||
callbacks: {
|
||||
beforeOpen: function() {
|
||||
beforeOpen: function () {
|
||||
// just a hack that adds mfp-anim class to markup
|
||||
this.st.image.markup = this.st.image.markup.replace(
|
||||
"mfp-figure",
|
||||
"mfp-figure mfp-with-anim"
|
||||
);
|
||||
}
|
||||
},
|
||||
},
|
||||
closeOnContentClick: true,
|
||||
midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
|
||||
midClick: true, // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
|
||||
});
|
||||
|
||||
// Add anchors for headings
|
||||
$('.page__content').find('h1, h2, h3, h4, h5, h6').each(function() {
|
||||
var id = $(this).attr('id');
|
||||
if (id) {
|
||||
var anchor = document.createElement("a");
|
||||
anchor.className = 'header-link';
|
||||
anchor.href = '#' + id;
|
||||
anchor.innerHTML = '<span class=\"sr-only\">Permalink</span><i class=\"fas fa-link\"></i>';
|
||||
anchor.title = "Permalink";
|
||||
$(this).append(anchor);
|
||||
document
|
||||
.querySelector(".page__content")
|
||||
.querySelectorAll("h1, h2, h3, h4, h5, h6")
|
||||
.forEach(function (element) {
|
||||
var id = element.getAttribute("id");
|
||||
if (id) {
|
||||
var anchor = document.createElement("a");
|
||||
anchor.className = "header-link";
|
||||
anchor.href = "#" + id;
|
||||
anchor.innerHTML =
|
||||
'<span class="sr-only">Permalink</span><i class="fas fa-link"></i>';
|
||||
anchor.title = "Permalink";
|
||||
element.appendChild(anchor);
|
||||
}
|
||||
});
|
||||
|
||||
// Add copy button for <pre> blocks
|
||||
var copyText = function (text) {
|
||||
if (document.queryCommandEnabled("copy") && navigator.clipboard) {
|
||||
navigator.clipboard.writeText(text).then(
|
||||
() => true,
|
||||
() => console.error("Failed to copy text to clipboard: " + text)
|
||||
);
|
||||
return true;
|
||||
} else {
|
||||
var isRTL = document.documentElement.getAttribute("dir") === "rtl";
|
||||
|
||||
var textarea = document.createElement("textarea");
|
||||
textarea.className = "clipboard-helper";
|
||||
textarea.style[isRTL ? "right" : "left"] = "-9999px";
|
||||
// Move element to the same position vertically
|
||||
var yPosition = window.pageYOffset || document.documentElement.scrollTop;
|
||||
textarea.style.top = yPosition + "px";
|
||||
|
||||
textarea.setAttribute("readonly", "");
|
||||
textarea.value = text;
|
||||
document.body.appendChild(textarea);
|
||||
|
||||
var success = true;
|
||||
try {
|
||||
textarea.select();
|
||||
success = document.execCommand("copy");
|
||||
} catch (e) {
|
||||
success = false;
|
||||
}
|
||||
textarea.parentNode.removeChild(textarea);
|
||||
return success;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var copyButtonEventListener = function (event) {
|
||||
var thisButton = event.target;
|
||||
|
||||
// Locate the <code> element
|
||||
var codeBlock = thisButton.nextElementSibling;
|
||||
while (codeBlock && codeBlock.tagName.toLowerCase() !== "code") {
|
||||
codeBlock = codeBlock.nextElementSibling;
|
||||
}
|
||||
if (!codeBlock) {
|
||||
// No <code> found - wtf?
|
||||
console.warn(thisButton);
|
||||
throw new Error("No code block found for this button.");
|
||||
}
|
||||
|
||||
// Skip line numbers if present (i.e. {% highlight lineno %})
|
||||
var realCodeBlock = codeBlock.querySelector("td.code, td.rouge-code");
|
||||
if (realCodeBlock) {
|
||||
codeBlock = realCodeBlock;
|
||||
}
|
||||
var result = copyText(codeBlock.innerText);
|
||||
// Restore the focus to the button
|
||||
thisButton.focus();
|
||||
if (result) {
|
||||
if (thisButton.interval !== null) {
|
||||
clearInterval(thisButton.interval);
|
||||
}
|
||||
thisButton.classList.add('copied');
|
||||
thisButton.interval = setTimeout(function () {
|
||||
thisButton.classList.remove('copied');
|
||||
clearInterval(thisButton.interval);
|
||||
thisButton.interval = null;
|
||||
}, 1500);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
if (window.enable_copy_code_button) {
|
||||
document
|
||||
.querySelectorAll(".page__content pre.highlight > code")
|
||||
.forEach(function (element, index, parentList) {
|
||||
// Locate the <pre> element
|
||||
var container = element.parentElement;
|
||||
// Sanity check - don't add an extra button if there's already one
|
||||
if (container.firstElementChild.tagName.toLowerCase() !== "code") {
|
||||
return;
|
||||
}
|
||||
var copyButton = document.createElement("button");
|
||||
copyButton.title = "Copy to clipboard";
|
||||
copyButton.className = "clipboard-copy-button";
|
||||
copyButton.innerHTML = '<span class="sr-only">Copy code</span><i class="far fa-fw fa-copy"></i><i class="fas fa-fw fa-check copied"></i>';
|
||||
copyButton.addEventListener("click", copyButtonEventListener);
|
||||
container.prepend(copyButton);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Vendored
+38
-3
@@ -42,8 +42,43 @@ var store = [
|
||||
{%- endif -%}
|
||||
"categories": {{ doc.categories | jsonify }},
|
||||
"tags": {{ doc.tags | jsonify }},
|
||||
"url": {{ doc.url | absolute_url | jsonify }},
|
||||
"teaser": {{ teaser | absolute_url | jsonify }}
|
||||
"url": {{ doc.url | relative_url | jsonify }},
|
||||
"teaser": {{ teaser | relative_url | jsonify }}
|
||||
}{%- unless forloop.last and l -%},{%- endunless -%}
|
||||
{%- endfor -%}
|
||||
{%- endfor -%}]
|
||||
{%- endfor -%}{%- if site.lunr.search_within_pages -%},
|
||||
{%- assign pages = site.pages | where_exp: 'doc', 'doc.search != false' | where_exp: 'doc', 'doc.title != null' -%}
|
||||
{%- for doc in pages -%}
|
||||
{%- if forloop.last -%}
|
||||
{%- assign l = true -%}
|
||||
{%- endif -%}
|
||||
{
|
||||
"title": {{ doc.title | jsonify }},
|
||||
"excerpt":
|
||||
{%- if site.search_full_content == true -%}
|
||||
{{ doc.content | newline_to_br |
|
||||
replace:"<br />", " " |
|
||||
replace:"</p>", " " |
|
||||
replace:"</h1>", " " |
|
||||
replace:"</h2>", " " |
|
||||
replace:"</h3>", " " |
|
||||
replace:"</h4>", " " |
|
||||
replace:"</h5>", " " |
|
||||
replace:"</h6>", " "|
|
||||
strip_html | strip_newlines | jsonify }},
|
||||
{%- else -%}
|
||||
{{ doc.content | newline_to_br |
|
||||
replace:"<br />", " " |
|
||||
replace:"</p>", " " |
|
||||
replace:"</h1>", " " |
|
||||
replace:"</h2>", " " |
|
||||
replace:"</h3>", " " |
|
||||
replace:"</h4>", " " |
|
||||
replace:"</h5>", " " |
|
||||
replace:"</h6>", " "|
|
||||
strip_html | strip_newlines | truncatewords: 50 | jsonify }},
|
||||
{%- endif -%}
|
||||
"url": {{ doc.url | absolute_url | jsonify }}
|
||||
}{%- unless forloop.last and l -%},{%- endunless -%}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}]
|
||||
|
||||
Vendored
+67
-76
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.5
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
@@ -54,10 +54,10 @@ var lunr = function (config) {
|
||||
return builder.build()
|
||||
}
|
||||
|
||||
lunr.version = "2.3.5"
|
||||
lunr.version = "2.3.9"
|
||||
/*!
|
||||
* lunr.utils
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -177,7 +177,7 @@ lunr.FieldRef.prototype.toString = function () {
|
||||
}
|
||||
/*!
|
||||
* lunr.Set
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -211,8 +211,8 @@ lunr.Set.complete = {
|
||||
return other
|
||||
},
|
||||
|
||||
union: function (other) {
|
||||
return other
|
||||
union: function () {
|
||||
return this
|
||||
},
|
||||
|
||||
contains: function () {
|
||||
@@ -389,7 +389,7 @@ lunr.Token.prototype.clone = function (fn) {
|
||||
}
|
||||
/*!
|
||||
* lunr.tokenizer
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -424,7 +424,7 @@ lunr.tokenizer = function (obj, metadata) {
|
||||
})
|
||||
}
|
||||
|
||||
var str = obj.toString().trim().toLowerCase(),
|
||||
var str = obj.toString().toLowerCase(),
|
||||
len = str.length,
|
||||
tokens = []
|
||||
|
||||
@@ -465,7 +465,7 @@ lunr.tokenizer = function (obj, metadata) {
|
||||
lunr.tokenizer.separator = /[\s\-]+/
|
||||
/*!
|
||||
* lunr.Pipeline
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -509,8 +509,8 @@ lunr.Pipeline.registeredFunctions = Object.create(null)
|
||||
* or mutate (or add) metadata for a given token.
|
||||
*
|
||||
* A pipeline function can indicate that the passed token should be discarded by returning
|
||||
* null. This token will not be passed to any downstream pipeline functions and will not be
|
||||
* added to the index.
|
||||
* null, undefined or an empty string. This token will not be passed to any downstream pipeline
|
||||
* functions and will not be added to the index.
|
||||
*
|
||||
* Multiple tokens can be returned by returning an array of tokens. Each token will be passed
|
||||
* to any downstream pipeline functions and all will returned tokens will be added to the index.
|
||||
@@ -673,7 +673,7 @@ lunr.Pipeline.prototype.run = function (tokens) {
|
||||
for (var j = 0; j < tokens.length; j++) {
|
||||
var result = fn(tokens[j], j, tokens)
|
||||
|
||||
if (result === void 0 || result === '') continue
|
||||
if (result === null || result === void 0 || result === '') continue
|
||||
|
||||
if (Array.isArray(result)) {
|
||||
for (var k = 0; k < result.length; k++) {
|
||||
@@ -732,7 +732,7 @@ lunr.Pipeline.prototype.toJSON = function () {
|
||||
}
|
||||
/*!
|
||||
* lunr.Vector
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -929,7 +929,7 @@ lunr.Vector.prototype.toJSON = function () {
|
||||
/* eslint-disable */
|
||||
/*!
|
||||
* lunr.stemmer
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
|
||||
*/
|
||||
|
||||
@@ -1151,7 +1151,7 @@ lunr.stemmer = (function(){
|
||||
lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')
|
||||
/*!
|
||||
* lunr.stopWordFilter
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -1316,7 +1316,7 @@ lunr.stopWordFilter = lunr.generateStopWordFilter([
|
||||
lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')
|
||||
/*!
|
||||
* lunr.trimmer
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -1343,7 +1343,7 @@ lunr.trimmer = function (token) {
|
||||
lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')
|
||||
/*!
|
||||
* lunr.TokenSet
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -1469,41 +1469,49 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
|
||||
})
|
||||
}
|
||||
|
||||
if (frame.editsRemaining == 0) {
|
||||
continue
|
||||
}
|
||||
|
||||
// insertion
|
||||
if ("*" in frame.node.edges) {
|
||||
var insertionNode = frame.node.edges["*"]
|
||||
} else {
|
||||
var insertionNode = new lunr.TokenSet
|
||||
frame.node.edges["*"] = insertionNode
|
||||
}
|
||||
|
||||
if (frame.str.length == 0) {
|
||||
insertionNode.final = true
|
||||
}
|
||||
|
||||
stack.push({
|
||||
node: insertionNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: frame.str
|
||||
})
|
||||
|
||||
// deletion
|
||||
// can only do a deletion if we have enough edits remaining
|
||||
// and if there are characters left to delete in the string
|
||||
if (frame.editsRemaining > 0 && frame.str.length > 1) {
|
||||
var char = frame.str.charAt(1),
|
||||
deletionNode
|
||||
|
||||
if (char in frame.node.edges) {
|
||||
deletionNode = frame.node.edges[char]
|
||||
} else {
|
||||
deletionNode = new lunr.TokenSet
|
||||
frame.node.edges[char] = deletionNode
|
||||
}
|
||||
|
||||
if (frame.str.length <= 2) {
|
||||
deletionNode.final = true
|
||||
} else {
|
||||
stack.push({
|
||||
node: deletionNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: frame.str.slice(2)
|
||||
})
|
||||
}
|
||||
if (frame.str.length > 1) {
|
||||
stack.push({
|
||||
node: frame.node,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: frame.str.slice(1)
|
||||
})
|
||||
}
|
||||
|
||||
// deletion
|
||||
// just removing the last character from the str
|
||||
if (frame.editsRemaining > 0 && frame.str.length == 1) {
|
||||
if (frame.str.length == 1) {
|
||||
frame.node.final = true
|
||||
}
|
||||
|
||||
// substitution
|
||||
// can only do a substitution if we have enough edits remaining
|
||||
// and if there are characters left to substitute
|
||||
if (frame.editsRemaining > 0 && frame.str.length >= 1) {
|
||||
if (frame.str.length >= 1) {
|
||||
if ("*" in frame.node.edges) {
|
||||
var substitutionNode = frame.node.edges["*"]
|
||||
} else {
|
||||
@@ -1513,40 +1521,19 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
|
||||
|
||||
if (frame.str.length == 1) {
|
||||
substitutionNode.final = true
|
||||
} else {
|
||||
stack.push({
|
||||
node: substitutionNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: frame.str.slice(1)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// insertion
|
||||
// can only do insertion if there are edits remaining
|
||||
if (frame.editsRemaining > 0) {
|
||||
if ("*" in frame.node.edges) {
|
||||
var insertionNode = frame.node.edges["*"]
|
||||
} else {
|
||||
var insertionNode = new lunr.TokenSet
|
||||
frame.node.edges["*"] = insertionNode
|
||||
}
|
||||
|
||||
if (frame.str.length == 0) {
|
||||
insertionNode.final = true
|
||||
} else {
|
||||
stack.push({
|
||||
node: insertionNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: frame.str
|
||||
})
|
||||
}
|
||||
stack.push({
|
||||
node: substitutionNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: frame.str.slice(1)
|
||||
})
|
||||
}
|
||||
|
||||
// transposition
|
||||
// can only do a transposition if there are edits remaining
|
||||
// and there are enough characters to transpose
|
||||
if (frame.editsRemaining > 0 && frame.str.length > 1) {
|
||||
if (frame.str.length > 1) {
|
||||
var charA = frame.str.charAt(0),
|
||||
charB = frame.str.charAt(1),
|
||||
transposeNode
|
||||
@@ -1560,13 +1547,13 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
|
||||
|
||||
if (frame.str.length == 1) {
|
||||
transposeNode.final = true
|
||||
} else {
|
||||
stack.push({
|
||||
node: transposeNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: charA + frame.str.slice(2)
|
||||
})
|
||||
}
|
||||
|
||||
stack.push({
|
||||
node: transposeNode,
|
||||
editsRemaining: frame.editsRemaining - 1,
|
||||
str: charA + frame.str.slice(2)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1619,6 +1606,10 @@ lunr.TokenSet.fromString = function (str) {
|
||||
* Converts this TokenSet into an array of strings
|
||||
* contained within the TokenSet.
|
||||
*
|
||||
* This is not intended to be used on a TokenSet that
|
||||
* contains wildcards, in these cases the results are
|
||||
* undefined and are likely to cause an infinite loop.
|
||||
*
|
||||
* @returns {string[]}
|
||||
*/
|
||||
lunr.TokenSet.prototype.toArray = function () {
|
||||
@@ -1836,7 +1827,7 @@ lunr.TokenSet.Builder.prototype.minimize = function (downTo) {
|
||||
}
|
||||
/*!
|
||||
* lunr.Index
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -2003,7 +1994,7 @@ lunr.Index.prototype.query = function (fn) {
|
||||
*/
|
||||
var clause = query.clauses[i],
|
||||
terms = null,
|
||||
clauseMatches = lunr.Set.complete
|
||||
clauseMatches = lunr.Set.empty
|
||||
|
||||
if (clause.usePipeline) {
|
||||
terms = this.pipeline.runString(clause.term, {
|
||||
@@ -2328,7 +2319,7 @@ lunr.Index.load = function (serializedIndex) {
|
||||
}
|
||||
/*!
|
||||
* lunr.Builder
|
||||
* Copyright (C) 2018 Oliver Nightingale
|
||||
* Copyright (C) 2020 Oliver Nightingale
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
Vendored
+6
-1
File diff suppressed because one or more lines are too long
Vendored
+5
-4
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7
-5
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
GreedyNav.js - http://lukejacksonn.com/actuate
|
||||
GreedyNav.js - https://github.com/lukejacksonn/GreedyNav
|
||||
Licensed under the MIT license - http://opensource.org/licenses/MIT
|
||||
Copyright (c) 2015 Luke Jackson
|
||||
Copyright (c) 2015 Luke Jackson http://lukejacksonn.com
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
@@ -14,11 +14,11 @@ $(function() {
|
||||
var $logoImg = $('nav.greedy-nav .site-logo img');
|
||||
var $title = $("nav.greedy-nav .site-title");
|
||||
var $search = $('nav.greedy-nav button.search__toggle');
|
||||
|
||||
|
||||
var numOfItems, totalSpace, closingTime, breakWidths;
|
||||
|
||||
// This function measures both hidden and visible links and sets the navbar breakpoints
|
||||
// This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items
|
||||
// This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items
|
||||
// Please note that "CSS width breakpoints" (which are only 4) !== "navbar breakpoints" (which are as many as the number of items on the navbar)
|
||||
function measureLinks(){
|
||||
numOfItems = 0;
|
||||
@@ -99,6 +99,7 @@ $(function() {
|
||||
|
||||
$btn.on('click', function() {
|
||||
$hlinks.toggleClass('hidden');
|
||||
$(this).toggleClass('close');
|
||||
clearTimeout(timer);
|
||||
});
|
||||
|
||||
@@ -106,6 +107,7 @@ $(function() {
|
||||
// Mouse has left, start the timer
|
||||
timer = setTimeout(function() {
|
||||
$hlinks.addClass('hidden');
|
||||
$('.greedy-nav__toggle').removeClass('close');
|
||||
}, closingTime);
|
||||
}).on('mouseenter', function() {
|
||||
// Mouse is back, cancel the timer
|
||||
@@ -122,5 +124,5 @@ $(function() {
|
||||
} else check();
|
||||
// if page does not have a logo just check
|
||||
} else check();
|
||||
|
||||
|
||||
});
|
||||
|
||||
+118
-109
@@ -1,15 +1,15 @@
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.5.1
|
||||
* jQuery JavaScript Library v3.6.0
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2020-05-04T22:49Z
|
||||
* Date: 2021-03-02T17:08Z
|
||||
*/
|
||||
( function( global, factory ) {
|
||||
|
||||
@@ -76,12 +76,16 @@ var support = {};
|
||||
|
||||
var isFunction = function isFunction( obj ) {
|
||||
|
||||
// Support: Chrome <=57, Firefox <=52
|
||||
// In some browsers, typeof returns "function" for HTML <object> elements
|
||||
// (i.e., `typeof document.createElement( "object" ) === "function"`).
|
||||
// We don't want to classify *any* DOM node as a function.
|
||||
return typeof obj === "function" && typeof obj.nodeType !== "number";
|
||||
};
|
||||
// Support: Chrome <=57, Firefox <=52
|
||||
// In some browsers, typeof returns "function" for HTML <object> elements
|
||||
// (i.e., `typeof document.createElement( "object" ) === "function"`).
|
||||
// We don't want to classify *any* DOM node as a function.
|
||||
// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
|
||||
// Plus for old WebKit, typeof returns "function" for HTML collections
|
||||
// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
|
||||
return typeof obj === "function" && typeof obj.nodeType !== "number" &&
|
||||
typeof obj.item !== "function";
|
||||
};
|
||||
|
||||
|
||||
var isWindow = function isWindow( obj ) {
|
||||
@@ -147,7 +151,7 @@ function toType( obj ) {
|
||||
|
||||
|
||||
var
|
||||
version = "3.5.1",
|
||||
version = "3.6.0",
|
||||
|
||||
// Define a local copy of jQuery
|
||||
jQuery = function( selector, context ) {
|
||||
@@ -401,7 +405,7 @@ jQuery.extend( {
|
||||
if ( isArrayLike( Object( arr ) ) ) {
|
||||
jQuery.merge( ret,
|
||||
typeof arr === "string" ?
|
||||
[ arr ] : arr
|
||||
[ arr ] : arr
|
||||
);
|
||||
} else {
|
||||
push.call( ret, arr );
|
||||
@@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) {
|
||||
|
||||
// Populate the class2type map
|
||||
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
||||
function( _i, name ) {
|
||||
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||||
} );
|
||||
function( _i, name ) {
|
||||
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||||
} );
|
||||
|
||||
function isArrayLike( obj ) {
|
||||
|
||||
@@ -518,14 +522,14 @@ function isArrayLike( obj ) {
|
||||
}
|
||||
var Sizzle =
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.5
|
||||
* Sizzle CSS Selector Engine v2.3.6
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2020-03-14
|
||||
* Date: 2021-02-16
|
||||
*/
|
||||
( function( window ) {
|
||||
var i,
|
||||
@@ -1108,8 +1112,8 @@ support = Sizzle.support = {};
|
||||
* @returns {Boolean} True iff elem is a non-HTML XML node
|
||||
*/
|
||||
isXML = Sizzle.isXML = function( elem ) {
|
||||
var namespace = elem.namespaceURI,
|
||||
docElem = ( elem.ownerDocument || elem ).documentElement;
|
||||
var namespace = elem && elem.namespaceURI,
|
||||
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
|
||||
|
||||
// Support: IE <=8
|
||||
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
|
||||
@@ -3024,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext;
|
||||
|
||||
function nodeName( elem, name ) {
|
||||
|
||||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
||||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
||||
|
||||
};
|
||||
}
|
||||
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
|
||||
|
||||
|
||||
@@ -3997,8 +4001,8 @@ jQuery.extend( {
|
||||
resolveContexts = Array( i ),
|
||||
resolveValues = slice.call( arguments ),
|
||||
|
||||
// the master Deferred
|
||||
master = jQuery.Deferred(),
|
||||
// the primary Deferred
|
||||
primary = jQuery.Deferred(),
|
||||
|
||||
// subordinate callback factory
|
||||
updateFunc = function( i ) {
|
||||
@@ -4006,30 +4010,30 @@ jQuery.extend( {
|
||||
resolveContexts[ i ] = this;
|
||||
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
||||
if ( !( --remaining ) ) {
|
||||
master.resolveWith( resolveContexts, resolveValues );
|
||||
primary.resolveWith( resolveContexts, resolveValues );
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// Single- and empty arguments are adopted like Promise.resolve
|
||||
if ( remaining <= 1 ) {
|
||||
adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
|
||||
adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
|
||||
!remaining );
|
||||
|
||||
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
||||
if ( master.state() === "pending" ||
|
||||
if ( primary.state() === "pending" ||
|
||||
isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
||||
|
||||
return master.then();
|
||||
return primary.then();
|
||||
}
|
||||
}
|
||||
|
||||
// Multiple arguments are aggregated like Promise.all array elements
|
||||
while ( i-- ) {
|
||||
adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
|
||||
adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
|
||||
}
|
||||
|
||||
return master.promise();
|
||||
return primary.promise();
|
||||
}
|
||||
} );
|
||||
|
||||
@@ -4180,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
||||
for ( ; i < len; i++ ) {
|
||||
fn(
|
||||
elems[ i ], key, raw ?
|
||||
value :
|
||||
value.call( elems[ i ], i, fn( elems[ i ], key ) )
|
||||
value :
|
||||
value.call( elems[ i ], i, fn( elems[ i ], key ) )
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -5089,10 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
||||
}
|
||||
|
||||
|
||||
var
|
||||
rkeyEvent = /^key/,
|
||||
rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
|
||||
rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
||||
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
||||
|
||||
function returnTrue() {
|
||||
return true;
|
||||
@@ -5387,8 +5388,8 @@ jQuery.event = {
|
||||
event = jQuery.event.fix( nativeEvent ),
|
||||
|
||||
handlers = (
|
||||
dataPriv.get( this, "events" ) || Object.create( null )
|
||||
)[ event.type ] || [],
|
||||
dataPriv.get( this, "events" ) || Object.create( null )
|
||||
)[ event.type ] || [],
|
||||
special = jQuery.event.special[ event.type ] || {};
|
||||
|
||||
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
||||
@@ -5512,12 +5513,12 @@ jQuery.event = {
|
||||
get: isFunction( hook ) ?
|
||||
function() {
|
||||
if ( this.originalEvent ) {
|
||||
return hook( this.originalEvent );
|
||||
return hook( this.originalEvent );
|
||||
}
|
||||
} :
|
||||
function() {
|
||||
if ( this.originalEvent ) {
|
||||
return this.originalEvent[ name ];
|
||||
return this.originalEvent[ name ];
|
||||
}
|
||||
},
|
||||
|
||||
@@ -5656,7 +5657,13 @@ function leverageNative( el, type, expectSync ) {
|
||||
// Cancel the outer synthetic event
|
||||
event.stopImmediatePropagation();
|
||||
event.preventDefault();
|
||||
return result.value;
|
||||
|
||||
// Support: Chrome 86+
|
||||
// In Chrome, if an element having a focusout handler is blurred by
|
||||
// clicking outside of it, it invokes the handler synchronously. If
|
||||
// that handler calls `.remove()` on the element, the data is cleared,
|
||||
// leaving `result` undefined. We need to guard against this.
|
||||
return result && result.value;
|
||||
}
|
||||
|
||||
// If this is an inner synthetic event for an event with a bubbling surrogate
|
||||
@@ -5821,34 +5828,7 @@ jQuery.each( {
|
||||
targetTouches: true,
|
||||
toElement: true,
|
||||
touches: true,
|
||||
|
||||
which: function( event ) {
|
||||
var button = event.button;
|
||||
|
||||
// Add which for key events
|
||||
if ( event.which == null && rkeyEvent.test( event.type ) ) {
|
||||
return event.charCode != null ? event.charCode : event.keyCode;
|
||||
}
|
||||
|
||||
// Add which for click: 1 === left; 2 === middle; 3 === right
|
||||
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
|
||||
if ( button & 1 ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( button & 2 ) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
if ( button & 4 ) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return event.which;
|
||||
}
|
||||
which: true
|
||||
}, jQuery.event.addProp );
|
||||
|
||||
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
|
||||
@@ -5874,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
|
||||
return true;
|
||||
},
|
||||
|
||||
// Suppress native focus or blur as it's already being fired
|
||||
// in leverageNative.
|
||||
_default: function() {
|
||||
return true;
|
||||
},
|
||||
|
||||
delegateType: delegateType
|
||||
};
|
||||
} );
|
||||
@@ -6541,6 +6527,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
||||
// set in CSS while `offset*` properties report correct values.
|
||||
// Behavior in IE 9 is more subtle than in newer versions & it passes
|
||||
// some versions of this test; make sure not to make it pass there!
|
||||
//
|
||||
// Support: Firefox 70+
|
||||
// Only Firefox includes border widths
|
||||
// in computed dimensions. (gh-4529)
|
||||
reliableTrDimensions: function() {
|
||||
var table, tr, trChild, trStyle;
|
||||
if ( reliableTrDimensionsVal == null ) {
|
||||
@@ -6548,17 +6538,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
||||
tr = document.createElement( "tr" );
|
||||
trChild = document.createElement( "div" );
|
||||
|
||||
table.style.cssText = "position:absolute;left:-11111px";
|
||||
table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
|
||||
tr.style.cssText = "border:1px solid";
|
||||
|
||||
// Support: Chrome 86+
|
||||
// Height set through cssText does not get applied.
|
||||
// Computed height then comes back as 0.
|
||||
tr.style.height = "1px";
|
||||
trChild.style.height = "9px";
|
||||
|
||||
// Support: Android 8 Chrome 86+
|
||||
// In our bodyBackground.html iframe,
|
||||
// display for all div elements is set to "inline",
|
||||
// which causes a problem only in Android 8 Chrome 86.
|
||||
// Ensuring the div is display: block
|
||||
// gets around this issue.
|
||||
trChild.style.display = "block";
|
||||
|
||||
documentElement
|
||||
.appendChild( table )
|
||||
.appendChild( tr )
|
||||
.appendChild( trChild );
|
||||
|
||||
trStyle = window.getComputedStyle( tr );
|
||||
reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
|
||||
reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
|
||||
parseInt( trStyle.borderTopWidth, 10 ) +
|
||||
parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
|
||||
|
||||
documentElement.removeChild( table );
|
||||
}
|
||||
@@ -7022,10 +7027,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) {
|
||||
// Running getBoundingClientRect on a disconnected node
|
||||
// in IE throws an error.
|
||||
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
|
||||
swap( elem, cssShow, function() {
|
||||
return getWidthOrHeight( elem, dimension, extra );
|
||||
} ) :
|
||||
getWidthOrHeight( elem, dimension, extra );
|
||||
swap( elem, cssShow, function() {
|
||||
return getWidthOrHeight( elem, dimension, extra );
|
||||
} ) :
|
||||
getWidthOrHeight( elem, dimension, extra );
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7084,7 +7089,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
|
||||
swap( elem, { marginLeft: 0 }, function() {
|
||||
return elem.getBoundingClientRect().left;
|
||||
} )
|
||||
) + "px";
|
||||
) + "px";
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -7223,7 +7228,7 @@ Tween.propHooks = {
|
||||
if ( jQuery.fx.step[ tween.prop ] ) {
|
||||
jQuery.fx.step[ tween.prop ]( tween );
|
||||
} else if ( tween.elem.nodeType === 1 && (
|
||||
jQuery.cssHooks[ tween.prop ] ||
|
||||
jQuery.cssHooks[ tween.prop ] ||
|
||||
tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
|
||||
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
||||
} else {
|
||||
@@ -7468,7 +7473,7 @@ function defaultPrefilter( elem, props, opts ) {
|
||||
|
||||
anim.done( function() {
|
||||
|
||||
/* eslint-enable no-loop-func */
|
||||
/* eslint-enable no-loop-func */
|
||||
|
||||
// The final step of a "hide" animation is actually hiding the element
|
||||
if ( !hidden ) {
|
||||
@@ -7588,7 +7593,7 @@ function Animation( elem, properties, options ) {
|
||||
tweens: [],
|
||||
createTween: function( prop, end ) {
|
||||
var tween = jQuery.Tween( elem, animation.opts, prop, end,
|
||||
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
||||
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
||||
animation.tweens.push( tween );
|
||||
return tween;
|
||||
},
|
||||
@@ -7761,7 +7766,8 @@ jQuery.fn.extend( {
|
||||
anim.stop( true );
|
||||
}
|
||||
};
|
||||
doAnimation.finish = doAnimation;
|
||||
|
||||
doAnimation.finish = doAnimation;
|
||||
|
||||
return empty || optall.queue === false ?
|
||||
this.each( doAnimation ) :
|
||||
@@ -8401,8 +8407,8 @@ jQuery.fn.extend( {
|
||||
if ( this.setAttribute ) {
|
||||
this.setAttribute( "class",
|
||||
className || value === false ?
|
||||
"" :
|
||||
dataPriv.get( this, "__className__" ) || ""
|
||||
"" :
|
||||
dataPriv.get( this, "__className__" ) || ""
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -8417,7 +8423,7 @@ jQuery.fn.extend( {
|
||||
while ( ( elem = this[ i++ ] ) ) {
|
||||
if ( elem.nodeType === 1 &&
|
||||
( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8707,9 +8713,7 @@ jQuery.extend( jQuery.event, {
|
||||
special.bindType || type;
|
||||
|
||||
// jQuery handler
|
||||
handle = (
|
||||
dataPriv.get( cur, "events" ) || Object.create( null )
|
||||
)[ event.type ] &&
|
||||
handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
|
||||
dataPriv.get( cur, "handle" );
|
||||
if ( handle ) {
|
||||
handle.apply( cur, data );
|
||||
@@ -8856,7 +8860,7 @@ var rquery = ( /\?/ );
|
||||
|
||||
// Cross-browser xml parsing
|
||||
jQuery.parseXML = function( data ) {
|
||||
var xml;
|
||||
var xml, parserErrorElem;
|
||||
if ( !data || typeof data !== "string" ) {
|
||||
return null;
|
||||
}
|
||||
@@ -8865,12 +8869,17 @@ jQuery.parseXML = function( data ) {
|
||||
// IE throws on parseFromString with invalid input.
|
||||
try {
|
||||
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
||||
} catch ( e ) {
|
||||
xml = undefined;
|
||||
}
|
||||
} catch ( e ) {}
|
||||
|
||||
if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
|
||||
jQuery.error( "Invalid XML: " + data );
|
||||
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
|
||||
if ( !xml || parserErrorElem ) {
|
||||
jQuery.error( "Invalid XML: " + (
|
||||
parserErrorElem ?
|
||||
jQuery.map( parserErrorElem.childNodes, function( el ) {
|
||||
return el.textContent;
|
||||
} ).join( "\n" ) :
|
||||
data
|
||||
) );
|
||||
}
|
||||
return xml;
|
||||
};
|
||||
@@ -8971,16 +8980,14 @@ jQuery.fn.extend( {
|
||||
// Can add propHook for "elements" to filter or add form elements
|
||||
var elements = jQuery.prop( this, "elements" );
|
||||
return elements ? jQuery.makeArray( elements ) : this;
|
||||
} )
|
||||
.filter( function() {
|
||||
} ).filter( function() {
|
||||
var type = this.type;
|
||||
|
||||
// Use .is( ":disabled" ) so that fieldset[disabled] works
|
||||
return this.name && !jQuery( this ).is( ":disabled" ) &&
|
||||
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
||||
( this.checked || !rcheckableType.test( type ) );
|
||||
} )
|
||||
.map( function( _i, elem ) {
|
||||
} ).map( function( _i, elem ) {
|
||||
var val = jQuery( this ).val();
|
||||
|
||||
if ( val == null ) {
|
||||
@@ -9033,7 +9040,8 @@ var
|
||||
|
||||
// Anchor tag for parsing the document origin
|
||||
originAnchor = document.createElement( "a" );
|
||||
originAnchor.href = location.href;
|
||||
|
||||
originAnchor.href = location.href;
|
||||
|
||||
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
||||
function addToPrefiltersOrTransports( structure ) {
|
||||
@@ -9414,8 +9422,8 @@ jQuery.extend( {
|
||||
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
||||
globalEventContext = s.context &&
|
||||
( callbackContext.nodeType || callbackContext.jquery ) ?
|
||||
jQuery( callbackContext ) :
|
||||
jQuery.event,
|
||||
jQuery( callbackContext ) :
|
||||
jQuery.event,
|
||||
|
||||
// Deferreds
|
||||
deferred = jQuery.Deferred(),
|
||||
@@ -9727,8 +9735,10 @@ jQuery.extend( {
|
||||
response = ajaxHandleResponses( s, jqXHR, responses );
|
||||
}
|
||||
|
||||
// Use a noop converter for missing script
|
||||
if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
|
||||
// Use a noop converter for missing script but not if jsonp
|
||||
if ( !isSuccess &&
|
||||
jQuery.inArray( "script", s.dataTypes ) > -1 &&
|
||||
jQuery.inArray( "json", s.dataTypes ) < 0 ) {
|
||||
s.converters[ "text script" ] = function() {};
|
||||
}
|
||||
|
||||
@@ -10466,12 +10476,6 @@ jQuery.offset = {
|
||||
options.using.call( elem, props );
|
||||
|
||||
} else {
|
||||
if ( typeof props.top === "number" ) {
|
||||
props.top += "px";
|
||||
}
|
||||
if ( typeof props.left === "number" ) {
|
||||
props.left += "px";
|
||||
}
|
||||
curElem.css( props );
|
||||
}
|
||||
}
|
||||
@@ -10640,8 +10644,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) {
|
||||
|
||||
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
||||
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
||||
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
|
||||
function( defaultExtra, funcName ) {
|
||||
jQuery.each( {
|
||||
padding: "inner" + name,
|
||||
content: type,
|
||||
"": "outer" + name
|
||||
}, function( defaultExtra, funcName ) {
|
||||
|
||||
// Margin is only for outerHeight, outerWidth
|
||||
jQuery.fn[ funcName ] = function( margin, value ) {
|
||||
@@ -10726,7 +10733,8 @@ jQuery.fn.extend( {
|
||||
}
|
||||
} );
|
||||
|
||||
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
|
||||
jQuery.each(
|
||||
( "blur focus focusin focusout resize scroll click dblclick " +
|
||||
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||||
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
||||
function( _i, name ) {
|
||||
@@ -10737,7 +10745,8 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
|
||||
this.on( name, null, data, fn ) :
|
||||
this.trigger( name );
|
||||
};
|
||||
} );
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
const fs = require("fs");
|
||||
const pkg = require("./package.json");
|
||||
const filename = "assets/js/main.min.js";
|
||||
const script = fs.readFileSync(filename);
|
||||
const padStart = str => ("0" + str).slice(-2);
|
||||
const dateObj = new Date();
|
||||
const date = `${dateObj.getFullYear()}-${padStart(
|
||||
dateObj.getMonth() + 1
|
||||
)}-${padStart(dateObj.getDate())}`;
|
||||
const banner = `/*!
|
||||
* Minimal Mistakes Jekyll Theme ${pkg.version} by ${pkg.author}
|
||||
* Copyright 2013-${dateObj.getFullYear()} Michael Rose - mademistakes.com | @mmistakes
|
||||
* Licensed under ${pkg.license}
|
||||
*/
|
||||
`;
|
||||
|
||||
if (script.slice(0, 3) != "/**") {
|
||||
fs.writeFileSync(filename, banner + script);
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
gem "minimal-mistakes-jekyll", path: ".."
|
||||
gem "rake"
|
||||
|
||||
gem "tzinfo-data"
|
||||
gem "wdm", "~> 0.1.0" if Gem.win_platform?
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
task :default => %i[build]
|
||||
|
||||
task :build do
|
||||
sh 'jekyll build --profile --trace --config _config.yml,_config.dev.yml'
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
# Develop override settings
|
||||
|
||||
theme: minimal-mistakes-jekyll
|
||||
remote_theme: null
|
||||
url: http://localhost:4000
|
||||
|
||||
analytics:
|
||||
@@ -10,4 +12,4 @@ comments:
|
||||
shortname : "mmistakes-dev"
|
||||
|
||||
sass:
|
||||
style: expanded
|
||||
style: expanded
|
||||
|
||||
+13
-3
@@ -5,7 +5,7 @@
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# `jekyll serve`. If you change this file, please restart the server process.
|
||||
|
||||
remote_theme : "mmistakes/minimal-mistakes@4.20.2"
|
||||
remote_theme : "mmistakes/minimal-mistakes@master"
|
||||
|
||||
minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
|
||||
|
||||
@@ -24,8 +24,9 @@ logo : # path of logo image to display in the masthead, e.g.
|
||||
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
|
||||
# breadcrumbs : false # true, false (default)
|
||||
words_per_minute : 200
|
||||
enable_copy_code_button : true
|
||||
comments:
|
||||
provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "custom"
|
||||
provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "giscus", "custom"
|
||||
disqus:
|
||||
shortname :
|
||||
discourse:
|
||||
@@ -38,6 +39,13 @@ comments:
|
||||
utterances:
|
||||
theme : # "github-light" (default), "github-dark"
|
||||
issue_term : # "pathname" (default)
|
||||
giscus:
|
||||
repo_id : # Shown during giscus setup at https://giscus.app
|
||||
category_name : # Full text name of the category
|
||||
category_id : # Shown during giscus setup at https://giscus.app
|
||||
discussion_term : # "pathname" (default), "url", "title", "og:title"
|
||||
reactions_enabled : # '1' for enabled (default), '0' for disabled
|
||||
theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
|
||||
reCaptcha:
|
||||
siteKey : # "6LdRBykTAAAAAFB46MnIu6ixuxwu9W1ihFF8G60Q"
|
||||
secret : # "PznnZGu3P6eTHRPLORniSq+J61YEf+A9zmColXDM5icqF49gbunH51B8+h+i2IvewpuxtA9TFoK68TuhUp/X3YKmmqhXasegHYabY50fqF9nJh9npWNhvITdkQHeaOqnFXUIwxfiEeUt49Yoa2waRR7a5LdRAP3SVM8hz0KIBT4="
|
||||
@@ -59,8 +67,9 @@ algolia:
|
||||
# SEO Related
|
||||
google_site_verification : "UQj93ERU9zgECodaaXgVpkjrFn9UrDMEzVamacSoQ8Y" # Replace this with your ID, or delete
|
||||
bing_site_verification :
|
||||
yandex_site_verification :
|
||||
naver_site_verification :
|
||||
yandex_site_verification :
|
||||
baidu_site_verification :
|
||||
|
||||
# Social Sharing
|
||||
twitter:
|
||||
@@ -223,6 +232,7 @@ defaults:
|
||||
author_profile: false
|
||||
share: false
|
||||
comments: false
|
||||
toc_sticky: true
|
||||
sidebar:
|
||||
nav: "docs"
|
||||
# _recipes
|
||||
|
||||
@@ -78,6 +78,8 @@ docs:
|
||||
url: /docs/javascript/
|
||||
- title: Meta
|
||||
children:
|
||||
- title: "FAQ"
|
||||
url: /docs/faq/
|
||||
- title: "History"
|
||||
url: /docs/history/
|
||||
- title: "Contributing"
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# for use with in-page templates
|
||||
---
|
||||
version: 4.26.1
|
||||
@@ -2,7 +2,7 @@
|
||||
title: "Quick-Start Guide"
|
||||
permalink: /docs/quick-start-guide/
|
||||
excerpt: "How to quickly install and setup Minimal Mistakes for use with GitHub Pages."
|
||||
last_modified_at: 2020-07-27
|
||||
last_modified_at: 2021-06-07T08:48:05-04:00
|
||||
redirect_from:
|
||||
- /theme-setup/
|
||||
toc: true
|
||||
@@ -10,9 +10,12 @@ toc: true
|
||||
|
||||
Minimal Mistakes has been developed as a [Gem-based theme](http://jekyllrb.com/docs/themes/) for easier use, and 100% compatible with GitHub Pages when used as a remote theme.
|
||||
|
||||
**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) for developing and maintaining it.**
|
||||
**If you enjoy this theme, please consider [sponsoring me](https://github.com/sponsors/mmistakes) to continue developing and maintaining it.**
|
||||
|
||||
[](https://www.buymeacoffee.com/mmistakes)
|
||||
|
||||
[](https://www.paypal.me/mmistakes)
|
||||
{: style="margin-top: 0.5em;"}
|
||||
|
||||
## Installing the theme
|
||||
|
||||
@@ -64,6 +67,7 @@ To install as a remote theme:
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
gem "jekyll-include-cache", group: :jekyll_plugins
|
||||
```
|
||||
|
||||
2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`.
|
||||
@@ -74,7 +78,7 @@ To install as a remote theme:
|
||||
bundle
|
||||
```
|
||||
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.21.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@{{ site.data.theme.version }}"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
|
||||
You may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref (e.g., `mmistakes/minimal-mistakes@4.9.0` or `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). This is useful when rolling back to older versions of the theme. If you don't specify a Git ref, the latest on `master` will be used.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ last_modified_at: 2018-03-20T15:19:22-04:00
|
||||
|
||||
Nothing clever here :wink:. Layouts, data files, and includes are all placed in their default locations. Stylesheets and scripts in `assets`, and a few development related files in the project's root directory.
|
||||
|
||||
**Please note:** If you installed Minimal Mistakes via the Ruby Gem method, theme files like `_layouts`, `_includes`, `_sass`, and `/assets/` will be missing. This is normal as they are bundled with the [`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) Ruby gem.
|
||||
**Please note:** If you installed Minimal Mistakes via the Ruby Gem method, theme files like `_layouts`, `_includes`, `_sass`, and `/assets/` will be missing. This is normal as they are bundled with the [`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) Ruby gem. If you would like to make changes, create the files and Jekyll will prefer your local copy.
|
||||
{: .notice--info}
|
||||
|
||||
```bash
|
||||
@@ -18,8 +18,10 @@ minimal-mistakes
|
||||
├── _includes
|
||||
| ├── analytics-providers # snippets for analytics (Google and custom)
|
||||
| ├── comments-providers # snippets for comments
|
||||
| ├── footer # custom snippets to add to site footer
|
||||
| ├── head # custom snippets to add to site head
|
||||
| ├── footer
|
||||
| | └── custom.html # custom snippets to add to site footer
|
||||
| ├── head
|
||||
| | └── custom.html # custom snippets to add to site head
|
||||
| ├── feature_row # feature row helper
|
||||
| ├── gallery # image gallery helper
|
||||
| ├── group-by-array # group by array helper for archives
|
||||
|
||||
@@ -84,6 +84,7 @@ gem "minimal-mistakes-jekyll"
|
||||
# gem "jekyll-include-cache"
|
||||
#
|
||||
# If you have any other plugins, put them here!
|
||||
# Cf. https://jekyllrb.com/docs/plugins/installation/
|
||||
group :jekyll_plugins do
|
||||
end
|
||||
```
|
||||
|
||||
+11
-14
@@ -2,21 +2,16 @@
|
||||
title: "Upgrading"
|
||||
permalink: /docs/upgrading/
|
||||
excerpt: "Instructions and suggestions for upgrading the theme."
|
||||
last_modified_at: 2018-11-25T19:38:20-05:00
|
||||
last_modified_at: 2024-04-23T00:43:19+08:00
|
||||
toc: true
|
||||
---
|
||||
|
||||
If you're using the [Ruby Gem]({{ "/docs/quick-start-guide/#ruby-gem-method" | relative_url }}) or [remote theme]({{ "/docs/quick-start-guide/#github-pages-method" | relative_url }}) versions of Minimal Mistakes, upgrading is fairly painless.
|
||||
If you're using the [Ruby Gem]({{ "/docs/quick-start-guide/#gem-based-method" | relative_url }}) or [remote theme]({{ "/docs/quick-start-guide/#remote-theme-method" | relative_url }}) versions of Minimal Mistakes, upgrading is fairly painless.
|
||||
|
||||
To check which version you are currently using, view the source of your built site and you should see something similar to:
|
||||
|
||||
```
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.21.0 by Michael Rose
|
||||
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
-->
|
||||
```text
|
||||
{% include copyright.html %}
|
||||
```
|
||||
|
||||
At the top of every `.html` file, `/assets/css/main.css`, and `/assets/js/main.min.js`.
|
||||
@@ -25,19 +20,21 @@ At the top of every `.html` file, `/assets/css/main.css`, and `/assets/js/main.m
|
||||
|
||||
Simply run `bundle update` if you're using Bundler (have a `Gemfile`) or `gem update minimal-mistakes-jekyll` if you're not.
|
||||
|
||||
When using Bundler you can downgrade or lock the theme to a specific release ([tag](https://github.com/mmistakes/minimal-mistakes/tags)), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`:
|
||||
When using Bundler you can downgrade or lock the theme to a specific release ([tag][tag]), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`:
|
||||
|
||||
```ruby
|
||||
gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "4.21.0"
|
||||
gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "{{ site.data.theme.version }}"
|
||||
```
|
||||
|
||||
For more information on [installing gems from git repositories](http://bundler.io/v1.16/guides/git.html) consult Bundler's documentation.
|
||||
[tag]: https://github.com/mmistakes/minimal-mistakes/tags
|
||||
|
||||
For more information on [installing gems from Git repositories](https://bundler.io/guides/git.html) consult Bundler's documentation.
|
||||
|
||||
## Remote theme
|
||||
|
||||
When setting `remote_theme: "mmistakes/minimal-mistakes@4.21.0"` in your `_config.yml` you may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref.
|
||||
When setting `remote_theme: "mmistakes/minimal-mistakes@{{ site.data.theme.version }}"` in your `_config.yml` you may also optionally specify a branch, [tag][tag], or commit to use by appending an @ and the Git ref.
|
||||
|
||||
For example you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases).
|
||||
For example, you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases).
|
||||
|
||||
To update the theme on GitHub Pages you'll need to push up a commit to force a rebuild. An empty commit works well if you don't have anything to push at the moment:
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user