Compare commits

...
106 Commits
Author SHA1 Message Date
iBug b7e170c5cf Release 4.27.1 💎 2025-05-02 18:52:37 +08:00
iBug cf6c261061 Fix X share button icon and color, close #5221 2025-05-02 15:18:03 +08:00
iBug 6de27253e7 Update CHANGELOG and history 2025-04-26 14:09:51 +08:00
Lars Olesen 61ae48d92a Modern font stack (#5033) 2025-04-26 13:28:45 +08:00
iBug 2d4e1e1ed1 Update CHANGELOG and history 2025-04-23 11:56:33 +08:00
iBug 918d04fa43 Release 4.27.0 💎 2025-04-23 11:56:24 +08:00
Paul Gross 126f71694f Add a "Share on Bluesky" button (#5179) 2025-04-23 11:54:28 +08:00
iBug 8193f6071e Update CHANGELOG and history 2025-04-18 10:52:20 +08:00
vyshnaviJammi 903ad6596c Update Social Share Buttons to Reflect Twitter Rebranding to X (#5210) 2025-04-18 10:51:01 +08:00
iBug 90ab9d28b9 _config.yml: Add minimal-mistakes-jekyll.gemspec to exclude, fix #5193 2025-04-02 23:07:46 +08:00
iBug d90b7e5b3e Update CHANGELOG and history 2025-02-14 22:47:26 +08:00
Lukas Vermeer af81ee840f Tweak contrast skin $primary-color to adhere to WCAG guidelines (#5126) 2025-02-14 22:46:03 +08:00
Jan De Luyck cb140fc5e6 Mastodon button color (#5109) 2025-02-08 21:29:29 +08:00
Pablo Alonso 1c6bd0d9e2 Fix typo in docs/_docs/05-configuration.md (#5106) 2025-02-01 03:48:53 +08:00
iBug 8f02ec7714 Update CHANGELOG and history 2025-01-02 02:21:53 +08:00
Hyuk Min ef464c868e feat(single.html): Add provider and comments info for non-production (#5068) 2025-01-02 02:20:46 +08:00
iBug 85e1ba131e Update CHANGELOG and regenerate JS 2024-11-28 01:11:48 +08:00
Jason Williscroft 1ae32a42cb Hide hidden links & remove the overlay when one is clicked (#5042) 2024-11-28 01:11:14 +08:00
iBug 6f5e6f4391 fix(_includes/post_pagination.html): Remove trailing newline 2024-11-11 21:31:20 +08:00
Salif Mehmed bc0c83c0c4 Add Bulgarian localization (#5003) 2024-10-28 16:05:59 +08:00
iBug cff0e2a387 fix(_includes/figure): Apply escape_once on include.alt 2024-10-02 22:57:16 +08:00
iBug 844812b4f4 Update CHANGELOG 2024-09-26 13:40:22 +08:00
Archer 5fd703674b Fix JavaScript null error on home and splash layouts (#4939) 2024-09-26 13:39:03 +08:00
iBug a3e2b33c5e Additionally label "spam" for spam PRs 2024-09-26 13:27:12 +08:00
iBug 6be43f77a5 Use $doc-font-size in _reset.scss, fix #4983 2024-09-20 02:38:55 +08:00
iBug 075fad74cb Use include documents-collection.html in home layout 2024-09-17 16:37:55 +08:00
iBug 7d212bc310 Update CHANGELOG 2024-08-20 17:04:25 +08:00
Adel Aloui 96149caa54 Fix: Prevent double title issue in SEO metadata by updating seo.html (#4959) 2024-08-20 16:55:30 +08:00
Dave Cross b939edc600 The "if" means the default is never used (#4955) 2024-08-20 14:27:48 +08:00
Dave Cross 3d44327497 Remove unnecessary "type" attribute (#4956) 2024-08-20 14:25:23 +08:00
iBug b0b2698d35 Update bug_report issue template 2024-08-05 02:45:28 +08:00
iBug 6e83c1acd5 _config.yml: Drop explicit default falses 2024-06-29 04:14:33 +08:00
iBug 66949b5c4c Update Algolia index with GH Actions 2024-06-27 21:13:14 +08:00
iBug 959d5fe1f9 Accidentally committed a test file 2024-06-26 00:17:53 +08:00
iBug 7a7c8022ad Update CHANGELOG and history 2024-06-25 23:57:00 +08:00
iBug 33c6dbd1be Fix wrong direction for feature_row with type=right, fix #4061 2024-06-25 23:55:01 +08:00
iBug d27cc9c132 Fix the remaining issues with CSS logical properties 2024-06-25 23:45:32 +08:00
iBug 922440cd55 Update all CSS to use logical properties
- Vendor CSS's are excluded for now
- Removed <IE7 asterisk prefix items
2024-06-25 23:36:16 +08:00
iBug 9ffaf41d20 Fix two misdirections 2024-06-25 22:55:58 +08:00
iBug ded2d87b2b Replace '[dir=rtl] &' with CSS logical properties where it makes sense 2024-06-25 22:49:22 +08:00
iBug 97f0f35498 Update CHANGELOG and history 2024-06-25 19:54:17 +08:00
621529aaf2 Add RTL Support (#4886)
Signed-off-by: Hamed Faramarzi <hamed.faramarzi@gmail.com>
Co-authored-by: Hamed Faramarzi <hamed.faramarzi@gmail.com>
Co-authored-by: iBug <git@ibugone.com>
2024-06-25 19:50:25 +08:00
wssbck ef5018ee6f Add missing Polish translation (#4890) 2024-06-24 05:08:34 +08:00
Deepak Mahakale 12ae094b8a Change the link it is redirecting to - Fix ahref issue (#4882)
ahref is warning about this since the link redirects to the new path
2024-06-24 05:04:28 +08:00
iBug 93022d6432 Update CHANGELOG and history 2024-06-15 17:54:54 +08:00
iBug 1e6bcecb5a Release 4.26.2 💎 2024-06-15 17:53:30 +08:00
iBug 784efffcd1 Update CHANGELOG and history 2024-06-15 17:52:26 +08:00
Steffen Uhlig b82680b103 Allow overriding HTML lang on a per-page basis (#4862)
The W3C [recommends](https://www.w3.org/International/questions/qa-html-language-declarations) to specify language using identifiers as per [RFC 5646](https://tools.ietf.org/html/rfc5646) which uses dashes.
2024-06-15 17:51:28 +08:00
iBug 7b6b45055c Update CHANGELOG and history 2024-06-10 02:57:57 +08:00
Michal Stanke 02342c919a feat: add Czech localization (#4866) 2024-06-10 02:56:05 +08:00
iBug 5b203f46c4 changelog: Clarify #4841 only triggers with popup=true 2024-05-27 01:08:33 +08:00
iBug ff56bc2bd6 assets/css/main.scss: Add trailing newline 2024-05-16 22:37:48 +08:00
iBug 4efb8638c4 _includes/figure: Replace remove:<p> with strip_html, fix #4841 2024-05-15 00:46:41 +08:00
iBug 536e89d174 Update CHANGELOG and history 2024-05-10 18:00:49 +08:00
iBug 1a85a28685 Release 4.26.1 💎 2024-05-10 17:59:50 +08:00
iBug be3c046acf Actually 3 B's in "dribbble" 2024-05-07 14:21:28 +08:00
iBug 573f286971 Limit "auto scroll ToC" to Chromium-based 2024-05-07 14:20:45 +08:00
iBug 70462d0e16 Rewrite social icons SCSS with a loop 2024-05-06 21:37:40 +08:00
iBug 9dce68d58a Oops, fixed the typo the wrong way 2024-05-06 21:28:05 +08:00
iBug 4c3ada478a Fix typo: dribbble → dribble
seems like nobody uses it anyways
2024-05-06 21:22:06 +08:00
iBug 438710da82 Disable copy button for bad pre blocks 2024-05-06 21:16:04 +08:00
iBug 4f76c2546a Try fixing copy button flying out 2024-05-06 21:06:32 +08:00
iBug 14e3fa2b28 Add success indicator for code block copy button 2024-05-06 01:20:41 +08:00
iBug dc965c5bbe Release 4.26.0 💎 2024-05-05 19:54:28 +08:00
iBug accc82a03b Add "new in v4.26.0" in documentation 2024-05-05 19:50:50 +08:00
iBug 148349b029 Update CHANGELOG and bundle exec rake 2024-05-05 19:44:28 +08:00
iBug 0527e17354 Add "copy to clipboard" button for code blocks (#2812)
* Add copy-to-clipboard button and JS

* Ignore line numbers if present

* Rewrite heading permalink code to use vanilla JS

* README: Add credits to zenorocha/clipboard.js (MIT License)

@iBug really wants a place here in the Credits section :P

* Add .no-copy for hiding the button, update docs

* Add td.rouge-code to selectors

* Fix navigator.clipboard branch

* Add screenreader text for copy button

* Restore focus to the button after copying

* Add site-wide enable switch
2024-05-05 19:43:24 +08:00
iBug c76813f6f5 Remove "sticky sidebar" JS in favor of CSS media queries 2024-05-05 18:23:01 +08:00
iBug 4364fb73f5 Cleanup seo.html and update CHANGELOG 2024-05-05 18:13:23 +08:00
Lars OlesenandiBug dfaac405f0 Fix SEO title when it contains a vertical bar (#3113)
* Do not markdownify title

* Support markup in titles

* Support markup in titles

* Fix seo.html as reviewed

* seo_title is now unconditionally computed

---------

Co-authored-by: iBug <git@ibugone.com>
2024-05-05 18:07:23 +08:00
iBug 9c386c5509 Update CHANGELOG and bundle exec rake 2024-05-05 17:36:35 +08:00
Lars OlesenandiBug 2f5e771072 Split schema to a separate include file (#3085)
* Make changes to schema easier

* Only show on one page not on all pages

* Move schema.html to _includes/ and move the URL guard out

---------

Co-authored-by: iBug <git@ibugone.com>
2024-05-05 17:35:22 +08:00
Dominique Deluvio 16103c6d49 Remove overlay and revert X to hamburger icon when popup disappears (#3958)
the `.hidden-links` popup disappears after you move the cursor out of it.
However, the white overlay on the screen does not disappear, as well as the `x` nav button on the top-right, remains as is.
Now when you click anywhere on the screen the popup appears again, and the `x` nav button turns back to a hamburger menu button.

And when you click on the hamburger menu, the popup disappears. now it's happening the exact opposite.

To remedy this, the pop up menu as well as the `x` nav button should also return back to normal once the popup disappears.

This commit fixes this issue.
2024-05-05 17:34:12 +08:00
iBug bf66a5c345 Update CHANGELOG and history 2024-05-05 17:28:01 +08:00
Dmitriy Derepko ceeda03132 Add target attribute for navigation link (#3056) 2024-05-05 17:12:37 +08:00
iBug f1ffad4b5e Update CHANGELOG and history 2024-05-05 17:05:01 +08:00
John Scott 162f659f61 Add popup parameter for figure include (#3119) 2024-05-05 17:03:40 +08:00
iBug adae207d17 Revert f3c617f on _includes/figure to make way for #3119 2024-05-05 17:02:09 +08:00
iBug 4b08acb115 Update CHANGELOG and history 2024-05-05 16:45:18 +08:00
iBug d240efaa7c Merge branch 'master' of GitHub:mmistakes/minimal-mistakes 2024-05-05 16:45:03 +08:00
Jeremiah StrongandiBug 0378a31f53 Update Social Sharing links section (#4066)
* Update 10-layouts.md

Update social sharing section for appropriate Reddit example and resource locations.

* Update as reviewed

---------

Co-authored-by: iBug <git@ibugone.com>
2024-05-05 16:44:40 +08:00
iBug d47d62f695 Update CHANGELOG and history 2024-05-05 16:30:51 +08:00
64b1d429a4 Multiple Sidebar Nav Lists (#2843)
Co-authored-by: Tom Manner <tsmanner@us.ibm.com>
Co-authored-by: iBug <git@ibugone.com>
2024-05-05 16:29:54 +08:00
iBug 244eff763a bundle exec rake js 2024-05-05 15:28:01 +08:00
iBug 25ce47de8c Rakefile: Add jQuery to uglify targets
Regression of 0b8b5230f
2024-05-05 15:27:23 +08:00
iBug 256e626503 Merge categories and tags layout into _includes/posts-taxonomy.html 2024-05-05 14:13:28 +08:00
iBug 1d3fd5d7d6 Update README 2024-05-05 05:54:53 +08:00
iBug f8ea22fdb8 Update CHANGELOG and history 2024-05-05 05:53:41 +08:00
iBug 7e7b901974 Add Rake task :version
For updating all hard-coded version numbers from `package.json`
2024-05-05 05:52:08 +08:00
iBug f33349c2ee Update CHANGELOG and history 2024-05-05 04:37:14 +08:00
iBug ed883ea2d4 Remove deprecated "page.header.cta_url" setting (#4821) 2024-05-05 04:35:57 +08:00
iBug ab42c3ba1d Gemfile: No newline at end of file 2024-05-05 04:28:03 +08:00
iBug b278dac7fb Merge banner.js into Rake task
Also let uglify-js produce source map for easier debugging
2024-05-05 04:13:39 +08:00
iBug 0b8b5230f9 Migrate npm run scripts to Rakefile tasks
Rakefile is like Makefile - it has dependency management,
while npm run scripts do not.

Aside from that, this also allows us to drop literally all Node.js packages,
as uglify-js is self-contained and has no dependencies.
Reduced node_modules from 17M to 374K.
2024-05-05 04:03:07 +08:00
iBug 6165d896a0 Replace "hidden" check in Liquid with where_exp 2024-05-05 03:18:27 +08:00
iBug bde92b6d4a page__hero.html: Fix an unclosed <p> tag 2024-05-05 02:36:17 +08:00
iBug 271b5da8e5 04-upgrading.md: Minor formatting and grammar fixes 2024-05-05 02:35:06 +08:00
iBug bce2b50556 Fix logic error in toc-scroll 2024-05-05 01:26:25 +08:00
iBug 7daa7aceb3 Try sticky ToC on all docs pages 2024-05-05 01:08:35 +08:00
iBug 3ed92f5ea8 Update CHANGELOG and history 2024-05-05 01:06:18 +08:00
iBug dc41016c62 Auto scroll sticky ToC with content (#3115) 2024-05-05 01:05:21 +08:00
iBug 7ef6af66e4 Remove unused classes from _layouts/single.html 2024-05-05 00:32:30 +08:00
iBug 4b0c8bd1b9 Add .notice--danger for unsupported settings in j-p-v2 2024-05-05 00:07:59 +08:00
iBug 9ac9602e22 Add proper support for sverrirs' Jekyll Paginate V2 plugin (excl. AutoPages) (#2636) 2024-05-05 00:05:12 +08:00
iBug f3c617f7de Add documentation for the incoming Jekyll Paginate V2 support 2024-05-05 00:00:45 +08:00
iBug 753ccbbd03 Rewrite skin previews on 05-configuration.md in Liquid template 2024-05-04 23:32:06 +08:00
87 changed files with 1602 additions and 2770 deletions
-68
View File
@@ -1,68 +0,0 @@
---
name: "Bug Report"
about: "Is something not working as expected?"
---
<!--
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/
If none of the above solved your problem, you can continue below.
-->
## Environment
<!--
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.
-->
- 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:
## Expected behavior
<!--
What is it you expected to happen? This should be a description of how the
functionality you tried to use is supposed to work.
-->
## Steps to reproduce the behavior
<!--
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.
-->
## Other
<!--
NOTE: Please provide a code repository, gist, code snippet, sample files,
screenshots, or anything else you think will aid in reproducing the issue.
-->
+16 -3
View File
@@ -19,7 +19,7 @@ body:
- type: textarea
id: environment
attributes:
label: What happened?
label: Theme version and system environment
description: |
Please include theme version, Jekyll version, public git repository, whether
you are hosting with GitHub Pages, and the operating system you tested with.
@@ -33,8 +33,21 @@ body:
- Ruby gem or remote theme version:
- Jekyll version:
- Git repository URL:
- Hosted on GitHub Pages (if yes provide URL to site):
- URL to the page with the problem:
- Operating system:
- Browser version:
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What happened?
description: |
Describe the problem **in detail**. For example:
- What is missing?
- What error do you see? Attach the error log if available.
validations:
required: true
@@ -78,4 +91,4 @@ body:
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
required: false
-16
View File
@@ -1,16 +0,0 @@
---
name: "Documentation"
about: "Found a typo or something that needs clarification?"
---
<!-- Thanks for taking the time to open an issue and help make the docs better -->
## Motivation
<!-- Why should we update our docs? -->
<!-- What should we do instead? -->
## Suggestion
<!-- What should we do instead? -->
+3
View File
@@ -17,6 +17,9 @@ jobs:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: 'Type: Invalid'
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: 'Type: Spam'
- uses: superbrothers/close-pull-request@v3
with:
# Optional. Post an issue comment just before closing a pull request.
+47
View File
@@ -0,0 +1,47 @@
name: build
on:
push:
branches:
- master
workflow_dispatch: {}
repository_dispatch: {}
jobs:
build:
if: github.repository == 'mmistakes/minimal-mistakes'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
- name: Setup cache for Bundler
id: cache
uses: actions/cache@v4
with:
path: |
docs/Gemfile.lock
docs/vendor/bundle
key: ${{ runner.os }}-bundler-${{ hashFiles('docs/Gemfile') }}
restore-keys: |
${{ runner.os }}-bundler-
- name: Install - Bundler
env:
MAKE: make -j2
working-directory: docs/
run: |
bundle config set path vendor/bundle
bundle install --jobs=4 --retry=3
bundle clean
- name: Update Algolia index
working-directory: docs/
run: bundle exec jekyll algolia push
env:
ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}
continue-on-error: true
+3
View File
@@ -2,6 +2,9 @@
*~
*.sw[p_]
# IntelliJ IDEA
*.idea
# Sublime Text
*.sublime-project
*.sublime-workspace
+101
View File
@@ -1,5 +1,106 @@
# Changelog
## [4.27.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.1)
### Enhancements
- Add a "Share on Bluesky" button (#5179)
- Add preset variables for modern font stack (#5033)
### Bug Fixes
- Fix wrong icon and color for X share button.
## [4.27.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.0)
### Enhancements
- Add RTL Support. [#4886](https://github.com/mmistakes/minimal-mistakes/pull/4886)
- Add missing Polish translation. [#4890](https://github.com/mmistakes/minimal-mistakes/pull/4890)
- Rewrite most directions with [CSS logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values).
- Remove unnecessary "type" attribute (#4956)
- The "if" means the default is never used (#4955)
- For pages without a title, show the site title only once (#4959)
- Use `documents-collection.html` partial in `home` layout.
- Add Bulgarian translation. [#5003](https://github.com/mmistakes/minimal-mistakes/pull/5003)
- Add provider and comments info to `single.html` layout for non-production. (#5068)
- Tweak contrast skin $primary-color to adhere to WCAG guidelines. (#5126)
- Update social share buttons to reflect Twitter rebranding to X (#5210)
### Bug Fixes
- Replace a redirected link to MadeMistakes in footer. [#4882](https://github.com/mmistakes/minimal-mistakes/pull/4882)
- Fix wrong float direction for `feature_row` with `type="right"`. [#4061](https://github.com/mmistakes/minimal-mistakes/issues/4061)
- Fix reset stylesheet overruling `$doc-font-size`. [#4983](https://github.com/mmistakes/minimal-mistakes/issues/4983)
- Fix JavaScript null error on home and splash layouts. [#4938](https://github.com/mmistakes/minimal-mistakes/issues/4938), [#4939](https://github.com/mmistakes/minimal-mistakes/pull/4939)
- Fix bad &lt;figure&gt; HTML if "alt" contains quotes.
- Fix extra newline generated in `_includes/post_pagination.html`.
- Hide hidden links & remove the overlay when one is clicked. [#5042](https://github.com/mmistakes/minimal-mistakes/pull/5042)
- Fix typo in "Configuration" (#5106)
- bundle exec jekyll serve will fail if more than once (#5193)
### Documentation & Maintenance
- Automatically update Algolia search index with GitHub Actions.
## [4.26.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.2)
### Enhancements
- Add Czech localization. [#4866](https://github.com/mmistakes/minimal-mistakes/pull/4866)
- Allow overriding HTML `lang` attribute on a per-page basis. [#4862](https://github.com/mmistakes/minimal-mistakes/pull/4862)
### Bug Fixes
- Figure helper breaks when using code markup in caption with `popup=true`. [#4841](https://github.com/mmistakes/minimal-mistakes/issues/4841)
## [4.26.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.1)
### Bug Fixes
- Disable copy button on invalid syntax highlighting blocks to avoid positioning issues.
- Fix typo for `fa-dribbble` in `_utilities.scss`.
- Restrict "auto scroll sticky ToC to content" feature to Chromium browsers for now. [#4826](https://github.com/mmistakes/minimal-mistakes/issues/4826)
### Documentation & Maintenance
- Rewrite social icons SCSS with a loop.
### Enhancements
- Change the icon of a copy button into a tick for 1.5 seconds on successful copy.
## [4.26.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.0)
### Bug Fixes
- Fix an unclosed `<p>` tag in `page__hero.html`, near `page.header.actions`.
- Remove overlay and revert X to hamburger icon when popup disappears. [#3958](https://github.com/mmistakes/minimal-mistakes/pull/3958)
- Fix SEO title when it contains a vertical bar. [#3094](https://github.com/mmistakes/minimal-mistakes/pull/3094) [#3113](https://github.com/mmistakes/minimal-mistakes/pull/3113)
- Remove "sticky sidebar" JS as it's now completely based on CSS media queries. [#4245](https://github.com/mmistakes/minimal-mistakes/issues/4245) [#4645](https://github.com/mmistakes/minimal-mistakes/pull/4645)
### Enhancements
- Add support for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2) 🎉 [#2636](https://github.com/mmistakes/minimal-mistakes/pull/2636)
- Add "copy to clipboard" button for code blocks 🎉 [#2812](https://github.com/mmistakes/minimal-mistakes/pull/2812)
- Auto scroll sticky ToC with content. [#3115](https://github.com/mmistakes/minimal-mistakes/pull/3115)
- Replace "hidden" check in Liquid templates with `where_exp: "item", "item.hidden != true"`.
- Remove deprecated `page.header.cta_url` setting. [#4821](https://github.com/mmistakes/minimal-mistakes/pull/4821)
- Allow multiple nav lists in sidebar. [#2843](https://github.com/mmistakes/minimal-mistakes/pull/2843)
- Add popup parameter to `{% include figure %}` to enable Magnific Popup. [#3119](https://github.com/mmistakes/minimal-mistakes/pull/3119)
- Add target attribute for navigation link. [#3056](https://github.com/mmistakes/minimal-mistakes/pull/3056)
- Split schema to a separate include file. [#3085](https://github.com/mmistakes/minimal-mistakes/pull/3085)
- Cleanup `_includes/seo.html`.
### Documentation & Maintenance
- Rewrite skin previews on `05-configuration.md` in Liquid template.
- Remove unused classes from `_layouts/single.html`.
- Migrate npm run scripts to Ruby Rake tasks.
- Add Rake task `version` for updating all hard-coded version numbers from `package.json` all at once.
- Merge `categories` and `tags` layout into `_includes/posts-taxonomy.html`.
- Update Social Sharing links section. [#4066](https://github.com/mmistakes/minimal-mistakes/pull/4066)
## [4.25.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.1)
### Bug Fixes
+1 -1
View File
@@ -1,2 +1,2 @@
source "https://rubygems.org"
gemspec
gemspec
+1 -1
View File
@@ -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
+19 -12
View File
@@ -27,7 +27,7 @@ Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building per
- 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/), [utterances](https://utteranc.es/), and [giscus](https://giscus.app/)).
- [Google Analytics](https://www.google.com/analytics/) support.
- 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.
- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), Bulgarian, Catalan, Chinese, Czech, 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)
@@ -121,28 +121,30 @@ To install:
bundle
```
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.25.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.27.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:
- README.md (this file)
- package.json
- docs/_config.yml (as theme_version)
- README.md (this file)
- docs/_data/theme.yml
- docs/_pages/home.md (in Front Matter "excerpt")
For every release, files listed above should be manually updated with the new version number.
Additionally, the license year is hard-coded in these files:
- README.md (this file, near the end)
- LICENSE
`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 `npm run build:js`, references `_includes/copyright.js`)
- 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.
@@ -202,12 +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
@@ -280,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).
+63 -4
View File
@@ -3,10 +3,11 @@ require "jekyll"
require "json"
require "listen"
require "rake/clean"
require "shellwords"
require "time"
require "yaml"
task :default => [:copyright, :changelog]
task :default => %i[copyright changelog js version]
package_json = JSON.parse(File.read("package.json"))
@@ -73,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!
@@ -83,6 +83,7 @@ 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 = {
@@ -105,7 +106,11 @@ file "docs/_docs/18-history.md" => "CHANGELOG.md" do |t|
f.puts "<!--\n Sourced from CHANGELOG.md\n See Rakefile `task :changelog` for details\n-->"
f.puts ""
f.puts "{% raw %}"
changelog = File.read(t.prerequisites.first).gsub(/^# [^\n]*$/m, "").strip
# Remove H1
changelog = File.read(t.prerequisites.first)
.gsub(/^# [^\n]*$/m, "")
.gsub(/\(#(\d+)\)$/m, "[#\\1](https://github.com/mmistakes/minimal-mistakes/issues/\\1)")
.strip
f.write changelog
f.puts ""
f.puts "{% endraw %}"
@@ -150,3 +155,57 @@ 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
task :gem do
sh 'gem build minimal-mistakes-jekyll.gemspec'
end
+30 -3
View File
@@ -16,6 +16,7 @@ minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt"
# Site Settings
locale : "en-US"
rtl : # true, false (default) # turns direction of the page into right to left for RTL languages
title : "Site Title"
title_separator : "-"
subtitle : # site tagline that appears below site title in masthead
@@ -27,8 +28,9 @@ repository : # GitHub username/repo-name e.g. "mmistakes/minimal-m
teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png"
logo : # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png"
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
# breadcrumbs : false # true, false (default)
breadcrumbs : # 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:
@@ -103,7 +105,7 @@ social:
# Analytics
analytics:
provider : false # false (default), "google", "google-universal", "google-gtag", "custom"
provider : # false (default), "google", "google-universal", "google-gtag", "custom"
google:
tracking_id :
anonymize_ip : # true, false (default)
@@ -182,6 +184,7 @@ exclude:
- gulpfile.js
- LICENSE
- log
- minimal-mistakes-jekyll.gemspec
- node_modules
- package.json
- package-lock.json
@@ -225,9 +228,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:)
+115 -9
View File
@@ -1070,17 +1070,17 @@ da-DK:
# Polish
# ------
pl: &DEFAULT_PL
skip_links :
skip_primary_nav :
skip_content :
skip_footer :
skip_links : "Pomiń linki"
skip_primary_nav : "Przejdź do nawigacji"
skip_content : "Przejdź do treści"
skip_footer : "Przejdź do stopki"
page : "Strona"
pagination_previous : "Poprzednia"
pagination_next : "Następna"
breadcrumb_home_label : "Strona główna"
breadcrumb_separator : "/"
menu_label : "Przełącz menu"
search_label :
search_label : "Przełącz wyszukiwanie"
toc_label : "Spis treści"
ext_link_label : "Link bezpośredni"
less_than : "mniej niż"
@@ -1101,7 +1101,7 @@ pl: &DEFAULT_PL
email_label : "Email"
recent_posts : "Najnowsze wpisy"
undefined_wpm : "Parametr words_per_minute nie został zdefiniowany w _config.yml."
comment_form_info : "Twój adres email nie będzie udostępiony. Wymagane pola są oznaczone"
comment_form_info : "Twój adres email nie będzie udostępiony. Wymagane pola są oznaczone."
comment_form_comment_label : "Skomentuj"
comment_form_md_info : "Markdown jest wspierany"
comment_form_name_label : "Imię"
@@ -1400,7 +1400,7 @@ fa: &DEFAULT_FA
toc_label : "در این صفحه"
ext_link_label : "لینک مستقیم"
less_than : " "
minute_read : "(طول مطالعه (دقیقه"
minute_read : "دقیقه، طول مطالعه"
share_on_label : "اشتراک گذاری در"
meta_label :
tags_label : "تگ ها: "
@@ -1427,9 +1427,9 @@ fa: &DEFAULT_FA
comment_btn_submitted : "ارسال شد"
comment_success_msg : ".باتشکر از ارسال دیدگاه! پس از تأیید، این دیدگاه در سایت نشان داده خواهد شد"
comment_error_msg : ".متاسفانه در ارسال شما خطایی بود. لطفا مطمئن شوید تمام فیلدهای مورد نیاز تکمیل شده و دوباره امتحان کنید"
loading_label : "...بارگذاری"
loading_label : "بارگذاری..."
search_label_text :
search_placeholder_text : "...عبارت جستجوی خود را وارد کنید"
search_placeholder_text : "عبارت جستجوی خود را وارد کنید..."
search_algolia_no_results :
results_found : "نتایج"
back_to_top : "بازگشت به بالا"
@@ -2074,6 +2074,112 @@ uk: &DEFAULT_UK
uk-UA:
<<: *DEFAULT_UK
# Czech / čeština
# -----------------
cs: &DEFAULT_CS
skip_links : "Rychlé odkazy"
skip_primary_nav : "Přejít na hlavní navigace"
skip_content : "Přejít na obsah"
skip_footer : "Přejít na zápatí"
page : "Stránka"
pagination_previous : "Předchozí"
pagination_next : "Další"
breadcrumb_home_label : "Domů"
breadcrumb_separator : "/"
menu_label : "Přepnout zobrazení menu"
search_label : "Přepnout zobrazení vyhledávání"
toc_label : "Na této stránce"
ext_link_label : "Přímý odkaz"
less_than : "méně než"
minute_read : "minut"
share_on_label : "Sdílet"
meta_label :
tags_label : "Štítky:"
categories_label : "Rubriky:"
date_label : "Aktualizováno:"
comments_label : "Okomentovat"
comments_title : "Komentáře"
more_label : "Zjistit více"
related_label : "Může se vám také líbit"
follow_label : "Sledovat:"
feed_label : "Zdroj"
powered_by : "Používáme"
website_label : "Web"
email_label : "E-mail"
recent_posts : "Nejnovější příspěvky"
undefined_wpm : "V souboru _config.yml chybí parametr words_per_minute"
comment_form_info : "Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena"
comment_form_comment_label : "Komentář"
comment_form_md_info : "Podporuje markdown."
comment_form_name_label : "Jméno"
comment_form_email_label : "E-mailová adresa"
comment_form_website_label : "Web (volitelné)"
comment_btn_submit : "Odeslat komentář"
comment_btn_submitted : "Odesláno"
comment_success_msg : "Děkujeme za komentář. Na stránce se objeví jakmile projde schválením."
comment_error_msg : "Odeslání se nezdařilo. Zkontrolujte, že jste vyplnili všechna povinná pole a zkuste to znovu."
loading_label : "Načítání..."
search_label_text : "Zadejte vyhledávání..."
search_placeholder_text : "Zadejte vyhledávání..."
search_algolia_no_results : "Žádné výsledky"
results_found : "Nalezené výsledky"
back_to_top : "Na začátek stránky"
cs-CZ:
<<: *DEFAULT_CS
# Bulgarian
# -----------------
bg: &DEFAULT_BG
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 : "Осъществено чрез"
website_label : "Уебсайт"
email_label : "Е-поща"
recent_posts : "Последни публикации"
undefined_wpm : "Недефиниран параметър words_per_minute в _config.yml"
comment_form_info : "Вашият адрес за е-поща няма да бъде публикуван. Задължителните полета са обозначени"
comment_form_comment_label : "Коментар"
comment_form_md_info : "Поддържа се Маркдаун."
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 : "Обратно към началото"
bg-BG:
<<: *DEFAULT_BG
# Another locale
# --------------
#
+1 -1
View File
@@ -11,7 +11,7 @@
{% endif %}
<div class="{{ include.type | default: 'list' }}__item">
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"{% if post.locale %} lang="{{ post.locale }}"{% endif %}>
{% if include.type == "grid" and teaser %}
<div class="archive__item-teaser">
<img src="{{ teaser | relative_url }}" alt="">
+1 -1
View File
@@ -26,7 +26,7 @@
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
{% endif %}
{% if forloop.last %}
<li class="current">{{ page.title }}</li>
<li class="current"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</li>
{% else %}
{% assign i = i | plus: 1 %}
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
+2 -2
View File
@@ -1,6 +1,6 @@
<!--
Minimal Mistakes Jekyll Theme 4.25.1 by Michael Rose
Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
Minimal Mistakes Jekyll Theme 4.27.1 by Michael Rose
Copyright 2013-2025 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
-->
+2 -2
View File
@@ -1,6 +1,6 @@
/*!
* Minimal Mistakes Jekyll Theme 4.25.1 by Michael Rose
* Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
* Minimal Mistakes Jekyll Theme 4.27.1 by Michael Rose
* Copyright 2013-2025 Michael Rose - mademistakes.com | @mmistakes
* Free for personal and commercial use under the MIT license
* https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
*/
+2 -4
View File
@@ -1,4 +1,4 @@
{% assign entries = site[include.collection] %}
{% assign entries = include.entries | default: site[include.collection] | where_exp: "post", "post.hidden != true" %}
{% if include.sort_by %}
{% assign entries = entries | sort: include.sort_by %}
@@ -9,7 +9,5 @@
{% endif %}
{%- for post in entries -%}
{%- unless post.hidden -%}
{% include archive-single.html %}
{%- endunless -%}
{% include archive-single.html type=include.type %}
{%- endfor -%}
+3 -1
View File
@@ -1,6 +1,8 @@
<figure class="{{ include.class }}">
{%- if include.popup -%}<a href="{{ include.image_path | relative_url }}" class="image-popup"{% if include.caption %} title="{{ include.caption | markdownify | strip_html }}"{% endif %}>{%- endif -%}
<img src="{{ include.image_path | relative_url }}"
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
alt="{% if include.alt %}{{ include.alt | escape_once }}{% endif %}">
{%- if include.popup -%}</a>{%- endif -%}
{%- if include.caption -%}
<figcaption>
{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}
+1 -1
View File
@@ -18,4 +18,4 @@
</ul>
</div>
<div class="page__footer-copyright">&copy; {{ site.time | date: '%Y' }} <a href="{{ site.copyright_url | default: site.url }}">{{ site.copyright | default: site.title }}</a>. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
<div class="page__footer-copyright">&copy; {{ site.time | date: '%Y' }} <a href="{{ site.copyright_url | default: site.url }}">{{ site.copyright | default: site.title }}</a>. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/jekyll-themes/minimal-mistakes/" rel="nofollow">Minimal Mistakes</a>.</div>
+3
View File
@@ -11,6 +11,9 @@
<script>
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 -->
+5 -1
View File
@@ -14,7 +14,11 @@
<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>
+18 -17
View File
@@ -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 -3
View File
@@ -36,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 %}
+2 -6
View File
@@ -1,14 +1,10 @@
{% 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">
{% assign count = 0 %}
{% assign limit = include.limit | default: 4 %}
{% for post in include.posts %}
{% if post.hidden %}{% continue %}{% endif %}
{% for post in posts limit:4 %}
{% if post.id == page.id %}{% continue %}{% endif %}
{% if count >= limit %}{% break %}{% endif %}
{% assign count = count | plus: 1 %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
+70
View File
@@ -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">&hellip;</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">&hellip;</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 %}
+68
View File
@@ -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">&hellip;</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">&hellip;</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>
+5 -68
View File
@@ -1,70 +1,7 @@
{% 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">&hellip;</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">&hellip;</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 %}
+3 -3
View File
@@ -1,14 +1,14 @@
{% if page.previous or page.next %}
<nav class="pagination">
{% if page.previous %}
<a href="{{ page.previous.url | relative_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
<a href="{{ page.previous.url | relative_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html | strip}}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
{% else %}
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
{% endif %}
{% if page.next %}
<a href="{{ page.next.url | relative_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
<a href="{{ page.next.url | relative_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html | strip}}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
{% else %}
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
{% endif %}
</nav>
{% endif %}
{% endif %}
+3 -4
View File
@@ -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 -%}
+3 -4
View File
@@ -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 -%}
+37
View File
@@ -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' }} &uarr;</a>
</section>
{% endif %}
{% endfor %}
{% endfor %}
+16
View File
@@ -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>
+18 -42
View File
@@ -1,24 +1,17 @@
<!-- 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: '|', '&#124;' %}
{%- if page.title -%}
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
{%- assign page_title = page.title | default: site.title | replace: '|', '&#124;' -%}
{%- if page_title contains site.title -%}
{%- assign seo_title = page_title | replace: '|', '&#124;' -%}
{%- else -%}
{%- assign seo_title = page_title | append: " " | append: title_separator | append: " " | append: site.title | replace: '|', '&#124;' -%}
{%- endif -%}
{%- if seo_title -%}
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
{%- 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 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 +25,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 +35,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 +48,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 +63,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 +109,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 }}" />
+14 -6
View File
@@ -1,11 +1,19 @@
<section class="page__share">
{% if site.data.ui-text[site.locale].share_on_label %}
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
{% endif %}
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" 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' }} Twitter"><i class="fab fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
<a href="https://x.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--x" aria-label="Share on X" 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' }} X">
<i class="fab fa-fw fa-x-twitter" aria-hidden="true"></i><span> X</span>
</a>
<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.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" aria-label="Share on 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 }}" 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" aria-label="Share on 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://bsky.app/intent/compose?text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--bluesky" 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' }} Bluesky">
<i class="fab fa-fw fa-bluesky" aria-hidden="true"></i><span> Bluesky</span>
</a>
</section>
+1 -1
View File
@@ -20,7 +20,7 @@ author_profile: false
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
<h1 id="page-title" class="page__title"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</h1>
{% endunless %}
{% for post in page.posts %}
{% include archive-single.html %}
+2 -2
View File
@@ -19,8 +19,8 @@ layout: default
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
<h1 id="page-title" class="page__title"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</h1>
{% endunless %}
{{ content }}
</div>
</div>
</div>
+1 -37
View File
@@ -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 }}" 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' }} &uarr;</a>
</section>
{% endif %}
{% endfor %}
{% endfor %}
{% include posts-taxonomy.html taxonomies=site.categories %}
+2 -2
View File
@@ -3,13 +3,13 @@
<!doctype html>
{% include copyright.html %}
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
<html lang="{{ site.locale | replace: "_", "-" | default: "en" }}" class="no-js">
<head>
{% include head.html %}
{% include head/custom.html %}
</head>
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}" dir="{% if site.rtl %}rtl{% else %}ltr{% endif %}">
{% include_cached skip-links.html %}
{% include_cached masthead.html %}
+1 -3
View File
@@ -14,9 +14,7 @@ layout: archive
{% assign entries_layout = page.entries_layout | default: 'list' %}
<div class="entries-{{ entries_layout }}">
{% for post in posts %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
{% include documents-collection.html entries=posts type=entries_layout %}
</div>
{% include paginator.html %}
+1 -1
View File
@@ -17,7 +17,7 @@ layout: default
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
<h1 id="page-title" class="page__title"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>{{ page.title }}</h1>
{% endunless %}
{{ content }}
+17 -8
View File
@@ -21,8 +21,8 @@ layout: default
<div id="main" role="main">
{% include sidebar.html %}
<article class="page h-entry" itemscope itemtype="https://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
<article class="page" itemscope itemtype="https://schema.org/CreativeWork"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>
{% if page.title %}<meta itemprop="headline" content="{{ page.title | replace: '|', '&#124;' | 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 %}
@@ -30,14 +30,16 @@ 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 p-name" itemprop="headline">
<a href="{{ page.url | absolute_url }}" class="u-url" itemprop="url">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</a>
</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 %}
<section class="page__content e-content" itemprop="text">
<section class="page__content" itemprop="text">
{% if page.toc %}
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
<nav class="toc">
@@ -63,8 +65,15 @@ layout: default
{% include post_pagination.html %}
</div>
{% if jekyll.environment == 'production' and site.comments.provider and page.comments %}
{% include comments.html %}
{% if site.comments.provider and page.comments %}
{% if jekyll.environment == 'production' %}
{% include comments.html %}
{% else %}
<p>
Comments are configured with provider: <strong>{{ site.comments.provider }}</strong>,
but are disabled in non-production environments.
</p>
{% endif %}
{% endif %}
</article>
+1 -1
View File
@@ -9,7 +9,7 @@ layout: default
{% endif %}
<div id="main" role="main">
<article class="splash" itemscope itemtype="https://schema.org/CreativeWork">
<article class="splash" itemscope itemtype="https://schema.org/CreativeWork"{% if page.locale %} lang="{{ page.locale }}"{% endif %}>
{% if page.title %}<meta itemprop="headline" content="{{ page.title | 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 %}
+1 -37
View File
@@ -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' }} &uarr;</a>
</section>
{% endif %}
{% endfor %}
{% endfor %}
{% include posts-taxonomy.html taxonomies=site.tags %}
+51 -83
View File
@@ -7,14 +7,14 @@
margin-bottom: 2em;
@include breakpoint($large) {
float: right;
float: inline-end;
width: calc(100% - #{$right-sidebar-width-narrow});
padding-right: $right-sidebar-width-narrow;
padding-inline-end: $right-sidebar-width-narrow;
}
@include breakpoint($x-large) {
width: calc(100% - #{$right-sidebar-width});
padding-right: $right-sidebar-width;
padding-inline-end: $right-sidebar-width;
}
}
@@ -53,10 +53,7 @@
a[rel="permalink"]::before {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
inset: 0;
}
a + a {
@@ -98,14 +95,14 @@
.archive__item-caption {
position: absolute;
bottom: 0;
right: 0;
inset-inline-end: 0;
margin: 0 auto;
padding: 2px 5px;
color: #fff;
font-family: $caption-font-family;
font-size: $type-size-8;
background: #000;
text-align: right;
text-align: end;
z-index: 5;
opacity: 0.5;
border-radius: $border-radius 0 0 0;
@@ -140,11 +137,11 @@
/* extend grid elements to the right */
@include breakpoint($large) {
margin-right: -1 * $right-sidebar-width-narrow;
margin-inline-end: -1 * $right-sidebar-width-narrow;
}
@include breakpoint($x-large) {
margin-right: -1 * $right-sidebar-width;
margin-inline-end: -1 * $right-sidebar-width;
}
}
}
@@ -153,23 +150,22 @@
margin-bottom: 2em;
@include breakpoint($small) {
float: left;
float: inline-start;
width: span(5 of 10);
&:nth-child(2n + 1) {
clear: both;
margin-left: 0;
margin-inline-start: 0;
}
&:nth-child(2n + 2) {
clear: none;
margin-left: gutter(of 10);
margin-inline-start: gutter(of 10);
}
}
@include breakpoint($medium) {
margin-left: 0; /* override margin*/
margin-right: 0; /* override margin*/
margin-inline: 0; /* override margin*/
width: span(3 of 12);
&:nth-child(2n + 1) {
@@ -182,17 +178,17 @@
&:nth-child(4n + 2) {
clear: none;
margin-left: gutter(1 of 12);
margin-inline-start: gutter(1 of 12);
}
&:nth-child(4n + 3) {
clear: none;
margin-left: gutter(1 of 12);
margin-inline-start: gutter(1 of 12);
}
&:nth-child(4n + 4) {
clear: none;
margin-left: gutter(1 of 12);
margin-inline-start: gutter(1 of 12);
}
}
@@ -254,23 +250,23 @@
font-size: 1.125em;
@include breakpoint($small) {
float: left;
float: inline-start;
margin-bottom: 0;
width: span(4 of 12);
&:nth-child(3n + 1) {
clear: both;
margin-left: 0;
margin-inline-start: 0;
}
&:nth-child(3n + 2) {
clear: none;
margin-left: gutter(of 12);
margin-inline-start: gutter(of 12);
}
&:nth-child(3n + 3) {
clear: none;
margin-left: gutter(of 12);
margin-inline-start: gutter(of 12);
}
.feature__item-teaser {
@@ -280,114 +276,89 @@
}
.archive__item-body {
padding-left: gutter(1 of 12);
padding-right: gutter(1 of 12);
padding-inline: gutter(1 of 12);
}
a.btn::before {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
inset: 0;
}
&--left {
&--left, &--right {
position: relative;
float: left;
margin-left: 0;
margin-right: 0;
margin-inline: 0;
width: 100%;
clear: both;
font-size: 1.125em;
.archive__item {
float: left;
a.btn::before {
content: '';
position: absolute;
inset: 0;
}
.archive__item-teaser {
margin-bottom: 2em;
}
}
a.btn::before {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
&--left {
float: inline-start;
.archive__item {
float: inline-start;
}
@include breakpoint($small) {
.archive__item-teaser {
float: left;
float: inline-start;
width: span(5 of 12);
}
.archive__item-body {
float: right;
padding-left: gutter(0.5 of 12);
padding-right: gutter(1 of 12);
float: inline-end;
width: span(7 of 12);
padding-inline-start: gutter(0.5 of 12);
padding-inline-end: gutter(1 of 12);
}
}
}
&--right {
position: relative;
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.125em;
float: inline-end;
.archive__item {
float: left;
}
.archive__item-teaser {
margin-bottom: 2em;
}
a.btn::before {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
float: inline-end;
}
@include breakpoint($small) {
text-align: right;
text-align: end;
.archive__item-teaser {
float: right;
float: inline-end;
width: span(5 of 12);
}
.archive__item-body {
float: left;
float: inline-start;
width: span(7 of 12);
padding-left: gutter(0.5 of 12);
padding-right: gutter(1 of 12);
padding-inline-start: gutter(1 of 12);
padding-inline-end: gutter(0.5 of 12);
}
}
}
&--center {
position: relative;
float: left;
margin-left: 0;
margin-right: 0;
float: inline-start;
margin-inline: 0;
width: 100%;
clear: both;
font-size: 1.125em;
.archive__item {
float: left;
float: inline-start;
width: 100%;
}
@@ -398,10 +369,7 @@
a.btn::before {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
inset: 0;
}
@include breakpoint($small) {
@@ -442,14 +410,14 @@
Wide Pages
========================================================================== */
.wide {
.wide {
.archive {
@include breakpoint($large) {
padding-right: 0;
padding-inline-end: 0;
}
@include breakpoint($x-large) {
padding-right: 0;
padding-inline-end: 0;
}
}
}
+8 -6
View File
@@ -6,6 +6,8 @@ html {
/* sticky footer fix */
position: relative;
min-height: 100%;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body {
@@ -107,18 +109,18 @@ abbr[data-original-title] {
/* blockquotes */
blockquote {
margin: 2em 1em 2em 0;
padding-left: 1em;
padding-right: 1em;
margin-block: 2em;
margin-inline-end: 1em;
padding-inline: 1em;
font-style: italic;
border-left: 0.25em solid $primary-color;
border-inline-start: 0.25em solid $primary-color;
cite {
font-style: italic;
&:before {
&::before {
content: "\2014";
padding-right: 5px;
padding-inline-end: 5px;
}
}
}
+6 -4
View File
@@ -21,11 +21,11 @@
cursor: pointer;
.icon {
margin-right: 0.5em;
margin-inline-end: 0.5em;
}
.icon + .hidden {
margin-left: -0.5em; /* override for hidden text*/
margin-inline-start: -0.5em; /* override for hidden text*/
}
/* button colors */
@@ -39,7 +39,9 @@
(info, $info-color),
(facebook, $facebook-color),
(twitter, $twitter-color),
(linkedin, $linkedin-color);
(linkedin, $linkedin-color),
(mastodon, $mastodon-color),
(bluesky, $bluesky-color);
@each $buttoncolor, $color in $buttoncolors {
&--#{$buttoncolor} {
@@ -94,4 +96,4 @@
&--small {
font-size: $type-size-7;
}
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
/*!
* Minimal Mistakes Jekyll Theme 4.25.1 by Michael Rose
* Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
* Minimal Mistakes Jekyll Theme 4.27.1 by Michael Rose
* Copyright 2013-2025 Michael Rose - mademistakes.com | @mmistakes
* Free for personal and commercial use under the MIT license
* https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
*/
+6 -8
View File
@@ -4,9 +4,8 @@
.page__footer {
@include clearfix;
float: left;
margin-left: 0;
margin-right: 0;
float: inline-start;
margin-inline: 0;
width: 100%;
margin-top: 3em;
color: $muted-text-color;
@@ -18,8 +17,7 @@
footer {
@include clearfix;
margin-left: auto;
margin-right: auto;
margin-inline: auto;
margin-top: 2em;
max-width: 100%;
padding: 0 1em 2em;
@@ -67,13 +65,13 @@
text-transform: uppercase;
}
li + li:before {
li + li::before {
content: "";
padding-right: 5px;
padding-inline-end: 5px;
}
a {
padding-right: 10px;
padding-inline-end: 10px;
font-weight: bold;
}
+20 -31
View File
@@ -3,7 +3,7 @@
========================================================================== */
form {
margin: 0 0 5px 0;
margin-bottom: 5px;
padding: 1em;
background-color: $form-background-color;
@@ -17,7 +17,7 @@ form {
display: block;
width: 100%;
margin-bottom: 5px * 2;
*margin-left: -7px;
margin-inline-start: -7px;
padding: 0;
color: $text-color;
border: 0;
@@ -45,7 +45,6 @@ button,
select,
textarea {
vertical-align: baseline;
*vertical-align: middle;
}
input,
@@ -102,7 +101,6 @@ input[type="radio"] {
height: auto;
padding: 0;
margin: 3px 0;
*margin-top: 0;
line-height: normal;
cursor: pointer;
border-radius: 0;
@@ -114,8 +112,6 @@ input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0;
*width: 13px;
*height: 13px;
}
input[type="image"] {
@@ -138,12 +134,6 @@ input[type="submit"] {
width: auto;
height: auto;
cursor: pointer;
*overflow: visible;
}
select,
input[type="file"] {
*margin-top: 4px;
}
select {
@@ -173,14 +163,14 @@ input[type="hidden"] {
.radio,
.checkbox {
padding-left: 18px;
padding-inline-start: 18px;
font-weight: normal;
}
.radio input[type="radio"],
.checkbox input[type="checkbox"] {
float: left;
margin-left: -18px;
float: inline-start;
margin-inline-start: -18px;
}
.radio.inline,
@@ -193,7 +183,7 @@ input[type="hidden"] {
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
margin-left: 10px;
margin-inline-start: 10px;
}
/*
@@ -248,7 +238,7 @@ select:focus {
.help-inline {
display: inline-block;
vertical-align: middle;
padding-left: 5px;
padding-inline-start: 5px;
}
/*
@@ -279,16 +269,16 @@ select:focus {
.form-inline .radio,
.form-inline .checkbox,
.form-inline .radio {
padding-left: 0;
padding-inline-start: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
float: left;
margin-left: 0;
margin-right: 3px;
float: inline-start;
margin-inline-start: 0;
margin-inline-end: 3px;
}
/*
@@ -303,8 +293,7 @@ select:focus {
}
.form-search .search-query {
padding-left: 14px;
padding-right: 14px;
padding-inline: 14px;
margin-bottom: 0;
border-radius: 14px;
}
@@ -316,23 +305,23 @@ select:focus {
.form-search .radio,
.form-search .checkbox,
.form-inline .radio {
padding-left: 0;
padding-inline-start: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-search .radio input[type="radio"],
.form-search .checkbox input[type="checkbox"] {
float: left;
margin-left: 0;
margin-right: 3px;
float: inline-start;
margin-inline-start: 0;
margin-inline-end: 3px;
}
/*
.form--loading
========================================================================== */
.form--loading:before {
.form--loading::before {
content: "";
}
@@ -340,10 +329,10 @@ select:focus {
display: block;
}
.form:before {
.form::before {
position: absolute;
top: 0;
left: 0;
inset-inline-start: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.7);
@@ -354,6 +343,6 @@ select:focus {
display: none;
position: absolute;
top: 50%;
left: 50%;
inset-inline-start: 50%;
z-index: 11;
}
+6 -8
View File
@@ -13,8 +13,7 @@
&__inner-wrap {
@include clearfix;
margin-left: auto;
margin-right: auto;
margin-inline: auto;
padding: 1em;
max-width: 100%;
display: -webkit-box;
@@ -59,17 +58,16 @@
}
.masthead__menu {
float: left;
margin-left: 0;
margin-right: 0;
float: inline-start;
margin-inline: 0;
width: 100%;
clear: both;
.site-nav {
margin-left: 0;
margin-inline-start: 0;
@include breakpoint($small) {
float: right;
float: inline-end;
}
}
@@ -87,7 +85,7 @@
white-space: nowrap;
&--lg {
padding-right: 2em;
padding-inline-end: 2em;
font-weight: 700;
}
}
+37 -39
View File
@@ -10,8 +10,7 @@
@include clearfix;
margin: 0 auto;
max-width: 100%;
padding-left: 1em;
padding-right: 1em;
padding-inline: 1em;
font-family: $sans-serif;
-webkit-animation: $intro-transition;
animation: $intro-transition;
@@ -28,7 +27,7 @@
font-size: $type-size-6;
@include breakpoint($large) {
float: right;
float: inline-end;
width: calc(100% - #{$right-sidebar-width-narrow});
}
@@ -52,7 +51,7 @@
.pagination {
@include clearfix();
float: left;
float: inline-start;
margin-top: 1em;
padding-top: 1em;
width: 100%;
@@ -66,8 +65,8 @@
li {
display: block;
float: left;
margin-left: -1px;
float: inline-start;
margin-inline-start: -1px;
a {
display: block;
@@ -101,18 +100,18 @@
}
&:first-child {
margin-left: 0;
margin-inline-start: 0;
a {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
border-start-start-radius: $border-radius;
border-end-start-radius: $border-radius;
}
}
&:last-child {
a {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
border-start-end-radius: $border-radius;
border-end-end-radius: $border-radius;
}
}
}
@@ -121,7 +120,7 @@
&--pager {
display: block;
padding: 1em 2em;
float: left;
float: inline-start;
width: 50%;
font-family: $sans-serif;
font-size: $type-size-5;
@@ -137,14 +136,14 @@
}
&:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-start-end-radius: 0;
border-end-end-radius: 0;
}
&:last-child {
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
margin-inline-start: -1px;
border-start-start-radius: 0;
border-end-start-radius: 0;
}
&.disabled {
@@ -192,12 +191,12 @@
}
&.site-logo {
margin-left: 0;
margin-right: 0.5rem;
margin-inline-start: 0;
margin-inline-end: 0.5rem;
}
&.site-title {
margin-left: 0;
margin-inline-start: 0;
}
}
@@ -240,7 +239,7 @@
&:before {
content: "";
position: absolute;
left: 0;
inset-inline-start: 0;
bottom: 0;
height: 4px;
background: $primary-color;
@@ -262,7 +261,7 @@
.hidden-links {
position: absolute;
top: 100%;
right: 0;
inset-inline-end: 0;
margin-top: 15px;
padding: 5px;
border: 1px solid $border-color;
@@ -287,11 +286,11 @@
}
}
&:before {
&::before {
content: "";
position: absolute;
top: -11px;
right: 10px;
inset-inline-end: 10px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
@@ -300,11 +299,11 @@
z-index: 0;
}
&:after {
&::after {
content: "";
position: absolute;
top: -10px;
right: 10px;
inset-inline-end: 10px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
@@ -361,11 +360,11 @@
transition: 0.2s ease-out;
cursor: pointer;
&:before,
&:after {
&::before,
&::after {
content: "";
position: absolute;
right: 1em;
inset-inline-end: 1em;
top: 1.25em;
width: 0.75em;
height: 0.125em;
@@ -446,9 +445,8 @@
}
.active {
margin-left: -0.5em;
padding-left: 0.5em;
padding-right: 0.5em;
margin-inline-start: -0.5em;
padding-inline: 0.5em;
font-weight: bold;
}
@@ -516,8 +514,8 @@
color: #fff;
font-size: $type-size-6;
background: $primary-color;
border-top-left-radius: $border-radius;
border-top-right-radius: $border-radius;
border-start-start-radius: $border-radius;
border-start-end-radius: $border-radius;
}
// Scrollspy marks toc items as .active when they are in focus
@@ -551,23 +549,23 @@
}
li ul > li a {
padding-left: 1.25rem;
padding-inline-start: 1.25rem;
font-weight: normal;
}
li ul li ul > li a {
padding-left: 1.75rem;
padding-inline-start: 1.75rem;
}
li ul li ul li ul > li a {
padding-left: 2.25rem;
padding-inline-start: 2.25rem;
}
li ul li ul li ul li ul > li a {
padding-left: 2.75rem;
padding-inline-start: 2.75rem;
}
li ul li ul li ul li ul li ul > li a {
padding-left: 3.25rem
padding-inline-start: 3.25rem;
}
}
+1 -1
View File
@@ -54,7 +54,7 @@
}
@at-root #{selector-unify(&, "blockquote")} {
border-left-color: mix(#000, $notice-color, 10%);
border-inline-start-color: mix(#000, $notice-color, 10%);
}
code {
+28 -45
View File
@@ -4,10 +4,8 @@
#main {
@include clearfix;
margin-left: auto;
margin-right: auto;
padding-left: 1em;
padding-right: 1em;
margin-inline: auto;
padding-inline: 1em;
-webkit-animation: $intro-transition;
animation: $intro-transition;
max-width: 100%;
@@ -37,21 +35,20 @@ body {
.page {
@include breakpoint($large) {
float: right;
float: inline-end;
width: calc(100% - #{$right-sidebar-width-narrow});
padding-right: $right-sidebar-width-narrow;
padding-inline-end: $right-sidebar-width-narrow;
}
@include breakpoint($x-large) {
width: calc(100% - #{$right-sidebar-width});
padding-right: $right-sidebar-width;
padding-inline-end: $right-sidebar-width;
}
.page__inner-wrap {
float: left;
float: inline-start;
margin-top: 1em;
margin-left: 0;
margin-right: 0;
margin-inline: 0;
width: 100%;
clear: both;
@@ -59,9 +56,8 @@ body {
.page__meta,
.page__share {
position: relative;
float: left;
margin-left: 0;
margin-right: 0;
float: inline-start;
margin-inline: 0;
width: 100%;
clear: both;
}
@@ -96,7 +92,7 @@ body {
h1, h2, h3, h4, h5, h6 {
.header-link {
position: relative;
left: 0.5em;
inset-inline-start: 0.5em;
opacity: 0;
font-size: 0.8em;
-webkit-transition: opacity 0.2s ease-in-out 0.1s;
@@ -160,7 +156,7 @@ body {
}
dd {
margin-left: 1em;
margin-inline-start: 1em;
font-family: $sans-serif;
font-size: $type-size-6;
}
@@ -172,7 +168,7 @@ body {
/* blockquote citations */
blockquote + .small {
margin-top: -1.5em;
padding-left: 1.25rem;
padding-inline-start: 1.25rem;
}
}
@@ -203,8 +199,7 @@ body {
}
.wrapper {
padding-left: 1em;
padding-right: 1em;
padding-inline: 1em;
@include breakpoint($x-large) {
max-width: $x-large;
@@ -242,14 +237,14 @@ body {
.page__hero-caption {
position: absolute;
bottom: 0;
right: 0;
inset-inline-end: 0;
margin: 0 auto;
padding: 2px 5px;
color: #fff;
font-family: $caption-font-family;
font-size: $type-size-7;
background: #000;
text-align: right;
text-align: end;
z-index: 5;
opacity: 0.5;
border-radius: $border-radius 0 0 0;
@@ -320,8 +315,7 @@ body {
.page__meta-sep::before {
content: "\2022";
padding-left: 0.5em;
padding-right: 0.5em;
padding-inline: 0.5em;
}
/*
@@ -334,13 +328,13 @@ body {
}
strong {
margin-right: 10px;
margin-inline-end: 10px;
}
}
.page__taxonomy-item {
display: inline-block;
margin-right: 5px;
margin-inline-end: 5px;
margin-bottom: 8px;
padding: 5px 10px;
text-decoration: none;
@@ -417,7 +411,7 @@ body {
color: $muted-text-color;
font-size: 0.6em;
text-transform: uppercase;
text-align: right;
text-align: end;
text-decoration: none;
}
@@ -426,9 +420,8 @@ body {
========================================================================== */
.page__comments {
float: left;
margin-left: 0;
margin-right: 0;
float: inline-start;
margin-inline: 0;
width: 100%;
clear: both;
}
@@ -470,7 +463,7 @@ body {
}
.comment__avatar-wrapper {
float: left;
float: inline-start;
width: 60px;
height: 60px;
@@ -494,7 +487,7 @@ body {
}
.comment__content-wrapper {
float: right;
float: inline-end;
width: calc(100% - 60px);
@include breakpoint($large) {
@@ -525,13 +518,13 @@ body {
.page__related {
@include clearfix();
float: left;
float: inline-start;
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid $border-color;
@include breakpoint($large) {
float: right;
float: inline-end;
width: calc(100% - #{$right-sidebar-width-narrow});
}
@@ -556,23 +549,13 @@ body {
========================================================================== */
.wide {
.page {
.page, .page__related {
@include breakpoint($large) {
padding-right: 0;
padding-inline-end: 0;
}
@include breakpoint($x-large) {
padding-right: 0;
}
}
.page__related {
@include breakpoint($large) {
padding-right: 0;
}
@include breakpoint($x-large) {
padding-right: 0;
padding-inline-end: 0;
}
}
}
+5 -8
View File
@@ -8,18 +8,18 @@ html {
/* apply a natural box layout model to all elements */
box-sizing: border-box;
background-color: $background-color;
font-size: 16px;
font-size: $doc-font-size;
@include breakpoint($medium) {
font-size: 18px;
font-size: $doc-font-size-medium;
}
@include breakpoint($large) {
font-size: 20px;
font-size: $doc-font-size-large;
}
@include breakpoint($x-large) {
font-size: 22px;
font-size: $doc-font-size-x-large;
}
-webkit-text-size-adjust: 100%;
@@ -64,8 +64,6 @@ audio,
canvas,
video {
display: inline-block;
*display: inline;
*zoom: 1;
}
/* Prevents modern browsers from displaying 'audio' without controls */
@@ -142,7 +140,6 @@ textarea {
button,
input {
*overflow: visible; /* inner spacing ie IE6/7*/
line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/
}
@@ -184,4 +181,4 @@ input[type="search"]::-webkit-search-cancel-button {
textarea {
overflow: auto; /* remove vertical scrollbar in IE6-9*/
vertical-align: top; /* readability and alignment cross-browser*/
}
}
+3 -6
View File
@@ -9,8 +9,7 @@
}
.search__toggle {
margin-left: 1rem;
margin-right: 1rem;
margin-inline: 1rem;
height: $nav-toggle-height;
border: 0;
outline: none;
@@ -38,10 +37,8 @@
&__inner-wrap {
width: 100%;
margin-left: auto;
margin-right: auto;
padding-left: 1em;
padding-right: 1em;
margin-inline: auto;
padding-inline: 1em;
-webkit-animation: $intro-transition;
animation: $intro-transition;
-webkit-animation-delay: 0.15s;
+23 -27
View File
@@ -17,7 +17,7 @@
// }
@include breakpoint($large) {
float: left;
float: inline-start;
width: calc(#{$right-sidebar-width-narrow} - 1em);
opacity: 0.75;
-webkit-transition: opacity 0.2s ease-in-out;
@@ -77,10 +77,10 @@
@include breakpoint($large) {
position: absolute;
top: 0;
right: 0;
inset-inline-end: 0;
width: $right-sidebar-width-narrow;
margin-right: -1 * $right-sidebar-width-narrow;
padding-left: 1em;
margin-inline-end: -1 * $right-sidebar-width-narrow;
padding-inline-start: 1em;
z-index: 10;
&.sticky {
@@ -88,7 +88,7 @@
position: -webkit-sticky;
position: sticky;
top: 2em;
float: right;
float: inline-end;
.toc {
.toc__menu {
@@ -101,19 +101,19 @@
@include breakpoint($x-large) {
width: $right-sidebar-width;
margin-right: -1 * $right-sidebar-width;
margin-inline-end: -1 * $right-sidebar-width;
}
}
.splash .sidebar__right {
@include breakpoint($large) {
position: relative;
float: right;
margin-right: 0;
float: inline-end;
margin-inline-end: 0;
}
@include breakpoint($x-large) {
margin-right: 0;
margin-inline-end: 0;
}
}
@@ -147,15 +147,13 @@
.author__content {
display: table-cell;
vertical-align: top;
padding-left: 15px;
padding-right: 25px;
padding-inline: 15px 25px;
line-height: 1;
@include breakpoint($large) {
display: block;
width: 100%;
padding-left: 0;
padding-right: 0;
padding-inline: 0;
}
a {
@@ -202,7 +200,7 @@
.author__urls {
span.label {
padding-left: 5px;
padding-inline-start: 5px;
}
}
@@ -219,7 +217,7 @@
content: '';
position: fixed;
top: 0;
left: 0;
inset-inline-start: 0;
width: 100%;
height: 100%;
pointer-events: none;
@@ -241,7 +239,7 @@
.author__urls {
display: none;
position: absolute;
right: 0;
inset-inline-end: 0;
margin-top: 15px;
padding: 10px;
list-style-type: none;
@@ -265,12 +263,12 @@
box-shadow: none;
}
&:before {
&::before {
display: block;
content: "";
position: absolute;
top: -11px;
left: calc(50% - 10px);
inset-inline-start: calc(50% - 10px);
width: 0;
border-style: solid;
border-width: 0 10px 10px;
@@ -287,7 +285,7 @@
content: "";
position: absolute;
top: -10px;
left: calc(50% - 10px);
inset-inline-start: calc(50% - 10px);
width: 0;
border-style: solid;
border-width: 0 10px 10px;
@@ -311,9 +309,8 @@
a {
display: block;
margin-bottom: 5px;
padding-right: 5px;
padding-top: 2px;
padding-bottom: 2px;
padding-block: 2px;
padding-inline-end: 5px;
color: inherit;
font-size: $type-size-5;
text-decoration: none;
@@ -334,10 +331,10 @@
@include breakpoint($large) {
position: initial;
top: initial;
right: initial;
inset-inline-end: initial;
width: initial;
margin-right: initial;
padding-left: initial;
margin-inline-end: initial;
padding-inline-start: initial;
z-index: initial;
&.sticky {
@@ -347,7 +344,6 @@
@include breakpoint($x-large) {
width: initial;
margin-right: initial;
margin-inline-end: initial;
}
}
+10 -5
View File
@@ -13,6 +13,11 @@ figure.highlight {
line-height: 1.8;
border-radius: $border-radius;
[dir=rtl] & {
direction: ltr;
text-align: start;
}
> pre,
pre.highlight {
margin: 0;
@@ -33,17 +38,17 @@ figure.highlight {
/* line numbers*/
&.gutter,
&.rouge-gutter {
padding-right: 1em;
padding-inline-end: 1em;
width: 1em;
color: $base04;
border-right: 1px solid $base04;
text-align: right;
border-inline-end: 1px solid $base04;
text-align: end;
}
/* code */
&.code,
&.rouge-code {
padding-left: 1em;
padding-inline-start: 1em;
}
}
@@ -321,4 +326,4 @@ figure.highlight {
th, td {
border-bottom: 0;
}
}
}
+2 -2
View File
@@ -24,7 +24,7 @@ thead {
th {
padding: 0.5em;
font-weight: bold;
text-align: left;
text-align: start;
}
td {
@@ -36,4 +36,4 @@ tr,
td,
th {
vertical-align: middle;
}
}
+122 -147
View File
@@ -83,20 +83,11 @@ body:hover .visually-hidden button {
Type
========================================================================== */
.text-left {
text-align: left;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.text-justify {
text-align: justify;
$text-alignments: left, right, start, end, center, justify;
@each $alignment in $text-alignments {
.text-#{$alignment} {
text-align: $alignment;
}
}
.text-nowrap {
@@ -108,20 +99,20 @@ body:hover .visually-hidden button {
========================================================================== */
.task-list {
padding:0;
padding: 0;
li {
list-style-type: none;
}
.task-list-item-checkbox {
margin-right: 0.5em;
margin-inline-end: 0.5em;
opacity: 1;
}
}
.task-list .task-list {
margin-left: 1em;
margin-inline-start: 1em;
}
/*
@@ -135,8 +126,7 @@ body:hover .visually-hidden button {
}
.wrapper {
margin-left: auto;
margin-right: auto;
margin-inline: auto;
width: 100%;
}
@@ -148,8 +138,7 @@ body:hover .visually-hidden button {
.align-left {
display: block;
margin-left: auto;
margin-right: auto;
margin-inline: auto;
@include breakpoint($small) {
float: left;
@@ -161,8 +150,7 @@ body:hover .visually-hidden button {
.align-right {
display: block;
margin-left: auto;
margin-right: auto;
margin-inline: auto;
@include breakpoint($small) {
float: right;
@@ -174,15 +162,14 @@ body:hover .visually-hidden button {
.align-center {
display: block;
margin-left: auto;
margin-right: auto;
margin-inline: auto;
}
/* file page content container */
.full {
@include breakpoint($large) {
margin-right: -1 * span(2.5 of 12) !important;
margin-inline-end: -1 * span(2.5 of 12) !important;
}
}
@@ -211,118 +198,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, .fa-x-twitter",
$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;
}
}
}
@@ -339,11 +243,11 @@ body:hover .visually-hidden button {
-webkit-transition: 0.3s;
transition: 0.3s;
&:before,
&:after {
&::before,
&::after {
content: "";
position: absolute;
left: 0;
inset-inline-start: 0;
width: $navicon-width;
height: $navicon-height;
background: $primary-color;
@@ -391,7 +295,7 @@ body:hover .visually-hidden button {
content: '';
position: fixed;
top: 0;
left: 0;
inset-inline-start: 0;
width: 100%;
height: 100%;
opacity: 0;
@@ -465,11 +369,11 @@ body:hover .visually-hidden button {
overflow: hidden;
position: relative;
&:before {
&::before {
position: absolute;
content: "";
top: 0;
left: 0;
inset-inline-start: 0;
width: 100%;
height: 100%;
z-index: 999;
@@ -486,8 +390,8 @@ body:hover .visually-hidden button {
position: fixed;
width: 300px;
top: 50%;
left: 50%;
margin-left: -150px;
inset-inline-start: 50%;
margin-inline-start: -150px;
margin-top: -150px;
min-height: 0;
z-index: 9999;
@@ -578,7 +482,7 @@ a.reversefootnote {
embed {
position: absolute;
top: 0;
left: 0;
inset-inline-start: 0;
width: 100%;
height: 100%;
}
@@ -591,3 +495,74 @@ 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;
inset-inline-end: 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;
inset: 0;
z-index: 2;
}
i {
position: absolute;
top: 0.25em;
inset-inline-end: 0.25em;
&.copied {
opacity: 0;
}
}
&.copied i {
opacity: 0;
&.copied {
opacity: 1;
}
}
@at-root {
.no-copy & {
display: none;
}
}
}
&:hover .clipboard-copy-button {
opacity: 1;
}
}
+46 -9
View File
@@ -6,29 +6,65 @@
Typography
========================================================================== */
$doc-font-size: 16 !default;
$doc-font-size: 16px !default;
$doc-font-size-medium: $doc-font-size * 1.125 !default;
$doc-font-size-large: $doc-font-size * 1.25 !default;
$doc-font-size-x-large: $doc-font-size * 1.375 !default;
/* paragraph indention */
$paragraph-indent: false !default; // true, false (default)
$indent-var: 1.3em !default;
/* system typefaces */
$serif: Georgia, Times, serif !default;
$sans-serif: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI",
"Helvetica Neue", "Lucida Grande", Arial, sans-serif !default;
$monospace: Monaco, Consolas, "Lucida Console", monospace !default;
/* Modern font stack */
/* https://github.com/system-fonts/modern-font-stacks */
/* sans serif typefaces */
$sans-serif-narrow: $sans-serif !default;
/* Sans serif - modern font stack */
$system-ui: system-ui, sans-serif;
$humanist: Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
$geometric-humanist: Avenir, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif;
$classical-humanist: Optima, Candara, 'Noto Sans', source-sans-pro, sans-serif;
$neo-grotesque: Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Nimbus Sans', Arial, sans-serif;
$industrial: Bahnschrift, 'DIN Alternate', 'Franklin Gothic Medium', 'Nimbus Sans Narrow', sans-serif-condensed, sans-serif;
$rounded-sans: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif;
/* sans serif typefaces - defined in Minimal Mistakes */
$helvetica: Helvetica, "Helvetica Neue", Arial, sans-serif !default;
/* serif typefaces */
/* Serif - modern font stack */
$transitional: Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif;
$old-style: 'Iowan Old Style', 'Palatino Linotype', 'URW Palladio L', P052, serif;;
$monospace-slab-serif: 'Nimbus Mono PS', 'Courier New', monospace;
$slab-serif: Rockwell, 'Rockwell Nova', 'Roboto Slab', 'DejaVu Serif', 'Sitka Small', serif;
$antique: Superclarendon, 'Bookman Old Style', 'URW Bookman', 'URW Bookman L', 'Georgia Pro', Georgia, serif;
$didone: Didot, 'Bodoni MT', 'Noto Serif Display', 'URW Palladio L', P052, Sylfaen, serif;
/* serif typefaces - defined in Minimal Mistakes */
$georgia: Georgia, serif !default;
$times: Times, serif !default;
$bodoni: "Bodoni MT", serif !default;
$calisto: "Calisto MT", serif !default;
$garamond: Garamond, serif !default;
/* Monospace - modern font stack */
$monospace-code: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
/* Handwritten - modern font stack */
$handwritten: 'Segoe Print', 'Bradley Hand', Chilanka, TSCu_Comic, casual, cursive;
/* Defaults used in Minimal mistakes */
$default-sans-serif: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif;
$default-serif: Georgia, Times, serif;
$default-monospace: Monaco, Consolas, "Lucida Console", monospace;
/* Emoji native from modern font stack - add to the end of the font-face for native emojis */
$emoji-native: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
/* system typefaces */
$serif: $default-serif !default;
$sans-serif: $default-sans-serif !default;
$sans-serif-narrow: $sans-serif !default;
$monospace: $default-monospace !default;
$global-font-family: $sans-serif !default;
$header-font-family: $sans-serif !default;
$caption-font-family: $serif !default;
@@ -87,6 +123,7 @@ $yiq-debug: false !default;
/* brands */
$behance-color: #1769ff !default;
$bitbucket-color: #205081 !default;
$bluesky-color: #1083fe !default;
$dribbble-color: #ea4c89 !default;
$facebook-color: #3b5998 !default;
$flickr-color: #ff0084 !default;
+1 -1
View File
@@ -5,7 +5,7 @@
/* Colors */
$text-color: #000 !default;
$muted-text-color: $text-color !default;
$primary-color: #ff0000 !default;
$primary-color: #b60000 !default;
$border-color: mix(#fff, $text-color, 75%) !default;
$footer-background-color: #000 !default;
$link-color: #0000ff !default;
+1 -1
View File
@@ -6,4 +6,4 @@ search: false
@charset "utf-8";
@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin
@import "minimal-mistakes"; // main partials
@import "minimal-mistakes"; // main partials
+143 -45
View File
@@ -2,39 +2,18 @@
jQuery plugin settings and other scripts
========================================================================== */
$(function() {
$(document).ready(function () {
// FitVids init
$("#main").fitVids();
// Sticky sidebar
var stickySideBar = function() {
var show =
$(".author__urls-wrapper").find("button").length === 0
? $(window).width() > 1024 // width should match $large Sass variable
: !$(".author__urls-wrapper").find("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").find("button").on("click", function() {
$(".author__urls-wrapper button").on("click", function () {
$(".author__urls").toggleClass("is--visible");
$(".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,12 +23,12 @@ $(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() {
$(".search-content").find("input").focus();
setTimeout(function () {
$(".search-content input").focus();
}, 400);
});
@@ -58,11 +37,11 @@ $(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,10 +56,32 @@ $(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'],a[href$='.webp']"
@@ -99,38 +100,135 @@ $(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);
(function () {
var pageContentElement = document.querySelector(".page__content");
if (!pageContentElement) return;
pageContentElement
.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);
});
}
});
+3 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+6 -1
View File
@@ -103,10 +103,15 @@ $(function() {
clearTimeout(timer);
});
$hlinks.on('mouseleave', function() {
$hlinks.on("click", function () {
// Hide the hidden links & remove the overlay when one is clicked.
$hlinks.addClass("hidden");
$btn.removeClass("close");
}).on('mouseleave', 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
-8
View File
@@ -1,8 +0,0 @@
const fs = require("fs");
const filename = "assets/js/main.min.js"
const script = fs.readFileSync(filename);
const banner = fs.readFileSync("_includes/copyright.js");
if (script.slice(0, 3) != "/*!") {
fs.writeFileSync(filename, banner + script);
}
+2
View File
@@ -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?
+5
View File
@@ -0,0 +1,5 @@
task :default => %i[build]
task :build do
sh 'jekyll build --profile --trace --config _config.yml,_config.dev.yml'
end
+3 -1
View File
@@ -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
+2 -1
View File
@@ -6,7 +6,6 @@
# `jekyll serve`. If you change this file, please restart the server process.
remote_theme : "mmistakes/minimal-mistakes@master"
theme_version : "4.25.1" # for use with in-page templates
minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
@@ -25,6 +24,7 @@ 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", "giscus", "custom"
disqus:
@@ -232,6 +232,7 @@ defaults:
author_profile: false
share: false
comments: false
toc_sticky: true
sidebar:
nav: "docs"
# _recipes
+3
View File
@@ -0,0 +1,3 @@
# for use with in-page templates
---
version: 4.27.1
+1 -1
View File
@@ -78,7 +78,7 @@ To install as a remote theme:
bundle
```
4. Add `remote_theme: "mmistakes/minimal-mistakes@{{ site.theme_version }}"` 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 -5
View File
@@ -20,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 => "{{ site.theme_version }}"
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@{{ site.theme_version }}"` 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:
+160 -100
View File
@@ -4,6 +4,26 @@ permalink: /docs/configuration/
excerpt: "Settings for configuring and customizing the theme."
last_modified_at: 2021-05-11T10:40:42-04:00
toc: true
skins:
- name: air
description: Calm and blue.
- name: aqua
description: Just like water.
- name: contrast
description: Retro feel with bold blue links and inverted footer.
- name: dark
description: Inverted palette, white text on a dark background.
- name: dirt
description: Earthy tones.
- name: mint
description: Minty fresh green.
- name: neon
description: Inverted palette, white text on a dark background.
- name: plum
description: Purple reigns supreme.
- name: sunrise
description: Oranges and red.
---
Settings that affect your entire site can be changed in [Jekyll's configuration file](https://jekyllrb.com/docs/configuration/): `_config.yml`, found in the root of your project. If you don't have this file you'll need to copy or create one using the theme's [default `_config.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_config.yml) as a base.
@@ -31,90 +51,35 @@ Easily change the color scheme of the theme using one of the provided "skins":
minimal_mistakes_skin: "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
```
**Note:** If you have made edits to the theme's CSS files be sure to update [`/assets/css/main.scss`](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/css/main.scss) to include `@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin` before the `minimal-mistakes` import.
**Note:** If you have made edits to the theme's CSS files be sure to update [`/assets/css/main.scss`](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/css/main.scss) to include {% raw %}`@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin`{% endraw %} before the `minimal-mistakes` import.
{: .notice--warning}
#### Air skin: `air`
{% for skin in page.skins %}
#### {{ skin.name | capitalize }} skin: `{{ skin.name }}`
{:.no_toc}
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/air-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/air-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/air-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/air-skin-post.png"></a>
<figcaption>Calm and blue.</figcaption>
</figure>
#### Aqua skin: `aqua`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/aqua-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/aqua-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/aqua-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/aqua-skin-post.png"></a>
<figcaption>Just like water.</figcaption>
</figure>
#### Contrast skin: `contrast`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/contrast-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/contrast-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/contrast-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/contrast-skin-post.png"></a>
<figcaption>Retro feel with bold blue links and inverted footer.</figcaption>
</figure>
#### Dark skin: `dark`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/dark-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/dark-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/dark-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/dark-skin-post.png"></a>
<figcaption>Inverted palette, white text on a dark background.</figcaption>
</figure>
#### Dirt skin: `dirt`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/dirt-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/dirt-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/dirt-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/dirt-skin-post.png"></a>
<figcaption>Earthy tones.</figcaption>
</figure>
#### Mint skin: `mint`
{:.no_toc}
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/mint-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/mint-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/mint-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/mint-skin-post.png"></a>
<figcaption>Minty fresh green.</figcaption>
</figure>
#### Neon skin: `neon`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/neon-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/neon-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/neon-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/neon-skin-post.png"></a>
<figcaption>Inverted palette, white text on a dark background.</figcaption>
</figure>
#### Neon skin: `plum`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/plum-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/plum-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/plum-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/plum-skin-post.png"></a>
<figcaption>Purple reigns supreme.</figcaption>
</figure>
#### Sunrise skin: `sunrise`
<figure class="half">
<a href="{{ site.baseurl }}/assets/images/sunrise-skin-archive-large.png"><img src="{{ site.baseurl }}/assets/images/sunrise-skin-archive.png"></a>
<a href="{{ site.baseurl }}/assets/images/sunrise-skin-post-large.png"><img src="{{ site.baseurl }}/assets/images/sunrise-skin-post.png"></a>
<figcaption>Oranges and red.</figcaption>
<a href="{{ skin.name | prepend: "/assets/images/" | append: "-skin-archive-large.png" | relative_url }}">
<img
src="{{ skin.name | prepend: "/assets/images/" | append: "-skin-archive.png" | relative_url }}"
alt="Archive page of {{ skin.name | capitalize }} skin"
/>
</a>
<a href="{{ skin.name | prepend: "/assets/images/" | append: "-skin-post-large.png" | relative_url }}">
<img
src="{{ skin.name | prepend: "/assets/images/" | append: "-skin-post.png" | relative_url }}"
alt="Posts page of {{ skin.name | capitalize }} skin"
/>
</a>
<figcaption>{{ skin.description }}</figcaption>
</figure>
{% endfor %}
### Site locale
`site.locale` is used to declare the primary language for each web page within the site.
_Example:_ `locale: "en-US"` sets the `lang` attribute for the site to the _United States_ flavor of English, while `en-GB` would be for the `United Kingdom` style of English. Country codes are optional and the shorter variation `locale: "en"` is also acceptable. To find your language and country codes check this [reference table](<https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx>).
_Example:_ `locale: "en-US"` sets the `lang` attribute for the site to the _United States_ flavor of English, while `en-GB` would be for the _United Kingdom_ style of English. Country codes are optional and the shorter variation `locale: "en"` is also acceptable. To find your language and country codes check this [reference table](<https://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx>).
Properly setting the locale is important for associating localized text found in the [**UI Text**]({{ "/docs/ui-text/" | relative_url }}) data file. An improper match will cause parts of the UI to disappear (eg. button labels, section headings, etc).
@@ -131,7 +96,7 @@ You also have the option of customizing the separation character used in SEO-fri
_Example:_ `title_separator: "|"` would produce page titles like `Sample Page | My Awesome Site`.
**Note:** Long site titles have been known to break the masthead layout. Avoid adding a long "tagline" to the title prevent this from happening eg. `My Awesome Site is the Best Because I Say So`.
**Note:** Long site titles have been known to break the masthead layout. Avoid adding a long "tagline" to the title to prevent this from happening, e.g. `My Awesome Site is the Best Because I Say So`.
{: .notice--warning}
### Site subtitle
@@ -157,7 +122,7 @@ _Example:_ `description: "A flexible Jekyll theme for your blog or site with a m
### Site URL
The base hostname and protocol for your site. If you're hosting with GitHub Pages this will be something like `url: "https://mmistakes.github.io"` or `url: "https://mademistakes.com"` if you have a custom domain name.
The base hostname and protocol for your site. If you're hosting on GitHub Pages this will be something like `url: "https://mmistakes.github.io"` or `url: "https://mademistakes.com"` if you have a custom domain name.
GitHub Pages now [forces `https://` for new sites](https://help.github.com/articles/securing-your-github-pages-site-with-https/) so be mindful of that when setting your URL to avoid mixed-content warnings.
@@ -183,9 +148,9 @@ Add your repository name with organization to your site's configuration file, `_
repository: "username/repo-name"
```
"NWO" stands for "name with owner." It is GitHub lingo for the username of the owner of the repository plus a forward slash plus the name of the repository, e.g. `mmistakes/minimal-mistakes`, where **mmistakes** is the owner and **minimal-mistakes** is the repository name.
"NWO" stands for "**n**ame **w**ith **o**wner." It is GitHub lingo for the username of the owner of the repository plus a forward slash plus the name of the repository, e.g. `mmistakes/minimal-mistakes`, where **mmistakes** is the owner and **minimal-mistakes** is the repository name.
Your `site.github.*` fields should fill in like normal. If you run Jekyll with the --verbose flag, you should be able to see all the API calls made.
Your `site.github.*` fields should be filled in like normal. If you run Jekyll with the `--verbose` flag, you should be able to see all the API calls made.
If you don't set `repository` correctly you may see the following error when trying to `serve` or `build` your Jekyll site:
@@ -250,6 +215,12 @@ By default your site title is used in the masthead. You can override this text b
masthead_title: "My Custom Title"
```
### Site RTL direction
`site.rtl` is used to turn the direction of the page into right to left. This option can be used for RTL languages (like Arabic, Persian, etc)
_Example:_ `rtl: true` sets the direction of the page to right to left. By default this option is `rtl: false`.
### Breadcrumb navigation (beta)
Enable breadcrumb links to help visitors better navigate deep sites. Because of the fragile method of implementing them they don't always produce accurate links reliably. For best results:
@@ -311,7 +282,7 @@ defaults:
To disable reading time for a post, add `read_time: false` to its YAML Front Matter to override what was set in `_config.yml`.
`words_per_minute` can also be adjusted per-page basis by adding to its YAML Front Matter. This is useful for sites with multi-lingual content where you'd like specify a different value from the site config.
`words_per_minute` can also be adjusted on a per-page basis by adding to its YAML Front Matter. This is useful for sites with multi-lingual content where you'd like specify a different value from the site config.
```yaml
words_per_minute: 250
@@ -331,6 +302,32 @@ For example,
}
```
### Code block copy button
*New in v4.26.0*
To enable a copy button on code blocks, add the following to `_config.yml`:
```yaml
enable_copy_code_button: true
```
When enabled site-wide, the button can be disabled on individual code blocks by adding `no-copy` to the code block's class list.
````markdown
```
Hey, I have a "copy to clipboard" button!
```
````
````markdown
```
But I don't have one.
```
{: .no-copy}
````
{: .no-copy}
### Comments
[**Disqus**](https://disqus.com/), [**Discourse**](https://www.discourse.org/), [**Facebook**](https://developers.facebook.com/docs/plugins/comments), [**utterances**](https://utteranc.es/), [**giscus**](https://giscus.app/) and static-based commenting via [**Staticman**](https://staticman.net/) are built into the theme. First set the comment provider you'd like to use:
@@ -362,7 +359,7 @@ defaults:
If you add `comments: false` to a post's YAML Front Matter it will override the default and disable comments for just that post.
**Note:** Comments are disabled by default in `development`. To enable when testing/building locally be sure to set
**Note:** Comments are disabled in `development`. To enable when testing/building locally be sure to set
`JEKYLL_ENV=production` to [force the environment](http://jekyllrb.com/docs/configuration/#specifying-a-jekyll-environment-at-build-time) to production.
{: .notice--info}
@@ -795,7 +792,7 @@ twitter:
And if I assign `@mmistakes` as an author account it will appear in the Twitter Card along with `@mmistakes-theme`, attributed as a creator of the page being shared.
**Note**: You need to validate cards are working and have Twitter [approve Player Cards](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/player-card) before they will begin showing up.
**Note**: You need to validate cards are working and have Twitter [approve Player Cards](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/player-card) before they begin showing up.
{: .notice--warning}
##### Facebook Open Graph
@@ -826,22 +823,25 @@ For pages that don't have a `header.image` assigned in their YAML Front Matter,
og_image: /assets/images/site-logo.png
```
<figure>
<img src="{{ '/assets/images/mm-twitter-card-summary-image.jpg' | relative_url }}" alt="Twitter Card summary example">
<figcaption>Example of a image placed in a Summary Card.</figcaption>
</figure>
{% include figure
image_path="/assets/images/mm-twitter-card-summary-image.jpg"
alt="Twitter Card summary example"
caption="Example of an image placed in a Summary Card."
%}
Documents who have a `header.image` assigned in their YAML Front Matter will appear like this when shared on Twitter and Facebook.
<figure>
<img src="{{ '/assets/images/mm-twitter-card-summary-large.jpg' | relative_url }}" alt="page shared on Twitter">
<figcaption>Shared page on Twitter with header image assigned.</figcaption>
</figure>
{% include figure
image_path="/assets/images/mm-twitter-card-summary-large.jpg"
alt="page shared on Twitter"
caption="Shared page on Twitter with header image assigned."
%}
<figure>
<img src="{{ '/assets/images/facebook-share-example.jpg' | relative_url }}" alt="page shared on Facebook">
<figcaption>Shared page on Facebook with header image assigned.</figcaption>
</figure>
{% include figure
image_path="/assets/images/facebook-share-example.jpg"
alt="page shared on Facebook"
caption="Shared page on Facebook with header image assigned."
%}
##### Include your social profile in search results
@@ -881,7 +881,7 @@ analytics:
To use another provider not included with the theme set `provider: "custom"` then add their embed code to `_includes/analytics-providers/custom.html`.
**Note:** Analytics are disabled by default in `development`. To enable when testing/building locally be sure to set
**Note:** Analytics are disabled in `development`. To enable when testing/building locally be sure to set
`JEKYLL_ENV=production` to [force the environment](http://jekyllrb.com/docs/configuration/#specifying-a-jekyll-environment-at-build-time) to production.
{: .notice--info}
@@ -968,7 +968,7 @@ Nothing out of the ordinary here. `include` and `exclude` may be the only things
## Conversion and Markdown processing
Again nothing out of the ordinary here as the theme adheres to the defaults used by GitHub Pages. [**Kramdown**](http://kramdown.gettalong.org/) for Markdown conversion, [**Rouge**](http://rouge.jneen.net/) syntax highlighting, and incremental building disabled. Change them if you need to.
Again nothing out of the ordinary here as the theme adheres to the defaults used by GitHub Pages. [**Kramdown**](http://kramdown.gettalong.org/) for Markdown conversion, [**Rouge**](https://rouge.jneen.net/) syntax highlighting, and incremental building disabled. Change them if you need to.
## Front Matter Defaults
@@ -1040,15 +1040,75 @@ The paginator only works on files with name `index.html`. To use pagination in a
paginate_path: /recent/page:num/
```
**Please note:** When using Jekyll's default [pagination plugin](https://jekyllrb.com/docs/pagination/) `paginator.posts` can only be called once. If you're looking for something more powerful that can paginate category, tag, and collection pages, [**jekyll-paginate-v2**](https://github.com/sverrirs/jekyll-paginate-v2) is the way to go.
**Please note:** When using Jekyll's default [pagination plugin](https://jekyllrb.com/docs/pagination/) `paginator.posts` can only be called once. If you're looking for something more powerful that can paginate category, tag, and collection pages I suggest **[jekyll-paginate-v2][jekyll-paginate-v2]**.
{: .notice--info}
#### Using Jekyll Paginate V2
[jekyll-paginate-v2]: https://github.com/sverrirs/jekyll-paginate-v2
Jekyll Paginate V2 is not available on GitHub Pages. You must build your site locally or with a CI service like [GitHub Actions][gh-pages-actions].
{: .notice--info}
### Paginate V2
[gh-pages-actions]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow
*New in v4.26.0*
If you're using [Jekyll Paginate V2][jekyll-paginate-v2], you can enjoy its powerful features by removing `paginate` and `paginate_path` and adding the following configuration to your `_config.yml`:
```yaml
pagination:
enabled: true
collection: 'posts'
per_page: 5
permalink: '/page/:num/' # Pages are index.html inside this folder (default)
title: ':title - page :num'
limit: 0
sort_field: 'date'
sort_reverse: true
trail:
before: 2
after: 2
```
Then, create `/posts/index.html` with the following content:
```html
---
title: "Posts"
layout: home
permalink: /posts/
pagination:
enabled: true
---
```
Your posts will be paginated at `/posts/`, `/posts/page/2/` and `/posts/page/3/` etc.
Similarly, if you want to paginate a collection or a tag, you can create another `index.html` at an appropriate location, and add configuration to the `pagination` key in the front matter, like this:
```html
---
title: "Lovely pets"
layout: home
permalink: /pets/
pagination:
enabled: true
collection:
- cat
- dog
---
```
<div class="notice--danger" markdown="1">
**Note:** There are two more configuration options from Jekyll Paginate V2 that this theme doesn't support yet. You should either leave them out or use their default values as shown below. Changing them may lead to unexpected results and you're on your own.
```yaml
pagination:
# Optional, the default file extension for generated pages (e.g html, json, xml).
# Internally this is set to html by default
extension: html
# Optional, the default name of the index file for generated pages (e.g. 'index.html')
# Without file extension
indexpage: 'index'
```
</div>
### Timezone
@@ -1172,7 +1232,7 @@ If you care at all about performance (and really who doesn't) compressing the HT
If you're hosting with GitHub Pages there aren't many options afforded to you for optimizing the HTML Jekyll generates. Thankfully there is some Liquid wizardry you can use to strip whitespace and comments to reduce file size.
There's a variety of configurations and caveats to using the `compress` layout, so be sure to read through the [documentation](http://jch.penibelst.de/) if you decide to make change the defaults set in the theme's `_config.yml`.
There's a variety of configurations and caveats to using the `compress` layout, so be sure to read through the [documentation](http://jch.penibelst.de/) if you decide to change the defaults set in the theme's `_config.yml`.
```yaml
compress_html:
+1
View File
@@ -30,6 +30,7 @@ main:
url: /collection-archive/
- title: "External Link"
url: https://google.com
target: _blank
```
Which will give you a responsive masthead similar to this:
+2
View File
@@ -11,8 +11,10 @@ The English[^yaml-anchors] main keys in [`_data/ui-text.yml`](https://github.com
- Arabic (عربي)
- Brazilian Portuguese (Português brasileiro)
- Bulgarian
- Catalan
- Chinese
- Czech
- Danish
- Dutch
- Finnish
+15 -8
View File
@@ -365,7 +365,7 @@ Then adjust the `paginate_path` in **_config.yml** to match.
paginate_path: /blog/page:num
```
**Note:** Jekyll can only paginate a single `index.html` file. If you'd like to paginate more pages (e.g. category indexes) you'll need the help of a custom plugin. For more pagination related settings check the [**Configuration**]({{ "/docs/configuration/#paginate" | relative_url }}) section.
**Note:** The default Jekyll Paginate plugin can only paginate a single `index.html` file. If you'd like to paginate more pages (e.g. category indexes) you'll need the help of a custom plugin. For more pagination-related settings check the [**Configuration**]({{ "/docs/configuration/#paginate" | relative_url }}) section, including settings for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2).
{: .notice--info}
**Note:** By default, documents are shown in a list view. To change to a grid view add `entries_layout: grid` to the page's front matter. To increase the width of the main container, giving more space to the grid items also add `classes: wide` to the home page's YAML Front Matter.
@@ -463,8 +463,6 @@ To overlay text on top of a header image you have a few more options:
| **excerpt** | Auto-generated page excerpt is added to the overlay text or can be overridden. | |
| **tagline** | Overrides page excerpt. Useful when header text needs to be different from excerpt in archive views. | |
| **actions** | Call to action button links (`actions` array: `label` and `url`). More than one button link can be assigned. | |
| **cta_label** | Deprecated, use `actions` instead. Call to action button text label. | `more_label` in UI Text data file |
| **cta_url** | Deprecated, use `actions` instead. Call to action button URL. | |
[mdn-linear-gradient]: https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient()
@@ -749,6 +747,15 @@ defaults:
nav: "docs"
```
*New in v4.26.0*: If you have multiple sidebar navs defined and want to include more than one on a page, the sidebar nav can also be a list.
```yaml
sidebar:
nav:
- main
- docs
```
---
## Social sharing links
@@ -778,23 +785,23 @@ The important parts to change are:
To change the color of the button use one of the built in [utility classes]({{ "/docs/utility-classes/#buttons" | relative_url }}). Or you can create a new button class to match whatever color you want.
Under the `$social` color map in `assets/_scss/_buttons.scss` simply add a name (this will be appened to `btn--`) that matches the new button class. In our case `reddit` ~> `.btn--reddit`.
Under the `$buttoncolors:` color map in `_sass/minimal-mistakes/_buttons.scss` simply add a name (this will be appended to `btn--`) that matches the new button class. In our case `reddit` ~> `.btn--reddit`.
```scss
$social:
$buttoncolors:
(facebook, $facebook-color),
(twitter, $twitter-color),
(linkedin, $linkedin-color),
(reddit, #ff4500);
(reddit, $reddit-color);
```
**ProTip:** For bonus points you can add it as a Sass `$variable` that you set in `_variables.scss` like the other ["brand" colors](http://brandcolors.net/).
**ProTip:** For bonus points you can modify the Sass variable `$reddit-color` that is set in `_variables.scss` [or use a different "brand" color](http://brandcolors.net/).
{: .notice--info}
Add the new `.btn--reddit` class to the `<a>` element from earlier, [compile `main.css`]({{ "/docs/stylesheets/" | relative_url }}) and away you go.
```html
{% raw %}<a href="https://www.reddit.com/submit?url={{ page.url | relative_url }}&title={{ page.title }}" class="btn btn--reddit" title="{{ site.data.ui-text[site.locale].share_on_label }} Reddit"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span> Reddit</span></a>{% endraw %}
{% raw %}<a href="https://www.reddit.com/submit?url={{ page.url | absolute_url | url_encode }}&title={{ page.title }}" class="btn btn--reddit" title="{{ site.data.ui-text[site.locale].share_on_label }} Reddit"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span> Reddit</span></a>{% endraw %}
```
![Reddit social share link button]({{ "/assets/images/mm-social-share-links-reddit-color.png" | relative_url }})
+6 -3
View File
@@ -53,20 +53,23 @@ Generate a `<figure>` element with a single image and caption.
| **image_path** | **Required** | Full path to image eg: `/assets/images/filename.jpg`. Use absolute URLS for those hosted externally. |
| **alt** | Optional | Alternate text for image. |
| **caption** | Optional | Figure caption text. Markdown is allowed. |
| **popup** | Optional | Enable Magnific Popup on the image. |
Using the `figure` include like so:
```liquid
{% raw %}{% include figure image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %}{% endraw %}
{% raw %}{% include figure popup=true image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %}{% endraw %}
```
Will output the following:
{% include figure image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %}
{% include figure popup=true image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %}
```html
<figure>
<img src="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image">
<a href="/assets/images/unsplash-image-10.jpg" class="image-popup" title="This is a figure caption.">
<img src="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image">
</a>
<figcaption>This is a figure caption.</figcaption>
</figure>
```
+102 -1
View File
@@ -5,7 +5,7 @@ permalink: "/docs/history/"
excerpt: Change log of enhancements and bug fixes made to the theme.
sidebar:
nav: docs
last_modified_at: '2024-04-28T01:12:00+08:00'
last_modified_at: '2025-05-02T18:50:37+08:00'
toc: false
---
@@ -15,6 +15,107 @@ toc: false
-->
{% raw %}
## [4.27.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.1)
### Enhancements
- Add a "Share on Bluesky" button [#5179](https://github.com/mmistakes/minimal-mistakes/issues/5179)
- Add preset variables for modern font stack [#5033](https://github.com/mmistakes/minimal-mistakes/issues/5033)
### Bug Fixes
- Fix wrong icon and color for X share button.
## [4.27.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.0)
### Enhancements
- Add RTL Support. [#4886](https://github.com/mmistakes/minimal-mistakes/pull/4886)
- Add missing Polish translation. [#4890](https://github.com/mmistakes/minimal-mistakes/pull/4890)
- Rewrite most directions with [CSS logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values).
- Remove unnecessary "type" attribute [#4956](https://github.com/mmistakes/minimal-mistakes/issues/4956)
- The "if" means the default is never used [#4955](https://github.com/mmistakes/minimal-mistakes/issues/4955)
- For pages without a title, show the site title only once [#4959](https://github.com/mmistakes/minimal-mistakes/issues/4959)
- Use `documents-collection.html` partial in `home` layout.
- Add Bulgarian translation. [#5003](https://github.com/mmistakes/minimal-mistakes/pull/5003)
- Add provider and comments info to `single.html` layout for non-production. [#5068](https://github.com/mmistakes/minimal-mistakes/issues/5068)
- Tweak contrast skin $primary-color to adhere to WCAG guidelines. [#5126](https://github.com/mmistakes/minimal-mistakes/issues/5126)
- Update social share buttons to reflect Twitter rebranding to X [#5210](https://github.com/mmistakes/minimal-mistakes/issues/5210)
### Bug Fixes
- Replace a redirected link to MadeMistakes in footer. [#4882](https://github.com/mmistakes/minimal-mistakes/pull/4882)
- Fix wrong float direction for `feature_row` with `type="right"`. [#4061](https://github.com/mmistakes/minimal-mistakes/issues/4061)
- Fix reset stylesheet overruling `$doc-font-size`. [#4983](https://github.com/mmistakes/minimal-mistakes/issues/4983)
- Fix JavaScript null error on home and splash layouts. [#4938](https://github.com/mmistakes/minimal-mistakes/issues/4938), [#4939](https://github.com/mmistakes/minimal-mistakes/pull/4939)
- Fix bad &lt;figure&gt; HTML if "alt" contains quotes.
- Fix extra newline generated in `_includes/post_pagination.html`.
- Hide hidden links & remove the overlay when one is clicked. [#5042](https://github.com/mmistakes/minimal-mistakes/pull/5042)
- Fix typo in "Configuration" [#5106](https://github.com/mmistakes/minimal-mistakes/issues/5106)
- bundle exec jekyll serve will fail if more than once [#5193](https://github.com/mmistakes/minimal-mistakes/issues/5193)
### Documentation & Maintenance
- Automatically update Algolia search index with GitHub Actions.
## [4.26.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.2)
### Enhancements
- Add Czech localization. [#4866](https://github.com/mmistakes/minimal-mistakes/pull/4866)
- Allow overriding HTML `lang` attribute on a per-page basis. [#4862](https://github.com/mmistakes/minimal-mistakes/pull/4862)
### Bug Fixes
- Figure helper breaks when using code markup in caption with `popup=true`. [#4841](https://github.com/mmistakes/minimal-mistakes/issues/4841)
## [4.26.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.1)
### Bug Fixes
- Disable copy button on invalid syntax highlighting blocks to avoid positioning issues.
- Fix typo for `fa-dribbble` in `_utilities.scss`.
- Restrict "auto scroll sticky ToC to content" feature to Chromium browsers for now. [#4826](https://github.com/mmistakes/minimal-mistakes/issues/4826)
### Documentation & Maintenance
- Rewrite social icons SCSS with a loop.
### Enhancements
- Change the icon of a copy button into a tick for 1.5 seconds on successful copy.
## [4.26.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.0)
### Bug Fixes
- Fix an unclosed `<p>` tag in `page__hero.html`, near `page.header.actions`.
- Remove overlay and revert X to hamburger icon when popup disappears. [#3958](https://github.com/mmistakes/minimal-mistakes/pull/3958)
- Fix SEO title when it contains a vertical bar. [#3094](https://github.com/mmistakes/minimal-mistakes/pull/3094) [#3113](https://github.com/mmistakes/minimal-mistakes/pull/3113)
- Remove "sticky sidebar" JS as it's now completely based on CSS media queries. [#4245](https://github.com/mmistakes/minimal-mistakes/issues/4245) [#4645](https://github.com/mmistakes/minimal-mistakes/pull/4645)
### Enhancements
- Add support for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2) 🎉 [#2636](https://github.com/mmistakes/minimal-mistakes/pull/2636)
- Add "copy to clipboard" button for code blocks 🎉 [#2812](https://github.com/mmistakes/minimal-mistakes/pull/2812)
- Auto scroll sticky ToC with content. [#3115](https://github.com/mmistakes/minimal-mistakes/pull/3115)
- Replace "hidden" check in Liquid templates with `where_exp: "item", "item.hidden != true"`.
- Remove deprecated `page.header.cta_url` setting. [#4821](https://github.com/mmistakes/minimal-mistakes/pull/4821)
- Allow multiple nav lists in sidebar. [#2843](https://github.com/mmistakes/minimal-mistakes/pull/2843)
- Add popup parameter to `{% include figure %}` to enable Magnific Popup. [#3119](https://github.com/mmistakes/minimal-mistakes/pull/3119)
- Add target attribute for navigation link. [#3056](https://github.com/mmistakes/minimal-mistakes/pull/3056)
- Split schema to a separate include file. [#3085](https://github.com/mmistakes/minimal-mistakes/pull/3085)
- Cleanup `_includes/seo.html`.
### Documentation & Maintenance
- Rewrite skin previews on `05-configuration.md` in Liquid template.
- Remove unused classes from `_layouts/single.html`.
- Migrate npm run scripts to Ruby Rake tasks.
- Add Rake task `version` for updating all hard-coded version numbers from `package.json` all at once.
- Merge `categories` and `tags` layout into `_includes/posts-taxonomy.html`.
- Update Social Sharing links section. [#4066](https://github.com/mmistakes/minimal-mistakes/pull/4066)
## [4.25.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.1)
### Bug Fixes
+1 -1
View File
@@ -33,7 +33,7 @@ Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your
- 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), [Discourse](https://www.discourse.org/), [utterances](https://utteranc.es/), [giscus](https://giscus.app/), static-based via [Staticman v1 and v2](https://staticman.net/), and custom).
- [Google Analytics](https://www.google.com/analytics/) support.
- 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), and Vietnamese.
- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), Bulgarian, Catalan, Chinese, Czech, 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), and Vietnamese.
## Demo Pages
+1 -1
View File
@@ -10,7 +10,7 @@ header:
url: "/docs/quick-start-guide/"
excerpt: >
A flexible two-column Jekyll theme. Perfect for building personal sites, blogs, and portfolios.<br />
<small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.1">Latest release v4.25.1</a></small>
<small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.1">Latest release v4.27.1</a></small>
feature_row:
- image_path: /assets/images/mm-customizable-feature.png
alt: "customizable"
+3 -4
View File
@@ -5,8 +5,7 @@ permalink: /page-archive/
author_profile: false
---
{% for post in site.pages %}
{% unless post.hidden %}
{% include archive-single.html %}
{% endunless %}
{% assign posts = site.pages | where_exp: "post", "post.hidden != true" %}
{% for post in posts %}
{% include archive-single.html %}
{% endfor %}
@@ -0,0 +1,48 @@
---
title: "Edge Case: Invalid syntax highlight languages"
categories:
- Edge Case
tags:
- content
- css
- edge case
---
Good highlighting:
```ruby
str = ARGV.first
if str
str = str.b[/\A_(.*)_\z/, 1]
if str and Gem::Version.correct?(str)
version = str
ARGV.shift
end
end
```
Good (but dumb) highlighting:
```
str = ARGV.first
if str
str = str.b[/\A_(.*)_\z/, 1]
if str and Gem::Version.correct?(str)
version = str
ARGV.shift
end
end
```
Bad highlighting:
```invalid
str = ARGV.first
if str
str = str.b[/\A_(.*)_\z/, 1]
if str and Gem::Version.correct?(str)
version = str
ARGV.shift
end
end
```
+3 -1769
View File
File diff suppressed because it is too large Load Diff
+2 -10
View File
@@ -1,7 +1,7 @@
{
"name": "minimal-mistakes",
"private": true,
"version": "4.25.1",
"version": "4.27.1",
"description": "Minimal Mistakes 2 column Jekyll theme.",
"repository": {
"type": "git",
@@ -22,14 +22,6 @@
"node": ">= 0.10.0"
},
"devDependencies": {
"npm-run-all": "^4.1.5",
"onchange": "^7.1.0",
"uglify-js": "^3.13.6"
},
"scripts": {
"uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.6.0.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/plugins/smooth-scroll.js assets/js/plugins/gumshoe.js assets/js/_main.js -c -m -o assets/js/main.min.js",
"add-banner": "node banner.js",
"watch:js": "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js",
"build:js": "npm run uglify && npm run add-banner"
"uglify-js": "^3.17.4"
}
}