Compare commits

...
243 Commits
Author SHA1 Message Date
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
iBug 1b06aff3bc Release 4.25.1 💎 2024-04-28 01:13:45 +08:00
iBug 7ea8510d4f Fix where_exp for Jekyll < 4.0
'and' and 'or' are new in Jekyll 4.0.
Ref: https://stackoverflow.com/posts/comments/111965719
2024-04-28 00:56:17 +08:00
iBug 7d61488f5e Update quick-start guide to use 4.25.0, fix #4809 2024-04-28 00:39:25 +08:00
iBug a7af9b0ad2 Replace dead link in _includes/head.html, close #4421 2024-04-26 00:45:41 +08:00
iBug 4310b5459c Try an FAQ page 2024-04-26 00:43:42 +08:00
iBug f8f6e589ac Replace fontawesome.com/v5/search with v6 2024-04-24 00:51:38 +08:00
iBug 172a5169f1 Bump jekyll-toc to v1.2.1 2024-04-23 21:52:22 +08:00
iBug 48ed1444b9 Update CHANGELOG and history 2024-04-23 13:54:48 +08:00
Andrii BandAndrii Burkatskyi 409bc92868 Add more configuration for Giscus (#4274)
* update giscus

* fix site variable name

---------

Co-authored-by: Andrii Burkatskyi <underr-ua@users.noreply.github.com>
2024-04-23 13:53:52 +08:00
iBug f8527e7916 Update CHANGELOG and history 2024-04-23 13:22:11 +08:00
Alex a179735103 GitHub Workflows security hardening (#3884)
Signed-off-by: sashashura <93376818+sashashura@users.noreply.github.com>
2024-04-23 13:20:47 +08:00
iBug 60b9565277 Exclude hidden posts from page__related, fix #4653 2024-04-23 12:18:07 +08:00
iBug 7746db6f7e Add a missing include to before-related.html 2024-04-23 12:11:26 +08:00
iBug 5e3d1406d2 Add _includes/before-related.html and remove docs site single layout override 2024-04-23 12:09:12 +08:00
iBug a0aa8f80a7 Add _includes/after-content.html and remove docs site default layout override 2024-04-23 12:01:53 +08:00
iBug 6308789788 Remove h1 from 18-history.md 2024-04-23 11:45:34 +08:00
iBug c7ef8c0fd0 Bump node.js dependencies 2024-04-23 03:55:37 +08:00
iBug ada1b6184e Update CHANGELOG 2024-04-23 03:54:23 +08:00
Andrii BandAndrii Burkatskyi 9b9d2c66e2 Add Ukrainian translation (#4273)
Co-authored-by: Andrii Burkatskyi <underr-ua@users.noreply.github.com>
2024-04-23 03:52:08 +08:00
iBug 6693a4a8cc Update CHANGELOG and history 2024-04-23 03:47:02 +08:00
dependabot[bot] aca6648bd4 Bump shell-quote from 1.7.1 to 1.7.3 (#3692) 2024-04-22 19:22:04 +00:00
iBug 6e94773083 Release 4.25.0 💎 2024-04-23 01:50:35 +08:00
iBug 4c38bab95b Remove remainders of browser-upgrade.html 2024-04-23 01:43:16 +08:00
iBug 6f1cbfb3be Fix bad Liquid include syntax 2024-04-23 01:34:27 +08:00
iBug 8d3592ff70 Consolidate hard-coded version numbers where possible
Now only 4 files left untouchable.
Search README.md for "Dev note" for details.
2024-04-23 01:28:03 +08:00
iBug aae8dac76c Add Rakefile for automatically syncing CHANGELOG with history 2024-04-23 00:24:44 +08:00
iBug b604e2a686 Sync CHANGELOG with history 2024-04-23 00:24:35 +08:00
iBug 02d989370a Update CHANGELOG and history
Call it a day for now
2024-04-22 23:58:40 +08:00
Huangbo 2c92d34938 Fix non-English characters being url encoded in breadcrumb (#3819)
* Fix non-English characters being url encoded in breadcrumb

* Remove `| replace: '%20', ' ‘`
2024-04-22 23:37:12 +08:00
Mauricio TavaresandiBug 0d56036557 Add site.copyright and site.copyright_url config options (#4313)
* Allow to optionally define website copyright holder name and url using site.copyright and site.copyright_url

* Update _config.yml

---------

Co-authored-by: iBug <git@ibugone.com>
2024-04-22 23:35:49 +08:00
Moose 73c2ad818c Fix Linkedin social share link (#4754)
Removed url encoding of the article link
2024-04-22 23:30:14 +08:00
yusanshi 495fb29b45 Fix wrong first_page_path because of hard-coded page:num (#3778) 2024-04-22 23:27:21 +08:00
iBug 75841313de Lazy-load InstantSearch scripts and stylesheets (#3691)
* Lazy-load InstantSearch scripts and stylesheets

* Replace outdated script parts
2024-04-22 23:25:09 +08:00
LasseAhhMann 7aee05ce0c Remove JS and other files from search index (#4000)
To avoid getting JS and irrelevant files indexed remove pages where title is null. This gives a much cleaner Lunr store with more relevant content.
2024-04-22 23:22:08 +08:00
Niklas EngblomandNiklas Engblom 08b0303298 Improve Finnish translations (#4595)
Co-authored-by: Niklas Engblom <niklas-e@users.noreply.github.com>
2024-04-22 23:18:19 +08:00
eabneka 6eaee034d1 Remove redundant downcase from _layouts/categories.html (#4531) 2024-04-22 23:06:53 +08:00
Michael Rose 9770b663f9 Update CHANGELOG and history 2024-04-22 10:46:09 -04:00
Leszek 'skolima' Ciesielski 2cc21c1e88 Update the Polish translation (#3969) 2024-04-22 10:44:17 -04:00
Tirthankar Mazumder 830595d967 Fixed a grammar mistake. (#3890) 2024-04-22 10:33:21 -04:00
Michael Rose f18799a0c9 Update CHANGELOG and history 2024-04-22 10:30:23 -04:00
Marco OmainskaandMarco Omainska 51fcef50d0 load latest fontawesome package (#3765)
Co-authored-by: Marco Omainska <59295964+marcoiska@users.noreply.github.com>
2024-04-22 10:28:55 -04:00
Michael Rose 91ab537546 Update README.md 2024-04-22 09:17:31 -04:00
Michael Rose 23a91f8695 Delete .github/FUNDING.yml 2024-04-22 09:14:05 -04:00
iBug 8a67ce8e41 Improve PR close auto-comment message (#3713)
* Improve auto-comment message

* Lock these PRs after closing
2022-07-08 11:38:44 -04:00
Michael Rose 18e89666a6 Update CHANGELOG and history 2022-05-30 12:18:57 -04:00
iBug 5946bd4ea0 Fix #3668 breaking "disable per-page when globally enabled" (#3669)
* Fix #3668 breaking "disable per-page when globally enabled"

* `default:` filter doesn't fit here

https://shopify.github.io/liquid/filters/default/
2022-05-30 12:13:22 -04:00
Michael Rose 3d65710bf7 Update CHANGELOG and history 2022-05-29 14:35:04 -04:00
iBug c940a73b50 Remove IE9 upgrade notice (#3666) 2022-05-29 14:34:11 -04:00
iBug e44403e276 Fix #3096 enabling breadcrumb on all pages (#3668) 2022-05-29 14:33:50 -04:00
Michael Rose 6f0ba5e363 Update CHANGELOG and history 2022-05-27 14:08:00 -04:00
Michael Rose 955a19b955 Replace with public YouTube video embeds 2022-05-27 14:07:03 -04:00
Michael Rose de1e2b73a6 Replace with public YouTube video
Close #3649
2022-05-27 14:04:06 -04:00
Michael Rose 1433887f67 Merge branch 'master' of https://github.com/mmistakes/minimal-mistakes 2022-05-27 12:25:22 -04:00
Michael Rose 2f5af9050b Update CHANGELOG and history 2022-05-27 12:25:20 -04:00
FavorMylikes 03a26a105d Update algolia-search-scripts.html (#3102)
Fix issue https://github.com/mmistakes/minimal-mistakes/issues/3101
2022-05-27 12:22:43 -04:00
Lars Olesen 65237df377 Make it possible to enable breadcrumbs per page (#3096)
* Make it possible to disable breadcrumbs per page

* Update single.html

* Update single.html
2022-05-27 12:04:56 -04:00
Michael Rose f92670442f Update CHANGELOG and history 2022-05-27 12:03:17 -04:00
iBug cee4c86ee3 Update link to Font Awesome gallery (#3599) 2022-05-27 12:02:21 -04:00
Michael Rose 58d1ba8293 Update CHANGELOG and history 2022-05-27 12:01:06 -04:00
Benson Muite 8dc2997d1f Update attribution link (#3553) 2022-05-27 12:00:08 -04:00
Michael Rose daf51177f8 Update 2022-05-27 11:59:38 -04:00
Benson Muite 416933d98a Add Kiswahili translation (#3489)
* Add Kiswahili translation

* Add Kiswahli to README

* Add Kiswahili to documentation
2022-05-27 11:58:09 -04:00
Michael Rose 55f6e8fae5 Exclude main.scss from Lunr search index 2022-05-27 11:48:46 -04:00
Michael Rose bcb15f80e7 Update CHANGELOG and history 2022-05-27 11:41:13 -04:00
Nicholas Perry 00b86b1ff8 add optinal lunr searching of pages (#3352) 2022-05-27 11:39:47 -04:00
Michael Rose a66bf7e317 Update CHANGELOG and history 2022-05-27 10:38:07 -04:00
Nicholas Perry 3f36d171bb fix typo about loading javascript in footer (#3350) 2022-05-27 10:34:47 -04:00
Michael Rose 4ef57be787 Update CHANGELOG and history 2022-05-27 10:18:51 -04:00
Lars Olesen df97788050 Update to Jquery 3.6.0 (#3254) 2022-05-27 10:12:25 -04:00
Michael Rose a499b0dcae Update CHANGELOG and history 2022-05-27 10:07:45 -04:00
iBug 3051fcd3c9 Fix inline code style not applied to stylized text (#3253)
* bug: inline code style not applied to stylized text

* Use double colons for pseudoelements
2022-05-27 10:06:37 -04:00
Michael Rose 4e19f46d68 Merge branch 'master' of https://github.com/mmistakes/minimal-mistakes 2022-05-27 10:03:05 -04:00
Michael Rose 7aa8c7b5dc Update CHANGELOG and history 2022-05-27 10:03:02 -04:00
iBug 23e7ad2903 Use <a> color for blockquote.notice border (#3140)
Close #3068
2022-05-27 09:59:38 -04:00
Michael Rose a19dbdbf78 Update CHANGELOG and history 2022-05-27 09:50:20 -04:00
Lars Olesen 8b67db3ff4 Added sameAs (#3087) 2022-05-27 09:49:00 -04:00
Michael Rose 2632ff650a Update CHANGELOG and history 2022-01-10 07:59:54 -05:00
iBug ad1e06633c Automatically close invalid PRs using GitHub Actions (#3313)
* Try auto-closing bad PRs

* Include empty PR body as well

* Add "Type: Invalid" label as well
2022-01-10 07:59:04 -05:00
Michael Rose 9539e3bd84 Update CHANGELOG and history 2022-01-05 10:34:32 -05:00
YuchenandYuchen Zhong d6c84c9508 Add missing comma (#3318)
Co-authored-by: Yuchen Zhong <yuchen21@fb.com>
2022-01-05 10:33:50 -05:00
Michael Rose 5ef199a3eb Update CHANGELOG and history 2022-01-05 10:33:27 -05:00
Sander Holvoet d639c605c8 ✏ fix typo (#3232) 2022-01-05 10:32:35 -05:00
Michael Rose a431dd5cc3 Update CHANGELOG and history 2022-01-05 10:32:14 -05:00
Andrew McIntosh 691df116da Fix keybase class (#3221)
* Fix keybase class

* Fix fas->fab
2022-01-05 10:30:36 -05:00
Michael Rose 9ab55b6c54 Update CHANGELOG and history 2021-10-19 11:26:54 -04:00
Michael Rose bdcfd791a0 Update CHANGELOG and history 2021-10-19 11:25:32 -04:00
Georger Araújo 9f7c0e4144 Update Brazilian Portuguese translation (#3204)
* Update Brazilian Portuguese translation

* Revert some translations to reduce friction
2021-10-19 11:24:59 -04:00
Daniel Schroeder dbc9479fd5 feat: Sort comments by date ascending (#3184) 2021-10-19 11:23:42 -04:00
Jason Hemann 6bd64ffd47 Link clarifying adding plugins (#3181)
The phrase "put them here!" doesn't sufficiently clarify what to do; I add link to the Jekyll documentation with the proper syntax.
2021-10-19 11:21:55 -04:00
Jason Hemann ebc8123d36 Making verbiage consistent w/current _config.yml (#3180)
The plugin in question comes by-default listed in _config.yml ; it's better to say that the user must _retain_ it as listed, not that the user needs to add it.
2021-10-19 11:21:41 -04:00
Nathan Cho a6b51ed91e Fix broken link & Add Baidu site verification (#3139)
* Fix broken link
Link to Bing Webmaster Tools was broken.

* Fix broken link
Link to Open Graph debug tool was broken.

* Add Baidu site verification (mmistakes#2830)
Added `baidu_site_verification` to `_config.yml`
2021-10-19 11:19:29 -04:00
John Scott 642ec7b20f Added optional label attribute (#3128)
Added label attribute as per utterances optional label setting.
2021-10-19 11:18:00 -04:00
Michael Rose 000dc3b4a2 Delete stale.yml 2021-09-21 22:45:24 -04:00
Michael Rose 50d312d04c Delete stale.yml 2021-09-21 10:26:27 -04:00
iBug 25e871c096 Use GitHub issue templates (#3133)
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository
2021-09-04 20:42:08 -04:00
Michael Rose 20cd63c05b Update CHANGELOG and history 2021-08-15 19:04:16 -04:00
John Scott eaef9ecd9f include video does not survive compress.html (#3117) 2021-08-15 19:02:31 -04:00
Michael Rose 62c123c6b5 Update CHANGELOG and history 2021-08-15 18:57:12 -04:00
Michael Rose 234d859040 Merge pull request #3116 from mmistakes:dependabot/npm_and_yarn/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7
2021-08-15 18:55:48 -04:00
dependabot[bot] c6c6bafad0 Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 19:19:04 +00:00
Michael Rose 97cf6e189b Remove extra semi-colon 2021-08-10 15:17:34 -04:00
Michael Rose 9cf80336b3 Update CHANGELOG and history 2021-08-08 14:10:49 -04:00
iBug ff5b354a9a Enable magnific popup on <a> tags only when it has <img> (#3114) 2021-08-08 14:01:59 -04:00
Michael Rose 0629bb770d Update CHANGELOG and history 2021-08-08 13:47:01 -04:00
Lars Olesen 1ca125d61b Added Danish translations (#3095)
* Added Danish translations

* Fixed wrong commit.
2021-08-08 13:45:42 -04:00
Michael Rose aa5dab277e Update CHANGELOG and history 2021-08-08 13:44:41 -04:00
Lars Olesen f9b17c6249 Add role to search (#3086) 2021-08-08 13:43:31 -04:00
Michael Rose 084ddf8d8e Add margin around Google ads 2021-08-06 11:41:21 -04:00
Michael Rose 9269842e9d Update CHANGELOG and history 2021-07-30 15:58:05 -04:00
Michael Rose 567836e43c Merge branch 'master' of https://github.com/mmistakes/minimal-mistakes 2021-07-30 15:55:50 -04:00
Michael Rose 7e7e683801 Enable sticky toc on test post 2021-07-30 15:55:45 -04:00
Johnson 0f06cb8225 Enable toc sidebar scrolling (#2874)
* Enable toc sidebar scrolling

* Refactor style rules

* Move style rules from 'navigation' to 'sidebar'

* Remove custom scrollbar styles
2021-07-30 15:54:49 -04:00
Michael Rose 89de4d46db Update CHANGELOG and history 2021-07-23 14:17:50 -04:00
Peter Murray 65e79f5a7d Add Microformats (#3052)
* Add rel=me to author profile links

* Add h-card Microformats markup

* Add h-entry microformat markup

* Fix missing anchor tag

* Fix h-entry microformat markup on single template

* Use minimal subset of Microformat elements

* Move dt-published to `page__date.html` and remove dt-updated
* Remove "author" and "summary"

Leaves "url" as a hidden element

* Add page link to h1 tag

The h1 tag now contains the Schema-org `url` itemprop and the
Microformats `url` class in an anchor tag.  The anchor tag is styled to
not look like a link.

* Put author 'u-url' on author__name h3

This also puts the same `{{ author.home | default: '/' | absolute_url }}`
construct on `author__avatar` to remove the Jekyll `author.home`
conditional.

Also addresses SCSS text color error.
2021-07-23 14:16:08 -04:00
Michael Rose 42f7512702 Update 01-quick-start-guide.md 2021-07-23 12:08:08 -04:00
Michael Rose cc18679227 Make small grammar changes 2021-07-23 09:34:04 -04:00
Michael Rose 5094a4092a Update CHANGELOG and history 2021-07-23 09:33:51 -04:00
Erik Westrup 6ade4536f7 Add instructions on how to unminify main.js for easier browser debugging (#3055)
* Add instructions on how to unminify main.js for easier browser debugging

* Fixed Markdown style like sggested by @iBug
2021-07-23 09:30:38 -04:00
Michael Rose bd46e0a1a8 Update CHANGELOG and history 2021-07-23 09:29:10 -04:00
Kulbhushan Chand 14a47c9d39 fix: change heading tag of related posts section from h4 to h2 for SEO enhancement (#3064)
* Update heading tag from `h4` to `h2`

* Update heading tag from `h4` to `h2`
2021-07-23 09:27:16 -04:00
Michael Rose 2eda29dd1f Update CHANGELOG and history 2021-07-23 09:25:45 -04:00
Anton Brall 26db31c52d Fixed a grammar error in the german translation (#3063) 2021-07-23 09:24:35 -04:00
Michael Rose 4fcd51b9bd Update CHANGELOG and history 2021-07-23 09:24:07 -04:00
Erik Westrup 0491cd362b Remove site.url from first breadcrumb link (#3051)
* Remove site.url from first breadcrumb link

Fixes #3050

* Use relative_rul filter instead of site.baseurl
2021-07-23 09:23:07 -04:00
Michael Rose 3c075fe76b Update version 2021-07-05 16:34:03 -04:00
Michael Rose 00fa7be38b Release 4.24.0 💎 2021-07-05 16:32:52 -04:00
Sean Killeen 297989c1be Add giscus support (#3022)
* Add script in same style as utterances

But adjusted for the various filed differences

* Add initial script

* Add default settings

* Update changelog

* Add feature to readme

* Add comments html

* add comment provider include

* update config in docs

* Add URL for additional reference

* docs for giscus comments

* Unrelated bugfix: add missing version separator

So that things match the "history" doc.

* add space

* update history doc

* update about doc

* add to test config yaml

* remove unnecessary / incorrect async attribute

* probably should pass the right config paths

* lowercase the repo name

* Update docs to address '1' and '0' for reactions_enabled

Figured I'd match the giscus format rather than convert a boolean to an int there.

* update two additional docs

* docs wording fix
2021-07-05 16:08:28 -04:00
Michael Rose 8adb089a68 Update CHANGELOG and history 2021-07-05 15:52:43 -04:00
Christian Oliff ad094187f7 Remove IE9 flexbox fallback (#3042)
IE9 is absolutely, completely, totally dead. it's marketshare is less than 0.1%.
REF: https://caniuse.com/usage-table

Save some bytes in the HTML for all users by removing the fallback inline CSS.
2021-07-05 15:51:47 -04:00
Michael Rose 5aeff0c01b Update CHANGELOG and history 2021-07-05 15:51:30 -04:00
Sean Killeen 579d1759d1 Update README text for Gumshoejs license (#3024) 2021-07-05 15:49:48 -04:00
Michael Rose cc9d1fdaf3 Remove tabindex="-1" from input elements in search.html layout
Make `input` elements accessible by keyboard.

Fixes #2982
2021-06-23 08:27:06 -04:00
Michael Rose 3b62fcef6b Fix broken links in documentation
Close #3004
2021-06-23 08:17:31 -04:00
Michael Rose 8152b4cbfc Update CHANGELOG and history 2021-06-23 08:12:52 -04:00
Lars Olesen 3c60ebde58 Remove H2 as it is not important to site structure (#3012)
This should not use a H2, as that is not an important headline, and thus a H2 here would probably hurt in page SEO.
2021-06-23 08:11:39 -04:00
Michael Rose b997dc5e25 Update CHANGELOG and history 2021-06-23 08:11:14 -04:00
Guillaume Gautreau 7597735c73 Loads font-awesome asynchronously (#2967)
Loading font-awesome asynchronously allows to display the site faster. This change is advised by google pagespeed insights
2021-06-23 08:10:12 -04:00
Michael Rose 184f4f3430 Update CHANGELOG and history 2021-06-23 08:08:05 -04:00
Randall Wood 351174e494 feat: Search icon in masthead is a Font Awesome icon. (#2774)
* feat: Allow search icon in masthead to be set to a Font Awesome icon.

* fix indentations

* Users wishing to avoid FontAwesome should override _includes/masthead.html
2021-06-23 08:06:03 -04:00
Michael Rose 5704e9c0ae Merge branch 'master' of https://github.com/mmistakes/minimal-mistakes 2021-06-23 07:55:16 -04:00
Michael Rose 00d9900743 Fix broken image
Close #3013
2021-06-23 07:55:12 -04:00
Michael Rose d9305929cf Update FUNDING.yml 2021-06-19 12:28:06 -04:00
Michael Rose f2461af7a8 Update FUNDING.yml 2021-06-19 12:27:35 -04:00
Michael Rose 327a7b6f62 Add banner above related posts 2021-06-07 09:15:17 -04:00
Michael Rose 5516883310 Update Adsense 2021-06-07 08:55:28 -04:00
Michael Rose 1f9698ce37 Update support buttons 2021-06-07 08:55:21 -04:00
Michael Rose 1f0746f2d5 Disable auto ads 2021-06-07 08:20:47 -04:00
Michael Rose b4b8369f5b Update README.md 2021-06-06 16:13:35 -04:00
Michael Rose 1d2a1c51df Update FUNDING.yml 2021-06-06 14:16:57 -04:00
Michael Rose e7687a8e15 Update FUNDING.yml 2021-06-06 12:58:25 -04:00
Michael Rose edd326376b Update Google Adsense 2021-05-31 13:23:01 -04:00
Michael Rose e2f65248b0 Enable auto ads 2021-05-31 12:55:44 -04:00
Michael Rose e134d13e45 Bump theme version 2021-05-14 19:36:48 -04:00
Michael Rose 5423463ca0 Update CHANGELOG and history 2021-05-14 19:36:13 -04:00
Michael Rose 65eb672dcc Release 4.23.0 💎 2021-05-14 19:34:33 -04:00
Michael Rose ee67ad9743 FIx menu toggle
ref: #2957
2021-05-14 19:24:11 -04:00
Michael Rose 635b1790f3 Update stale.yml 2021-05-12 13:36:20 -04:00
Michael Rose 4847ce3330 Update stale action 2021-05-11 10:56:37 -04:00
Michael Rose b0f5370ede Fix typo
Close #2911
2021-05-11 10:47:06 -04:00
Michael Rose 4e2e64989f Fix Jekyll environment note in configuration documentation
Close #2912
2021-05-11 10:42:12 -04:00
Michael Rose 2127655ad8 Update CHANGELOG and history 2021-05-11 10:31:41 -04:00
David Lechner b0261f7c43 Update 14-helpers.md (#2940)
Fix missing backtick.
2021-05-11 10:30:47 -04:00
Michael Rose 68327eb69b Update 2021-05-11 10:24:00 -04:00
Michael Rose 1ae5b070b6 Merge pull request #2936 from MoElaSec:master
Add Arabic Translation 📝
2021-05-11 10:21:28 -04:00
Michael Rose 4710639f05 Fix typo 2021-05-11 10:19:59 -04:00
Michael Rose 736f77c9c6 Update onchange and uglify-js dependencies 2021-05-11 10:00:36 -04:00
ShifraSec e1fce9fc94 Add Arabic Translation 📝 2021-04-21 18:21:10 +04:00
Michael Rose 4259ffdd6f Update CHANGELOG and history 2021-04-13 16:12:16 -04:00
de6870743d Document user custom element hooks (#2815)
* Added documentation for including custom CSS on a site or page

* Removed non-configuration related content from 05-configuration.md and cleaned up some style in new sections of 16-stylesheets.md

* Moved small custom head documentation to a ProTip in _docs/06-overriding-theme-defaults.md

* Cleaned up some documentation, and added some example uses of custom head and footer.

* Replace double space with single

* Replace double spaces with single

Co-authored-by: Tom Manner <tsmanner@us.ibm.com>
Co-authored-by: Michael Rose <mmistakes@users.noreply.github.com>
2021-04-13 16:10:08 -04:00
Michael Rose 99cd379c61 Update CHANGELOG and history 2021-04-13 16:01:17 -04:00
Tom MannerandTom Manner 5ffad0d956 Color notices based on skin colors instead of fixed values (#2887)
* Made notice Sass color mixing in based on $background-color and $text-color instead of hard-coded black and white values.

* Made some style adjustments to notices to improve readability.

Notice links are slightly darkened from the notice color, mostly because the gray-on-gray default notice links were very hard to read.  Rather than being $notice-color, they are `mix(#000, $notice-color, 10%)`.
The notice background mix and code-background mix can now be set with the SCSS variables $notice-background-mix and $code-notice-background-mix.
The default mix for background was adjusted to 80%, from 90%.
The default mix for code-background was adjusted to 90%, from 95%.
Skins that still didn't read well were adjusted individually.

* Adjusted sunrise $notice-background-mix to 75%

* Adjusted dark theme notice background mix colors back to the default

Co-authored-by: Tom Manner <tsmanner@us.ibm.com>
2021-04-13 16:00:24 -04:00
Michael Rose b1e4881c50 Update CHANGELOG and history 2021-04-13 15:59:28 -04:00
luweizheng c521fe58df Datetime format (#2844)
* datetime_format

* page__meta

* page__date

* page__date test

* update docs

* update docs
2021-04-13 15:58:37 -04:00
Michael Rose 2e05b8568b Update CHANGELOG and history 2021-04-13 15:57:24 -04:00
Vincent Tam 2301fdf5a7 Remove all references to official public Staticman API instance. (#2831)
* Updated Staticman docs

* remove any ref to official public instance in docs

* remove fallback instance for staticman v2

left staticman v1 untouched as I dunno how to deal with that
2021-04-13 15:55:51 -04:00
Michael Rose 8a39b748c2 Update CHANGELOG and history 2021-04-13 15:54:21 -04:00
luweizheng deaed193af Add Baidu site verfication (#2830) 2021-04-13 15:53:30 -04:00
iBug 641ca6f3d8 Add note on TOC heading level issue (#2902)
https://github.com/mmistakes/minimal-mistakes/issues/2892#issuecomment-809220952
2021-03-29 08:13:27 -04:00
iBugandMichael Rose 3d3cb58a2e Add alt attr to site logo in masthead (#2824)
Co-authored-by: Michael Rose <mmistakes@users.noreply.github.com>
2021-03-03 10:00:20 -05:00
iBug 6e4aa384d0 Remove G-stuff CSS (#2852) (#2855) 2021-03-03 09:39:28 -05:00
Michael Rose c501842db8 Fix typos 2021-02-05 21:02:03 -05:00
128 changed files with 2848 additions and 2898 deletions
+9 -5
View File
@@ -1,6 +1,10 @@
assets/fonts/* linguist-vendored
assets/js/main.min.js linguist-vendored
assets/js/lunr/* linguist-vendored
assets/js/plugins/* linguist-vendored
assets/js/vendor/* linguist-vendored
assets/fonts/* linguist-vendored
assets/js/main.min.js linguist-vendored
assets/js/lunr/* linguist-vendored
assets/js/plugins/* linguist-vendored
assets/js/vendor/* linguist-vendored
_sass/minimal-mistakes/vendor/* linguist-vendored
CHANGELOG.md text merge=union
docs/_docs/18-history.md text merge=union
*.md text
-1
View File
@@ -1 +0,0 @@
custom: https://www.paypal.me/mmistakes
+4 -4
View File
@@ -14,7 +14,7 @@ about: "Is something not working as expected?"
for solutions and to avoid duplication.
- Ask for help at http://talk.jekyllrb.com/
After exhausting these suggestions use the format below.
If none of the above solved your problem, you can continue below.
-->
## Environment
@@ -25,7 +25,7 @@ about: "Is something not working as expected?"
Issues without a link to a public repository or ZIP file will likely go ignored.
Being able to see your actual files is necessary to troubleshoot, as most
issues stem from invalid/missing YAML Front Matter, a mis-configured _config.sys
issues stem from invalid/missing YAML Front Matter, a mis-configured _config.yml
file, or problematic site content.
-->
@@ -33,7 +33,7 @@ about: "Is something not working as expected?"
- Ruby gem or remote theme version:
- Jekyll version:
- Git repository URL:
- GitHub Pages hosted (if yes provide URL to site):
- Hosted on GitHub Pages (if yes provide URL to site):
- Operating system:
## Expected behavior
@@ -46,7 +46,7 @@ about: "Is something not working as expected?"
## Steps to reproduce the behavior
<!--
Describe the steps you took for this problem to exist. Such as: you installed
Describe the steps you took for this problem to come up. Such as: you installed
the theme, customized _config.yml, added your own posts, and started up a
Jekyll server locally.
+81
View File
@@ -0,0 +1,81 @@
name: Bug Report
description: There is something wrong with the theme. 99% of the time you should select Support below.
body:
- type: markdown
attributes:
value: |
Before opening a new issue please:
- Verify you have the latest versions of Jekyll and Minimal Mistakes
installed by running `bundle update`.
- Thoroughly read the theme's documentation at
https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
- Search all issues at https://github.com/mmistakes/minimal-mistakes/issues
for solutions and to avoid duplication.
- Ask for help at https://talk.jekyllrb.com/
If none of the above solved your problem, you can continue below.
- type: textarea
id: environment
attributes:
label: What happened?
description: |
Please include theme version, Jekyll version, public git repository, whether
you are hosting with GitHub Pages, and the operating system you tested with.
Issues without a link to a public repository or ZIP file will likely go ignored.
Being able to see your actual files is necessary to troubleshoot, as most
issues stem from invalid/missing YAML Front Matter, a mis-configured _config.yml
file, or problematic site content.
value: |-
- Minimal Mistakes version:
- Ruby gem or remote theme version:
- Jekyll version:
- Git repository URL:
- Hosted on GitHub Pages (if yes provide URL to site):
- Operating system:
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: |
Please describe the expected behavior and the actual result you got.
placeholder: >
What is it you expected to happen? This should be a description of how the
functionality you tried to use is supposed to work.
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce the behavior
description: |
Describe the steps you took for this problem to come up. Such as: you installed
the theme, customized _config.yml, added your own posts, and started up a
Jekyll server locally.
If an error occurred on GitHub Pages when pushing, please test a local version
following these setup instructions:
https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/
Then provide a complete log by running `bundle exec jekyll build --trace --verbose`
and include this output in the filed issue.
Screenshots can also be included if they help illustrate a behavior.
validations:
required: true
- type: textarea
id: other
attributes:
label: Other
description: |
Please provide a code repository, gist, code snippet, sample files,
screenshots, or anything else you think will aid in reproducing the issue.
validations:
required: false
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Support
url: https://github.com/mmistakes/minimal-mistakes/discussions
about: Please post your support questions in the Discussions section.
+25
View File
@@ -0,0 +1,25 @@
name: Documentation
description: Found a typo or something that needs clarification?
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to open an issue and help make the docs better.
- type: textarea
id: motivation
attributes:
label: Motivation
description: |
Why should we update our docs?
validations:
required: true
- type: textarea
id: suggestion
attributes:
label: Suggestion
description: |
What should we do instead?
validations:
required: true
+5 -1
View File
@@ -23,4 +23,8 @@
<!--
Is this related to any GitHub issue(s)?
-->
-->
<!--
Please confirm that you want to submit this Pull Request to Minimal Mistakes, the free Jekyll theme by Michael Rose, by deleting this comment block.
-->
-22
View File
@@ -1,22 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "Status: Accepted"
- "Status: Under Consideration"
- "Status: Review Needed"
# Label to use when marking an issue as stale
staleLabel: "Status: Stale"
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: |
This issue has been automatically marked as stale because it has not had recent activity.
If this is a **bug** and you can still reproduce this error on the `master` branch, please reply with any additional information you have about it in order to keep the issue open.
If this is a feature request, please consider whether it can be accomplished in another way. If it cannot, please elaborate on why it is core to this project and why you feel more than 80% of users would find this beneficial.
This issue will automatically be closed in 7 days if no further activity occurs. Thank you for all your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+32
View File
@@ -0,0 +1,32 @@
name: Cleanup bad PR
on:
pull_request_target:
types: [opened, reopened]
permissions:
contents: read
jobs:
close-pr:
permissions:
pull-requests: write
runs-on: ubuntu-latest
if: "contains(github.event.pull_request.body, 'by deleting this comment block') || github.event.pull_request.body == ''"
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: 'Type: Invalid'
- uses: superbrothers/close-pull-request@v3
with:
# Optional. Post an issue comment just before closing a pull request.
comment: |
**You have created a Pull Request to the wrong repository.** This is the repository for [Minimal Mistakes][1], the free Jekyll theme. See [GitHub Docs: About pull requests][2] if you need help.
[1]: https://mmistakes.github.io/minimal-mistakes/
[2]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
- uses: sudo-bot/action-pull-request-lock@v1.0.5
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
number: ${{ github.event.pull_request.number }}
lock-reason: spam
+3
View File
@@ -2,6 +2,9 @@
*~
*.sw[p_]
# IntelliJ IDEA
*.idea
# Sublime Text
*.sublime-project
*.sublime-workspace
+420 -244
View File
File diff suppressed because it is too large Load Diff
+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
+37 -20
View File
@@ -2,18 +2,12 @@
[![LICENSE](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://raw.githubusercontent.com/mmistakes/minimal-mistakes/master/LICENSE)
[![Jekyll](https://img.shields.io/badge/jekyll-%3E%3D%203.7-blue.svg)](https://jekyllrb.com/)
[![Ruby gem](https://img.shields.io/gem/v/minimal-mistakes-jekyll.svg)](https://rubygems.org/gems/minimal-mistakes-jekyll)
[![Tip Me via PayPal](https://img.shields.io/badge/PayPal-tip%20me-green.svg?logo=paypal)](https://www.paypal.me/mmistakes)
Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building personal sites, blogs, and portfolios. As the name implies, styling is purposely minimalistic to be enhanced and customized by you :smile:.
:sparkles: See what's new in the [CHANGELOG](CHANGELOG.md).
**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) to continue developing and maintaining it.**
[![Support via PayPal](https://cdn.jsdelivr.net/gh/twolfson/paypal-github-button@1.0.0/dist/button.svg)](https://www.paypal.me/mmistakes)
**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll encounter `Unknown tag 'include_cached'` errors at build.
**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and must be retained in the `plugins` array of `_config.yml`. Otherwise you'll encounter `Unknown tag 'include_cached'` errors at build.
[![Minimal Mistakes live preview][2]][1]
@@ -31,9 +25,9 @@ Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building per
- Several responsive layout options (single, archive index, search, splash, and paginated home page).
- Optimized for search engines with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data.
- Optional [header images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#headers), [custom sidebars](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#sidebars), [table of contents](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#table-of-contents), [galleries](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery), related posts, [breadcrumb links](https://mmistakes.github.io/minimal-mistakes/docs/configuration/#breadcrumb-navigation-beta), [navigation lists](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list), and more.
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), and [utterances](https://utteranc.es/)).
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), [utterances](https://utteranc.es/), and [giscus](https://giscus.app/)).
- [Google Analytics](https://www.google.com/analytics/) support.
- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Catalan, Chinese, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hebrew, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), Norwegian (Norsk), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese.
- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), Catalan, Chinese, 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,13 +115,37 @@ To install:
2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`.
3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command:
3. Fetch and update bundled gems by running the following [Bundler](https://bundler.io/) command:
```bash
bundle
```
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.22.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.26.2"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
<!--
Dev note: The version number is currently hard-coded in these files:
- package.json
- README.md (this file)
- docs/_data/theme.yml
- docs/_pages/home.md (in Front Matter "excerpt")
`package.json` holds the authoritative version number, and the others can be updated with `bundle exec rake version`.
The following files should also be regenerated:
- _includes/copyright.html, _includes/copyright.js, _sass/minimal-mistakes/_copyright.scss
(Run `bundle exec rake clean` then `bundle exec rake copyright` - all three references `package.json`)
- assets/js/main.min.js (Run `bundle exec rake js`, references `_includes/copyright.js`)
*Tip*: The default Rake task will update all of the above files at once.
Additionally, the license year is hard-coded in these files and are NOT covered by a Rake task:
- README.md (this file, near the end)
- LICENSE
-->
**Looking for an example?** Use the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter/generate) for the quickest method of getting a GitHub Pages hosted site up and running. Generate a new repository from the starter, replace sample content with your own, and configure as needed.
@@ -135,8 +153,6 @@ To install:
For detailed instructions on how to configure, customize, add/migrate content, and more read the [theme's documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/).
---
## Contributing
Found a typo in the documentation or interested in [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first.
@@ -159,8 +175,6 @@ To set up your environment to develop this theme, run `bundle install`.
To test the theme, run `bundle exec rake preview` and open your browser at `http://localhost:4000/test/`. This starts a Jekyll server using content in the `test/` directory. As modifications are made to the theme and test site, it will regenerate and you should see the changes in the browser after a refresh.
---
## Credits
### Creator
@@ -173,7 +187,7 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http
### Icons + Demo Images:
- [The Noun Project](https://thenounproject.com) -- Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam)
- [The Noun Project](https://thenounproject.com) - Garrett Knoll, Arthur Shlain, and [tracy tam](https://thenounproject.com/tracytam)
- [Font Awesome](http://fontawesome.io/)
- [Unsplash](https://unsplash.com/)
@@ -190,14 +204,13 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http
- [Gumshoe](https://github.com/cferdinandi/gumshoe)
- [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/)
- [Lunr](http://lunrjs.com)
---
- [Clipboard.js](https://clipboardjs.com)
## License
The MIT License (MIT)
Copyright (c) 2013-2020 Michael Rose and contributors
Copyright (c) 2013-2024 Michael Rose and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -249,7 +262,7 @@ Smooth Scroll is distributed under the terms of the [MIT License](http://opensou
Minimal Mistakes incorporates [Gumshoejs](http://github.com/cferdinandi/gumshoe),
Copyright (c) 2019 Chris Ferdinandi.
Smooth Scroll is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT).
Gumshoejs is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT).
Minimal Mistakes incorporates [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/),
Copyright (c) 2010 "Cowboy" Ben Alman.
@@ -270,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).
+130 -2
View File
@@ -1,6 +1,15 @@
require "bundler/gem_tasks"
require "jekyll"
require "json"
require "listen"
require "rake/clean"
require "shellwords"
require "time"
require "yaml"
task :default => %i[copyright changelog js version]
package_json = JSON.parse(File.read("package.json"))
def listen_ignore_paths(base, options)
[
@@ -65,8 +74,7 @@ task :preview do
puts " Halting auto-regeneration."
exit 0
end
loop { sleep 1000 }
sleep
end
rescue ThreadError
# You pressed Ctrl-C, oh my!
@@ -74,3 +82,123 @@ task :preview do
Jekyll::Commands::Serve.process(options)
end
task :history => :changelog
task :changelog => "docs/_docs/18-history.md"
file "docs/_docs/18-history.md" => "CHANGELOG.md" do |t|
front_matter = {
title: "History",
classes: "wide",
permalink: "/docs/history/",
excerpt: "Change log of enhancements and bug fixes made to the theme.",
sidebar: {
nav: "docs",
},
last_modified_at: Time.now.iso8601,
toc: false,
}
# https://stackoverflow.com/a/49553523/5958455
front_matter = JSON.parse(JSON.dump(front_matter))
File.open(t.name, "w") do |f|
f.puts front_matter.to_yaml
f.puts "---"
f.puts ""
f.puts "<!--\n Sourced from CHANGELOG.md\n See Rakefile `task :changelog` for details\n-->"
f.puts ""
f.puts "{% raw %}"
# Remove H1
changelog = File.read(t.prerequisites.first).gsub(/^# [^\n]*$/m, "").strip
f.write changelog
f.puts ""
f.puts "{% endraw %}"
end
end
COPYRIGHT_LINES = [
"Minimal Mistakes Jekyll Theme #{package_json["version"]} by Michael Rose",
"Copyright 2013-#{Time.now.year} Michael Rose - mademistakes.com | @mmistakes",
"Free for personal and commercial use under the MIT license",
"https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE",
]
COPYRIGHT_FILES = [
"_includes/copyright.html",
"_includes/copyright.js",
"_sass/minimal-mistakes/_copyright.scss",
]
def genenerate_copyright_file(filename, header, prefix, footer)
File.open(filename, "w") do |f|
f.puts header
COPYRIGHT_LINES.each do |line|
f.puts "#{prefix}#{line}"
end
f.puts footer
end
end
file "_includes/copyright.html" => "package.json" do |t|
genenerate_copyright_file(t.name, "<!--", " ", "-->")
end
file "_includes/copyright.js" => "package.json" do |t|
genenerate_copyright_file(t.name, "/*!", " * ", " */")
end
file "_sass/minimal-mistakes/_copyright.scss" => "package.json" do |t|
genenerate_copyright_file(t.name, "/*!", " * ", " */")
end
task :copyright => COPYRIGHT_FILES
CLEAN.include(*COPYRIGHT_FILES)
JS_FILES = ["assets/js/vendor/jquery/jquery-3.6.0.js"] + Dir.glob("assets/js/plugins/*.js") + ["assets/js/_main.js"]
JS_TARGET = "assets/js/main.min.js"
task :js => JS_TARGET
file JS_TARGET => ["_includes/copyright.js"] + JS_FILES do |t|
sh Shellwords.join(%w[npx uglifyjs -c --comments /@mmistakes/ --source-map -m -o] +
[t.name] + t.prerequisites)
end
task :watch_js do
listener = Listen.to(
"assets/js",
ignore: /main\.min\.js$/,
) do |modified, added, removed|
Rake::Task[:js].invoke
end
trap("INT") do
listener.stop
exit 0
end
begin
listener.start
sleep
rescue ThreadError
end
end
task :version => ["docs/_data/theme.yml", "README.md", "docs/_pages/home.md"]
file "docs/_data/theme.yml" => "package.json" do |t|
theme = { "version" => package_json["version"] }
File.open(t.name, "w") do |f|
f.puts "# for use with in-page templates"
f.puts theme.to_yaml
end
end
file "README.md" => "package.json" do |t|
content = File.read(t.name)
content = content.gsub(/(mmistakes\/minimal-mistakes@)[\d.]+/, '\1' + package_json["version"])
File.write(t.name, content)
end
file "docs/_pages/home.md" => "package.json" do |t|
content = File.read(t.name)
content = content.gsub(/(\breleases\/tag\/|Latest release v)[\d.]+/, '\1' + package_json["version"])
File.write(t.name, content)
end
+45 -3
View File
@@ -29,8 +29,11 @@ logo : # path of logo image to display in the masthead, e.g.
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
# breadcrumbs : false # true, false (default)
words_per_minute : 200
enable_copy_code_button : # true, false (default)
copyright : # "copyright" name, defaults to site.title
copyright_url : # "copyright" URL, defaults to site.url
comments:
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom"
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom"
disqus:
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
discourse:
@@ -43,6 +46,18 @@ comments:
utterances:
theme : # "github-light" (default), "github-dark"
issue_term : # "pathname" (default)
giscus:
repo_id : # Shown during giscus setup at https://giscus.app
category_name : # Full text name of the category
category_id : # Shown during giscus setup at https://giscus.app
discussion_term : # "pathname" (default), "url", "title", "og:title"
reactions_enabled : # '1' for enabled (default), '0' for disabled
theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
strict : # 1 for enabled, 0 for disabled (default)
input_position : # "top", "bottom" # The comment input box will be placed above or below the comments
emit_metadata : # 1 for enabled, 0 for disabled (default) # https://github.com/giscus/giscus/blob/main/ADVANCED-USAGE.md#imetadatamessage
lang : # "en" (default)
lazy : # true, false # Loading of the comments will be deferred until the user scrolls near the comments container.
staticman:
branch : # "master"
endpoint : # "https://{your Staticman v3 API}/v3/entry/github/"
@@ -55,6 +70,8 @@ atom_feed:
search : # true, false (default)
search_full_content : # true, false (default)
search_provider : # lunr (default), algolia, google
lunr:
search_within_pages : # true, false (default)
algolia:
application_id : # YOUR_APPLICATION_ID
index_name : # YOUR_INDEX_NAME
@@ -66,8 +83,9 @@ google:
# SEO Related
google_site_verification :
bing_site_verification :
yandex_site_verification :
naver_site_verification :
yandex_site_verification :
baidu_site_verification :
# Social Sharing
twitter:
@@ -208,9 +226,33 @@ sass:
# Outputting
permalink: /:categories/:title/
timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Pagination with jekyll-paginate
paginate: 5 # amount of posts to show
paginate_path: /page:num/
timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Pagination with jekyll-paginate-v2
# See https://github.com/sverrirs/jekyll-paginate-v2/blob/master/README-GENERATOR.md#site-configuration
# for configuration details
pagination:
# Set enabled to true to use paginate v2
# enabled: true
debug: false
collection: 'posts'
per_page: 10
permalink: '/page/:num/'
title: ':title - page :num'
limit: 0
sort_field: 'date'
sort_reverse: true
category: 'posts'
tag: ''
locale: ''
trail:
before: 2
after: 2
# Plugins (previously gems:)
+262 -40
View File
@@ -272,20 +272,20 @@ pt-PT:
<<: *DEFAULT_PT
# Brazilian Portuguese
pt-BR:
skip_links :
skip_primary_nav :
skip_content :
skip_footer :
skip_links : "Pular links"
skip_primary_nav : "Pular para navegação primária"
skip_content : "Pular para conteúdo"
skip_footer : "Pular para rodapé"
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Próxima"
breadcrumb_home_label : "Home"
breadcrumb_home_label : "Início"
breadcrumb_separator : "/"
menu_label :
search_label : "Buscar"
menu_label : "Chavear menu"
search_label : "Chavear busca"
toc_label : "Nesta página"
ext_link_label : "Link direto"
less_than : "menos que"
less_than : "menos de"
minute_read : "minuto(s) de leitura"
share_on_label : "Compartilhe"
meta_label :
@@ -296,13 +296,13 @@ pt-BR:
comments_title : "Comentários"
more_label : "Saiba mais"
related_label : "Talvez você também goste"
follow_label : "Acompanhe no"
follow_label : "Siga:"
feed_label : "Feed"
powered_by : "Desenvolvido com"
website_label : "Site"
email_label : "E-mail"
recent_posts : "Publicações recentes"
undefined_wpm : "Parâmetro words_per_minute indefinido no _config.yml"
undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
comment_form_info : "Seu e-mail não será publicado. Os campos obrigatórios estão marcados"
comment_form_comment_label : "Comentário"
comment_form_md_info : "Você pode usar Markdown."
@@ -314,9 +314,9 @@ pt-BR:
comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado."
comment_error_msg : "Desculpe, ocorreu um erro no envio. Verifique se todos os campos obrigatórios foram preenchidos e tente novamente."
loading_label : "Carregando..."
search_label_text :
search_placeholder_text : "Pesquisar..."
search_algolia_no_results :
search_label_text : "Digite seu termo de busca..."
search_placeholder_text : "Digite seu termo de busca..."
search_algolia_no_results : "Nenhum resultado"
results_found : "Resultado(s) encontrado(s)"
back_to_top : "Voltar para o topo"
@@ -496,7 +496,7 @@ de: &DEFAULT_DE
toc_label : "Auf dieser Seite"
ext_link_label : "Direkter Link"
less_than : "weniger als"
minute_read : "Minuten zum lesen"
minute_read : "Minuten zum Lesen"
share_on_label : "Teilen auf"
meta_label :
tags_label : "Tags:"
@@ -1018,16 +1018,16 @@ vi-VN:
# ------
da: &DEFAULT_DA
skip_links :
skip_primary_nav :
skip_content :
skip_footer :
skip_primary_nav : "Gå til hovedmenuen"
skip_content : "Gå til indholdet"
skip_footer : "Gå til sidefoden"
page : "Side"
pagination_previous : "Forrige"
pagination_next : "Næste"
breadcrumb_home_label : "Home"
breadcrumb_home_label : "Forside"
breadcrumb_separator : "/"
menu_label : "Vis/skjul menu"
search_label :
search_label : "Søgning til/fra"
toc_label : "På denne side"
ext_link_label : "Direkte link"
less_than : "mindre end"
@@ -1059,9 +1059,9 @@ da: &DEFAULT_DA
comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt."
comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt."
loading_label : "Indlæser..."
search_label_text :
search_label_text : "Hvad leder du efter..."
search_placeholder_text : "Hvad leder du efter..."
search_algolia_no_results :
search_algolia_no_results : "Ingen resultater"
results_found : "Resultat(er) fundet"
back_to_top : "Tilbage til toppen"
da-DK:
@@ -1112,8 +1112,11 @@ pl: &DEFAULT_PL
comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji."
comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie."
loading_label : "Trwa ładowanie strony..."
search_label_text :
search_label_text : "Wprowadź kryteria wyszukiwania..."
search_placeholder_text : "Wprowadź kryteria wyszukiwania..."
search_algolia_no_results : "Brak wyników"
results_found : "Znalezione wyniki"
back_to_top : "Wróć na górę"
pl-PL:
<<: *DEFAULT_PL
@@ -1697,9 +1700,9 @@ ga-IE:
# -----------------
fi: &DEFAULT_FI
skip_links : "Ohita linkit"
skip_primary_nav : "Hyppää pää navigaatioon"
skip_content : "Hyppää sisältöön"
skip_footer : "Hyppää alareunaan"
skip_primary_nav : "Siirry päävalikkoon"
skip_content : "Siirry sisältöön"
skip_footer : "Siirry alareunaan"
page : "Sivu"
pagination_previous : "Edellinen"
pagination_next : "Seuraava"
@@ -1710,39 +1713,39 @@ fi: &DEFAULT_FI
toc_label : "Tällä sivulla"
ext_link_label : "Suora linkki"
less_than : "vähemmän kuin"
minute_read : "lukuaika"
minute_read : "minuuttia luettavaa"
share_on_label : "Jaa"
meta_label :
tags_label : "Tagit:"
tags_label : "Tunnisteet:"
categories_label : "Kategoriat:"
date_label : "Päivitetty:"
comments_label : "Jätä kommentti"
comments_title : "Kommentit"
more_label : "Lisää"
related_label : "Voit olla kiinnostunut myös"
related_label : "Saatat olla kiinnostunut myös"
follow_label : "Seuraa:"
feed_label : "Syöte"
powered_by : "Voimanlähteenä"
website_label : "Websivu"
email_label : "Email"
recent_posts : "Viimeisimmät postaukset"
powered_by : "Käyttäen"
website_label : "Kotisivu"
email_label : "Sähköposti"
recent_posts : "Viimeisimmät kirjoitukset"
undefined_wpm : "words_per_minute asetusta ei ole määritelty _config.yml tiedostossa"
comment_form_info : "Your email address will not be published. Required fields are marked"
comment_form_info : "Sinun sähköpostiosoitetta ei julkaista. Vaaditut kentät ovat merkittyjä"
comment_form_comment_label : "Kommentti"
comment_form_md_info : "Tukee markdown muotoilua."
comment_form_name_label : "Nimi"
comment_form_email_label : "Email osoite"
comment_form_website_label : "Webbisivu (vapaaehtoinen)"
comment_form_email_label : "Sähköpostiosoite"
comment_form_website_label : "Nettisivu (vapaaehtoinen)"
comment_btn_submit : "Lähetä"
comment_btn_submitted : "Lähetetty"
comment_success_msg : "Kiitos kommentista, se julkaistaan tällä sivulla moderoinnin jälkeen."
comment_error_msg : "Tarkista että olet täyttänyt kaikki kentät ja yritä uudelleen."
comment_success_msg : "Kiitos kommentista, se julkaistaan tällä sivulla tarkastelun jälkeen."
comment_error_msg : "Tapahtui virhe. Tarkista, että olet täyttänyt kaikki kentät ja yritä uudelleen."
loading_label : "Ladataan..."
search_label_text : "Hakusana..."
search_placeholder_text : "Hakusana..."
search_algolia_no_results :
search_algolia_no_results : "Ei hakutuloksia"
results_found : "Tulosta"
back_to_top : "Ylös"
back_to_top : "Siirry ylös"
# Myanmar (Burmese)
# -----------------
@@ -1905,6 +1908,225 @@ he: &DEFAULT_HE
he-IL:
<<: *DEFAULT_HE
# Arabic (عربي)
# --------------
ar: &DEFAULT_AR
skip_links : "تخطي الروابط"
skip_primary_nav : "تخطى الى شريط التنقل"
skip_content : "الانتقال الى المحتوى"
skip_footer : "الانتقال الى ذيل الصفحة"
page : "صفحه"
pagination_previous : "قبل"
pagination_next : "بعد"
breadcrumb_home_label : "الرئيس"
breadcrumb_separator : "/"
menu_label : "الخيارات"
search_label : "البحث"
toc_label : "على هذه الصفحة"
ext_link_label : "رابط مباشر"
less_than : "اقل من"
minute_read : "دقيقة قرائية"
share_on_label : "مشاركة"
meta_label :
tags_label : "العلامات الوصفية:"
categories_label : "الفئات:"
date_label : "تم التحديث:"
comments_label : "اترك تعليق"
comments_title : "التعليقات"
more_label : "اقرأ المزيد"
related_label : "قد يعجبك أيضا"
follow_label : "تابع:"
feed_label : "الاخبار - RSS"
powered_by : "تم تطوير بواسطة"
website_label : "موقع"
email_label : "ايميل"
recent_posts : "المشاركات الأخيرة"
undefined_wpm : "معامل غير معرف في words_per_minute (كلمة في الدقيقة) في ملف _config.yml"
comment_form_info : "لن يتم نشر عنوان بريدك الإلكتروني. الحقول المطلوبة إلزامية"
comment_form_comment_label : "تعليق"
comment_form_md_info : "لغة ال Markdown مدعومة."
comment_form_name_label : "الاسم"
comment_form_email_label : "البريد الالكتروني"
comment_form_website_label : "الموقع (اختياري)"
comment_btn_submit : "أضف تعليق"
comment_btn_submitted : "تم الإرسال"
comment_success_msg : "شكراً على التعليق! سيتم اظهاره عندما يتم موافقة عليه."
comment_error_msg : "للأسف, هناك خطأ في المحاولة. الرجاء الحرص على تعبئة جميع الخانات و محاولة مجدداً."
loading_label : "جاري التحميل..."
search_label_text : "اكتب مصطلح للبحث..."
search_placeholder_text : "اكتب مصطلح للبحث..."
search_algolia_no_results : "لا توجد نتائج"
results_found : "تم إيجاد نتيجة"
back_to_top : "الانتقال الى الأعلى"
ar-SD:
<<: *DEFAULT_AR
ar-SA:
<<: *DEFAULT_AR
ar-AE:
<<: *DEFAULT_AR
ar-EG:
<<: *DEFAULT_AR
# Kiswahili
# -----------------
sw: &DEFAULT_SW
skip_links : "Ruka viungo"
skip_primary_nav : "Ruka orodha kuu"
skip_content : "Ruka maandiko maakuu"
skip_footer : "Ruka chini"
page : "Ukurasa"
pagination_previous : "Rudi"
pagination_next : "Endelea"
breadcrumb_home_label : "Ukurasa wa kwanza"
breadcrumb_separator : "/"
menu_label : "Wezesha/Zima orodha"
search_label : "Wezesha/Zima kutafuta"
toc_label : "Kwa ukurasa huu"
ext_link_label : "Kiungo mbio"
less_than : "Soma kwa dakikia ndogo kuliko"
minute_read : "Soma kwa dakika"
share_on_label : "Tangaza"
meta_label :
tags_label : "Alama:"
categories_label : "Aina:"
date_label : "Geuzi ya mwisho:"
comments_label : "Wacha maoni"
comments_title : "Maoni"
more_label : "Jifunze zaidi"
related_label : "Pia, utapenda"
follow_label : "Fuata:"
feed_label : "Feed"
powered_by : "Inatumia"
website_label : "Tovuti"
email_label : "Barua pepe"
recent_posts : "Makala juzi"
undefined_wpm : "Ingizo words_per_minute kwa _config.yml haijawekwa"
comment_form_info : "Barua pepe yako haitaonekana. Kuna alama kwa ingizo tunahitaji."
comment_form_comment_label : "Maoni"
comment_form_md_info : "Unaweza kutumia `Markdown`."
comment_form_name_label : "Jina"
comment_form_email_label : "Barua pepe"
comment_form_website_label : "Tovuti (hiari)"
comment_btn_submit : "Tuma maoni"
comment_btn_submitted : "Umetuma"
comment_success_msg : "Asante kwa maoni yako! Itaonekana ikiridhiwa."
comment_error_msg : "Pole, kuna makosa kwa ingizo yako. Tafadhali angalia umeandika kwa ingizo zote zinahitaji, na jaribu tena."
loading_label : "Inapakiwa..."
search_label_text : "Ingiza neno unatafuta..."
search_placeholder_text : "Ingiza neno unatafuta..."
search_algolia_no_results : "Hakuna matokeo"
results_found : "Tumepata"
back_to_top : "Rudi juu"
sw-KE:
<<: *DEFAULT_SW
sw-TZ:
<<: *DEFAULT_SW
# Ukrainian / Українська
# -----------------
uk: &DEFAULT_UK
skip_links : "Посилання для переходу"
skip_primary_nav : "Перейти до основної навігації"
skip_content : "Перейти до змісту"
skip_footer : "Перейти до нижнього колонтитула"
page : "Сторінка"
pagination_previous : "Попередня"
pagination_next : "Наступна"
breadcrumb_home_label : "Головна"
breadcrumb_separator : "/"
menu_label : "Випадаюче меню"
search_label : "Пошук"
toc_label : "Зміст"
ext_link_label : "Пряме посилання"
less_than : "менше ніж"
minute_read : "хв. на чітання"
share_on_label : "Поділитися"
meta_label :
tags_label : "Мітки:"
categories_label : "Розділи:"
date_label : "Дата зміни:"
comments_label : "Залишити коментар"
comments_title : "Коментарі"
more_label : "Читати далі"
related_label : "Вам також може сподобатись"
follow_label : "Зв'язатися зі мною:"
feed_label : "RSS-стрічка"
powered_by : "Сайт працює на"
website_label : "Сайт"
email_label : "Электронна пошта"
recent_posts : "Останні записи"
undefined_wpm : "Не визначено параметр words_per_minute в _config.yml"
comment_form_info : "Вашу адресу електронної пошти не буде опубліковано. Обов'язкові поля позначені"
comment_form_comment_label : "Коментар"
comment_form_md_info : "Підтримується синтаксис Markdown."
comment_form_name_label : "Ім'я"
comment_form_email_label : "Електронна пошта"
comment_form_website_label : "Посилання на сайт (необов'язково)"
comment_btn_submit : "Залишити коментар"
comment_btn_submitted : "Відправлено"
comment_success_msg : "Дякую за Ваш коментар! Його буде опубліковано на сайті після перевірки."
comment_error_msg : "На жаль, сталася помилка з надсиланням коментаря. Будь ласка, переконайтеся, що всі обов'язкові поля заповнені та спробуйте знову."
loading_label : "Відправка..."
search_label_text : "Введіть пошуковий запит..."
search_placeholder_text : "Введіть пошуковий запит..."
search_algolia_no_results :
results_found : "Знайдено"
uk-UA:
<<: *DEFAULT_UK
# 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
# Another locale
# --------------
#
#
View File
+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
@@ -1,6 +1,6 @@
<!--
<li>
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link
</a>
</li>
+36 -42
View File
@@ -1,28 +1,22 @@
{% assign author = page.author | default: page.authors[0] | default: site.author %}
{% assign author = site.data.authors[author] | default: author %}
<div itemscope itemtype="https://schema.org/Person">
<div itemscope itemtype="https://schema.org/Person" class="h-card">
{% if author.avatar %}
<div class="author__avatar">
{% if author.home %}
<a href="{{ author.home | relative_url }}">
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
</a>
{% else %}
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
{% endif %}
<a href="{{ author.home | default: '/' | absolute_url }}">
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image" class="u-photo">
</a>
</div>
{% endif %}
<div class="author__content">
{% if author.home %}
<a href="{{ author.home | relative_url }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a>
{% else %}
<h3 class="author__name" itemprop="name">{{ author.name }}</h3>
{% endif %}
<h3 class="author__name p-name" itemprop="name">
<a class="u-url" rel="me" href="{{ author.home | default: '/' | absolute_url }}" itemprop="url">{{ author.name }}</a>
</h3>
{% if author.bio %}
<div class="author__bio" itemprop="description">
<div class="author__bio p-note" itemprop="description">
{{ author.bio | markdownify }}
</div>
{% endif %}
@@ -33,21 +27,21 @@
<ul class="author__urls social-icons">
{% if author.location %}
<li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place">
<i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span>
<i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name" class="p-locality">{{ author.location }}</span>
</li>
{% endif %}
{% if author.links %}
{% for link in author.links %}
{% if link.label and link.url %}
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li>
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer me"{% if link.url contains 'http' %} itemprop="sameAs"{% endif %}><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li>
{% endif %}
{% endfor %}
{% endif %}
{% if author.uri %}
<li>
<a href="{{ author.uri }}" itemprop="url">
<a href="{{ author.uri }}" itemprop="url" rel="me">
<i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].website_label | default: "Website" }}</span>
</a>
</li>
@@ -55,7 +49,7 @@
{% if author.email %}
<li>
<a href="mailto:{{ author.email }}">
<a href="mailto:{{ author.email }}" rel="me" class="u-email">
<meta itemprop="email" content="{{ author.email }}" />
<i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span>
</a>
@@ -64,15 +58,15 @@
{% if author.keybase %}
<li>
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<i class="fas fa-fw fa-key" aria-hidden="true"></i><span class="label">Keybase</span>
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-keybase" aria-hidden="true"></i><span class="label">Keybase</span>
</a>
</li>
{% endif %}
{% if author.twitter %}
<li>
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span>
</a>
</li>
@@ -80,7 +74,7 @@
{% if author.facebook %}
<li>
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i><span class="label">Facebook</span>
</a>
</li>
@@ -88,7 +82,7 @@
{% if author.linkedin %}
<li>
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">LinkedIn</span>
</a>
</li>
@@ -96,7 +90,7 @@
{% if author.xing %}
<li>
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-xing-square" aria-hidden="true"></i><span class="label">XING</span>
</a>
</li>
@@ -104,7 +98,7 @@
{% if author.instagram %}
<li>
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span>
</a>
</li>
@@ -112,7 +106,7 @@
{% if author.tumblr %}
<li>
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i><span class="label">Tumblr</span>
</a>
</li>
@@ -120,7 +114,7 @@
{% if author.bitbucket %}
<li>
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i><span class="label">Bitbucket</span>
</a>
</li>
@@ -128,7 +122,7 @@
{% if author.github %}
<li>
<a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span>
</a>
</li>
@@ -136,7 +130,7 @@
{% if author.gitlab %}
<li>
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-gitlab" aria-hidden="true"></i><span class="label">GitLab</span>
</a>
</li>
@@ -144,7 +138,7 @@
{% if author.stackoverflow %}
<li>
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i><span class="label">Stack Overflow</span>
</a>
</li>
@@ -152,7 +146,7 @@
{% if author.lastfm %}
<li>
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i><span class="label">Last.fm</span>
</a>
</li>
@@ -160,7 +154,7 @@
{% if author.dribbble %}
<li>
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-dribbble" aria-hidden="true"></i><span class="label">Dribbble</span>
</a>
</li>
@@ -168,7 +162,7 @@
{% if author.pinterest %}
<li>
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span>
</a>
</li>
@@ -176,7 +170,7 @@
{% if author.foursquare %}
<li>
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-foursquare" aria-hidden="true"></i><span class="label">Foursquare</span>
</a>
</li>
@@ -184,7 +178,7 @@
{% if author.steam %}
<li>
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-steam" aria-hidden="true"></i><span class="label">Steam</span>
</a>
</li>
@@ -193,13 +187,13 @@
{% if author.youtube %}
{% if author.youtube contains "://" %}
<li>
<a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
</a>
</li>
{% elsif author.youtube %}
<li>
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
</a>
</li>
@@ -208,7 +202,7 @@
{% if author.soundcloud %}
<li>
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">SoundCloud</span>
</a>
</li>
@@ -216,7 +210,7 @@
{% if author.weibo %}
<li>
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-weibo" aria-hidden="true"></i><span class="label">Weibo</span>
</a>
</li>
@@ -224,7 +218,7 @@
{% if author.flickr %}
<li>
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span>
</a>
</li>
@@ -232,7 +226,7 @@
{% if author.codepen %}
<li>
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-codepen" aria-hidden="true"></i><span class="label">CodePen</span>
</a>
</li>
@@ -240,7 +234,7 @@
{% if author.vine %}
<li>
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer me">
<i class="fab fa-fw fa-vine" aria-hidden="true"></i><span class="label">{{ site.data.ui-text[site.locale].email_label | default: "Email" }}</span>
</a>
</li>
View File
+4 -3
View File
@@ -19,17 +19,18 @@
{% for crumb in crumbs offset: 1 %}
{% if forloop.first %}
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
<a href="{{ '/' | relative_url }}" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
<meta itemprop="position" content="{{ i }}" />
</li>
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
{% 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">
<a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
<a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | url_decode | replace: '-', ' ' | capitalize }}</span></a>
<meta itemprop="position" content="{{ i }}" />
</li>
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
-3
View File
@@ -1,3 +0,0 @@
<!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
+1 -1
View File
@@ -12,7 +12,7 @@
<strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
<span itemprop="keywords">
{% for category_word in categories_sorted %}
<a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
<a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item p-category" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
{% endfor %}
</span>
</p>
+34
View File
@@ -0,0 +1,34 @@
<script>
'use strict';
(function () {
var commentContainer = document.querySelector('#giscus-comments');
if (!commentContainer) {
return;
}
var script = document.createElement('script');
script.setAttribute('src', 'https://giscus.app/client.js');
script.setAttribute('data-repo', '{{ site.repository | downcase }}');
script.setAttribute('data-repo-id', '{{ site.comments.giscus.repo_id }}');
script.setAttribute('data-category', '{{ site.comments.giscus.category_name }}');
script.setAttribute('data-category-id', '{{ site.comments.giscus.category_id }}');
script.setAttribute('data-mapping', '{{ site.comments.giscus.discussion_term | default: "pathname" }}');
script.setAttribute('data-strict', '{{ site.comments.giscus.strict | default: 0 }}');
script.setAttribute('data-reactions-enabled', '{{ site.comments.giscus.reactions_enabled | default: 1 }}');
script.setAttribute('data-emit-metadata', '{{ site.comments.giscus.emit_metadata | default: 0 }}');
script.setAttribute('data-input-position', '{{ site.comments.giscus.input_position | default: "top" }}');
script.setAttribute('data-theme', '{{ site.comments.giscus.theme | default: "light" }}');
script.setAttribute('data-lang', '{{ site.comments.giscus.lang | default: "en" }}');
{% if site.comments.giscus.lazy %}
script.setAttribute('data-loading', 'lazy');
{% endif %}
script.setAttribute('crossorigin', 'anonymous');
script.setAttribute('async', '');
commentContainer.appendChild(script);
})();
</script>
@@ -12,6 +12,8 @@
{% include /comments-providers/staticman_v2.html %}
{% when "utterances" %}
{% include /comments-providers/utterances.html %}
{% when "giscus" %}
{% include /comments-providers/giscus.html %}
{% when "custom" %}
{% include /comments-providers/custom_scripts.html %}
{% endcase %}
@@ -12,6 +12,7 @@
script.setAttribute('src', 'https://utteranc.es/client.js');
script.setAttribute('repo', '{{ site.repository }}');
script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}');
{% if site.comments.utterances.label %}script.setAttribute('label', '{{ site.comments.utterances.label }}');{% endif %}
script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}');
script.setAttribute('crossorigin', 'anonymous');
+34 -13
View File
@@ -17,14 +17,23 @@
<div class="js-comments">
{% if site.data.comments[page.slug] %}
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
{% assign comments = site.data.comments[page.slug] | sort %}
{% assign comments = site.data.comments[page.slug] %}
<!-- In order to sort by date we must have an array of objects, not an array of arrays, so
create a new array of plain comment objects and then sort by the comment date. -->
{% assign commentObjects = '' | split: '' %}
{% for comment in comments %}
{% assign commentObject = comment[1] %}
{% assign commentObjects = commentObjects | push: commentObject %}
{% endfor %}
{% assign comments = commentObjects | sort: "date" %}
{% for comment in comments %}
{% assign email = comment[1].email %}
{% assign name = comment[1].name %}
{% assign url = comment[1].url %}
{% assign date = comment[1].date %}
{% assign message = comment[1].message %}
{% assign email = comment.email %}
{% assign name = comment.name %}
{% assign url = comment.url %}
{% assign date = comment.date %}
{% assign message = comment.message %}
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
{% endfor %}
{% endif %}
@@ -35,7 +44,7 @@
<div class="page__comments-form">
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint | default: 'https://api.staticman.net/v2/entry/' }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments">
<form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments">
<div class="form__spinner">
<i class="fas fa-spinner fa-spin fa-3x fa-fw"></i>
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
@@ -91,14 +100,23 @@
<div class="js-comments">
{% if site.data.comments[page.slug] %}
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
{% assign comments = site.data.comments[page.slug] | sort %}
{% assign comments = site.data.comments[page.slug] %}
<!-- In order to sort by date we must have an array of objects, not an array of arrays, so
create a new array of plain comment objects and then sort by the comment date. -->
{% assign commentObjects = '' | split: '' %}
{% for comment in comments %}
{% assign commentObject = comment[1] %}
{% assign commentObjects = commentObjects | push: commentObject %}
{% endfor %}
{% assign comments = commentObjects | sort: "date" %}
{% for comment in comments %}
{% assign email = comment[1].email %}
{% assign name = comment[1].name %}
{% assign url = comment[1].url %}
{% assign date = comment[1].date %}
{% assign message = comment[1].message %}
{% assign email = comment.email %}
{% assign name = comment.name %}
{% assign url = comment.url %}
{% assign date = comment.date %}
{% assign message = comment.message %}
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
{% endfor %}
{% endif %}
@@ -153,6 +171,9 @@
{% when "utterances" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="utterances-comments"></section>
{% when "giscus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="giscus-comments"></section>
{% when "custom" %}
{% include /comments-providers/custom.html %}
{% endcase %}
+6
View File
@@ -0,0 +1,6 @@
<!--
Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose
Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
-->
+6
View File
@@ -0,0 +1,6 @@
/*!
* Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose
* Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
* Free for personal and commercial use under the MIT license
* https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
*/
+2 -4
View File
@@ -1,4 +1,4 @@
{% assign entries = site[include.collection] %}
{% assign entries = 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 %}
{%- endfor -%}
+2
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 %}">
{%- 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' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
<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>
+8 -19
View File
@@ -6,34 +6,23 @@
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
{% endunless %}
<!-- https://t.co/dKP3o1e -->
{%- comment %} https://docs.google.com/presentation/d/1rmxwWa9P6_xHqonmh5ONXRS-jPc5XKbnv99Rjkhe04s/present {% endcomment -%}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
<script type="text/javascript">
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
{% if site.enable_copy_code_button -%}
window.enable_copy_code_button = true;
{%- endif %}
</script>
<!-- For all browsers -->
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css">
<!--[if IE]>
<style>
/* old IE unsupported flexbox fixes */
.greedy-nav .site-title {
padding-right: 3em;
}
.greedy-nav button {
position: absolute;
top: 0;
right: 0;
height: 100%;
}
</style>
<![endif]-->
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript>
{% if site.head_scripts %}
{% for script in site.head_scripts %}
<script src="{{ script | relative_url }}"></script>
{% endfor %}
{% endif %}
{% endif %}
+7 -5
View File
@@ -5,7 +5,7 @@
<div class="masthead__menu">
<nav id="site-nav" class="greedy-nav">
{% unless logo_path == empty %}
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt=""></a>
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt="{{ site.masthead_title | default: site.title }}"></a>
{% endunless %}
<a class="site-title" href="{{ '/' | relative_url }}">
{{ site.masthead_title | default: site.title }}
@@ -14,16 +14,18 @@
<ul class="visible-links">
{%- for link in site.data.navigation.main -%}
<li class="masthead__menu-item">
<a href="{{ link.url | relative_url }}"{% if link.description %} title="{{ link.description }}"{% endif %}>{{ link.title }}</a>
<a
href="{{ link.url | relative_url }}"
{% if link.description %} title="{{ link.description }}"{% endif %}
{% if link.target %} target="{{ link.target }}"{% endif %}
>{{ link.title }}</a>
</li>
{%- endfor -%}
</ul>
{% if site.search == true %}
<button class="search__toggle" type="button">
<span class="visually-hidden">{{ site.data.ui-text[site.locale].search_label | default: "Toggle search" }}</span>
<svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16">
<path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path>
</svg>
<i class="fas fa-search"></i>
</button>
{% endif %}
<button class="greedy-nav__toggle hidden" type="button">
+18 -17
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>
+4 -3
View File
@@ -1,5 +1,6 @@
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
{% if page.last_modified_at %}
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: "%B %-d, %Y" }}</time></p>
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time class="dt-published" datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: date_format }}</time></p>
{% elsif page.date %}
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %-d, %Y" }}</time></p>
{% endif %}
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: date_format }}</time></p>
{% endif %}
+1 -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 -1
View File
@@ -5,7 +5,8 @@
{% assign date = document.date %}
<span class="page__meta-date">
<i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-calendar-alt" aria-hidden="true"></i>
<time datetime="{{ date | date_to_xmlschema }}">{{ date | date: "%B %-d, %Y" }}</time>
{% assign date_format = site.date_format | default: "%B %-d, %Y" %}
<time datetime="{{ date | date_to_xmlschema }}">{{ date | date: date_format }}</time>
</span>
{% endif %}
+11
View File
@@ -0,0 +1,11 @@
{% assign posts = include.posts | where_exp: "post", "post.hidden != true" %}
<div class="page__related">
{% include before-related.html %}
<h2 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h2>
<div class="grid__wrapper">
{% for post in posts limit:4 %}
{% if post.id == page.id %}{% continue %}{% endif %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
+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 -67
View File
@@ -1,69 +1,7 @@
{% if paginator.total_pages > 1 %}
<nav class="pagination">
{% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %}
<ul>
{% comment %} Link for previous page {% endcomment %}
{% if paginator.previous_page %}
{% if paginator.previous_page == 1 %}
<li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% else %}
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% endif %}
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
{% endif %}
{% comment %} First page {% endcomment %}
{% if paginator.page == 1 %}
<li><a href="#" class="disabled current">1</a></li>
{% else %}
<li><a href="{{ first_page_path }}">1</a></li>
{% endif %}
{% assign page_start = 2 %}
{% if paginator.page > 4 %}
{% assign page_start = paginator.page | minus: 2 %}
{% comment %} Ellipsis for truncated links {% endcomment %}
<li><a href="#" class="disabled">&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 -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>
+70 -49
View File
@@ -1,60 +1,81 @@
<!-- Including InstantSearch.js library and styling -->
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
<script>
// Instanciating InstantSearch.js with Algolia credentials
const search = instantsearch({
appId: '{{ site.algolia.application_id }}',
apiKey: '{{ site.algolia.search_only_api_key }}',
indexName: '{{ site.algolia.index_name }}',
searchParameters: {
restrictSearchableAttributes: [
'title',
'content'
]
}
});
// Including InstantSearch.js library and styling
const loadSearch = function() {
const loadCSS = function(src) {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = src;
link.media = 'all';
document.head.appendChild(link);
};
const hitTemplate = function(hit) {
const url = hit.url;
const title = hit._highlightResult.title.value;
const content = hit._highlightResult.html.value;
var script = document.createElement('script');
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js");
script.addEventListener("load", function() {
// Instantiating InstantSearch.js with Algolia credentials
const search = instantsearch({
appId: '{{ site.algolia.application_id }}',
apiKey: '{{ site.algolia.search_only_api_key }}',
indexName: '{{ site.algolia.index_name }}',
searchParameters: {
restrictSearchableAttributes: ['title', 'content']
}
});
return `
<div class="list__item">
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
<div class="archive__item-excerpt" itemprop="description">${content}</div>
</article>
</div>
`;
}
const hitTemplate = function(hit) {
const url = hit.url;
const hightlight = hit._highlightResult;
const title = hightlight.title && hightlight.title.value || "";
const content = hightlight.html && hightlight.html.value || "";
// Adding searchbar and results widgets
search.addWidget(
instantsearch.widgets.searchBox({
container: '.search-searchbar',
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
})
);
search.addWidget(
instantsearch.widgets.hits({
container: '.search-hits',
templates: {
item: hitTemplate,
empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
return `
<div class="list__item">
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
<div class="archive__item-excerpt" itemprop="description">${content}</div>
</article>
</div>
`;
}
})
);
// Adding searchbar and results widgets
search.addWidget(
instantsearch.widgets.searchBox({
container: '.search-searchbar',
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
})
);
search.addWidget(
instantsearch.widgets.hits({
container: '.search-hits',
templates: {
item: hitTemplate,
empty: '{{ site.data.ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
}
})
);
if (!search.started) {
search.start();
}
});
document.body.appendChild(script);
loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css");
loadCSS("https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css");
};
// Starting the search only when toggle is clicked
$(document).ready(function () {
$(document).ready(function() {
var scriptLoaded = false;
$(".search__toggle").on("click", function() {
if(!search.started) {
search.start();
if (!scriptLoaded) {
loadSearch();
scriptLoaded = true;
}
});
});
+2 -2
View File
@@ -2,7 +2,7 @@
{%- assign search_provider = site.search_provider | default: "lunr" -%}
{%- case search_provider -%}
{%- when "lunr" -%}
<form class="search-content__form" onkeydown="return event.key != 'Enter';">
<form class="search-content__form" onkeydown="return event.key != 'Enter';" role="search">
<label class="sr-only" for="search">
{{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
</label>
@@ -10,7 +10,7 @@
</form>
<div id="results" class="results"></div>
{%- when "google" -%}
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id" role="search">
<label class="sr-only" for="cse-search-input-box-id">
{{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
</label>
+18 -43
View File
@@ -1,24 +1,13 @@
<!-- begin _includes/seo.html -->
{%- if site.url -%}
{%- assign seo_url = site.url | append: site.baseurl -%}
{%- endif -%}
{%- assign seo_url = seo_url | default: site.github.url -%}
{%- assign title_separator = site.title_separator | default: '-' -%}
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '&#124;' %}
{%- assign page_title = page.title | default: site.title | replace: '|', '&#124;' -%}
{%- assign seo_title = page_title | append: " " | append: title_separator | append: " " | append: site.title | replace: '|', '&#124;' -%}
{%- if page.title -%}
{%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
{%- endif -%}
{%- assign page_title = page_title | markdownify | strip_html | strip_newlines | escape_once -%}
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
{%- if seo_title -%}
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
{%- endif -%}
{% if page.canonical_url %}
{%- assign canonical_url = page.canonical_url %}
{% else %}
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
{% endif %}
{%- assign canonical_url = page.canonical_url | default: page.url | replace: "/index.html", "/" | absolute_url %}
{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
{%- if seo_description -%}
@@ -32,14 +21,9 @@
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
{%- endif -%}
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url -%}
{%- assign page_large_image = page_large_image | escape -%}
{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url -%}
{%- assign page_teaser_image = page_teaser_image | escape -%}
{%- assign site_og_image = site.og_image | absolute_url -%}
{%- assign site_og_image = site_og_image | escape -%}
{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url | escape -%}
{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url | escape -%}
{%- assign site_og_image = site.og_image | absolute_url | escape -%}
{%- if page.date -%}
{%- assign og_type = "article" -%}
@@ -47,7 +31,7 @@
{%- assign og_type = "website" -%}
{%- endif -%}
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
<title>{{ seo_title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
<meta name="description" content="{{ seo_description }}">
{% if author.name %}
@@ -60,7 +44,7 @@
<meta property="og:type" content="{{ og_type }}">
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
<meta property="og:site_name" content="{{ site.title }}">
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
<meta property="og:title" content="{{ page_title }}">
<meta property="og:url" content="{{ canonical_url }}">
{% if seo_description %}
@@ -75,7 +59,7 @@
{% if site.twitter.username %}
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
<meta name="twitter:title" content="{{ page_title }}">
<meta name="twitter:description" content="{{ seo_description }}">
<meta name="twitter:url" content="{{ canonical_url }}">
@@ -121,21 +105,9 @@
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
{% endif %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
{% if site.social.type == "Organization" %}
"@type": "Organization",
"url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
"logo": {{ site_og_image | jsonify }}{% endif %}
{% else %}
"@type": "Person",
"name": {{ site.social.name | default: site.name | jsonify }},
"url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %},
"sameAs": {{ site.social.links | jsonify }}{% endif %}
{% endif %}
}
</script>
{% if page.url == '/' %}
{% include schema.html %}
{% endif %}
{% if site.google_site_verification %}
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
@@ -152,4 +124,7 @@
{% if site.naver_site_verification %}
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
{% endif %}
{% if site.baidu_site_verification %}
<meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}">
{% endif %}
<!-- end _includes/seo.html -->
-1
View File
@@ -1,5 +1,4 @@
<nav class="skip-links">
<h2 class="screen-reader-text">{{ site.data.ui-text[site.locale].skip_links | default: 'Skip links' }}</h2>
<ul>
<li><a href="#site-nav" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_primary_nav | default: 'Skip to primary navigation' }}</a></li>
<li><a href="#main" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_content | default: 'Skip to content' }}</a></li>
+1 -1
View File
@@ -7,5 +7,5 @@
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>
+1 -1
View File
@@ -12,7 +12,7 @@
<strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
<span itemprop="keywords">
{% for tag_word in tags_sorted %}
<a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
<a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item p-category" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
{% endfor %}
</span>
</p>
+13 -6
View File
@@ -24,7 +24,7 @@
OTHER DEALINGS IN THE SOFTWARE.
{% endcomment %}
{% comment %}
Version 1.1.0
Version 1.2.1
https://github.com/allejo/jekyll-toc
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
@@ -47,6 +47,7 @@
* base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
* anchor_class (string) : '' - add custom class(es) for each anchor element
* skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
* flat_toc (bool) : false - when set to true, the TOC will be a single level list
Output:
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
@@ -69,6 +70,7 @@
{% capture jekyll_toc %}{% endcapture %}
{% assign orderedList = include.ordered | default: false %}
{% assign flatToc = include.flat_toc | default: false %}
{% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
{% assign minHeader = include.h_min | default: 1 %}
@@ -138,9 +140,9 @@
{% capture listItem %}{{ anchorBody }}{% endcapture %}
{% endif %}
{% if currLevel > lastLevel %}
{% if currLevel > lastLevel and flatToc == false %}
{% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
{% elsif currLevel < lastLevel %}
{% elsif currLevel < lastLevel and flatToc == false %}
{% assign repeatCount = lastLevel | minus: currLevel %}
{% for i in (1..repeatCount) %}
@@ -158,8 +160,13 @@
{% assign firstHeader = false %}
{% endfor %}
{% assign repeatCount = minHeader | minus: 1 %}
{% assign repeatCount = lastLevel | minus: repeatCount %}
{% if flatToc == true %}
{% assign repeatCount = 1 %}
{% else %}
{% assign repeatCount = minHeader | minus: 1 %}
{% assign repeatCount = lastLevel | minus: repeatCount %}
{% endif %}
{% for i in (1..repeatCount) %}
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
{% endfor %}
@@ -179,4 +186,4 @@
{% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
{% endif %}
{% endif %}
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }}
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}}
+1 -1
View File
@@ -16,7 +16,7 @@
{% endcapture %}
{% assign video_src = video_src | strip %}
<!-- Courtesy of embedresponsively.com //-->
<!-- Courtesy of embedresponsively.com -->
{% unless video_src == "" %}
<div class="responsive-video-container">
<iframe src="{{ video_src }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen></iframe>
+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 | downcase }}" class="taxonomy__section">
<h2 class="archive__subtitle">{{ category[0] }}</h2>
<div class="entries-{{ entries_layout }}">
{% for post in category.last %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
</div>
<a href="#page-title" class="back-to-top">{{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} &uarr;</a>
</section>
{% endif %}
{% endfor %}
{% endfor %}
{% include posts-taxonomy.html taxonomies=site.categories %}
+3 -9
View File
@@ -2,13 +2,8 @@
---
<!doctype html>
<!--
Minimal Mistakes Jekyll Theme 4.22.0 by Michael Rose
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
-->
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
{% include copyright.html %}
<html lang="{{ site.locale | replace: "_", "-" | default: "en" }}" class="no-js">
<head>
{% include head.html %}
{% include head/custom.html %}
@@ -16,11 +11,11 @@
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
{% include_cached skip-links.html %}
{% include_cached browser-upgrade.html %}
{% include_cached masthead.html %}
<div class="initial-content">
{{ content }}
{% include after-content.html %}
</div>
{% if site.search == true %}
@@ -37,6 +32,5 @@
</div>
{% include scripts.html %}
</body>
</html>
+3 -3
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 }}
@@ -25,11 +25,11 @@ layout: default
{%- assign search_provider = site.search_provider | default: "lunr" -%}
{%- case search_provider -%}
{%- when "lunr" -%}
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
<input type="text" id="search" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
<div id="results" class="results"></div>
{%- when "google" -%}
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
<input type="text" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
<input type="text" id="cse-search-input-box-id" class="search-input" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
</form>
<div id="results" class="results">
<gcse:searchresults-only></gcse:searchresults-only>
+14 -23
View File
@@ -8,7 +8,11 @@ layout: default
{% include page__hero_video.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% assign breadcrumbs_enabled = site.breadcrumbs %}
{% if page.breadcrumbs != null %}
{% assign breadcrumbs_enabled = page.breadcrumbs %}
{% endif %}
{% if page.url != "/" and breadcrumbs_enabled %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
@@ -17,8 +21,8 @@ layout: default
<div id="main" role="main">
{% include sidebar.html %}
<article class="page" itemscope itemtype="https://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
<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 %}
@@ -26,7 +30,11 @@ layout: default
<div class="page__inner-wrap">
{% unless page.header.overlay_color or page.header.overlay_image %}
<header>
{% if page.title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
{% if page.title -%}
<h1 id="page-title" class="page__title" itemprop="headline">
<a href="{{ page.url | absolute_url }}" itemprop="url">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</a>
</h1>
{%- endif %}
{% include page__meta.html %}
</header>
{% endunless %}
@@ -64,26 +72,9 @@ layout: default
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
{% if page.id and page.related and site.related_posts.size > 0 %}
<div class="page__related">
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper">
{% for post in site.related_posts limit:4 %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% include page__related.html posts=site.related_posts %}
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
{% elsif page.id and page.related %}
<div class="page__related">
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper">
{% for post in site.posts limit:4 %}
{% if post.id == page.id %}
{% continue %}
{% endif %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% include page__related.html posts=site.posts %}
{% endif %}
</div>
+1 -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 %}
+2 -5
View File
@@ -1,8 +1,5 @@
/*!
* Minimal Mistakes Jekyll Theme 4.22.0 by Michael Rose
* Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
* Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE)
*/
/* Copyright comment */
@import "minimal-mistakes/copyright";
/* Variables */
@import "minimal-mistakes/variables";
-18
View File
@@ -160,24 +160,6 @@ pre {
overflow-x: auto; /* add scrollbars to wide code blocks*/
}
p > code,
a > code,
li > code,
figcaption > code,
td > code {
padding-top: 0.1rem;
padding-bottom: 0.1rem;
font-size: 0.8em;
background: $code-background-color;
border-radius: $border-radius;
&:before,
&:after {
letter-spacing: -0.2em;
content: "\00a0"; /* non-breaking space*/
}
}
/* horizontal rule */
hr {
+6
View File
@@ -0,0 +1,6 @@
/*!
* Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose
* Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
* Free for personal and commercial use under the MIT license
* https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
*/
-34
View File
@@ -357,37 +357,3 @@ select:focus {
left: 50%;
z-index: 11;
}
/*
Google search form
========================================================================== */
#goog-fixurl {
ul {
list-style: none;
margin-left: 0;
padding-left: 0;
li {
list-style-type: none;
}
}
}
#goog-wm-qt {
width: auto;
margin-right: 10px;
margin-bottom: 20px;
padding: 8px 20px;
display: inline-block;
font-size: $type-size-6;
background-color: #fff;
color: #000;
border-width: 2px !important;
border-style: solid !important;
border-color: $border-color;
border-radius: $border-radius;
}
#goog-wm-sb {
@extend .btn;
}
+2 -2
View File
@@ -200,8 +200,8 @@
margin-left: 0;
}
}
img{
img {
-webkit-transition: none;
transition: none;
}
+9 -5
View File
@@ -13,11 +13,11 @@
@mixin notice($notice-color) {
margin: 2em 0 !important; /* override*/
padding: 1em;
color: $dark-gray;
color: $text-color;
font-family: $global-font-family;
font-size: $type-size-6 !important;
text-indent: initial; /* override*/
background-color: mix(#fff, $notice-color, 90%);
background-color: mix($background-color, $notice-color, $notice-background-mix);
border-radius: $border-radius;
box-shadow: 0 1px 1px rgba($notice-color, 0.25);
@@ -46,15 +46,19 @@
}
a {
color: $notice-color;
color: mix(#000, $notice-color, 10%);
&:hover {
color: mix(#000, $notice-color, 40%);
color: mix(#000, $notice-color, 50%);
}
}
@at-root #{selector-unify(&, "blockquote")} {
border-left-color: mix(#000, $notice-color, 10%);
}
code {
background-color: mix(#fff, $notice-color, 95%)
background-color: mix($background-color, $notice-color, $code-notice-background-mix)
}
pre code {
+19
View File
@@ -72,6 +72,11 @@ body {
margin-top: 0;
line-height: 1;
a {
color: $text-color;
text-decoration: none;
}
& + .page__meta {
margin-top: -0.5em;
}
@@ -134,6 +139,20 @@ body {
}
}
:not(pre) > code {
padding-top: 0.1rem;
padding-bottom: 0.1rem;
font-size: 0.8em;
background: $code-background-color;
border-radius: $border-radius;
&::before,
&::after {
letter-spacing: -0.2em;
content: "\00a0"; /* non-breaking space*/
}
}
dt {
margin-top: 1em;
font-family: $sans-serif;
+7
View File
@@ -89,6 +89,13 @@
position: sticky;
top: 2em;
float: right;
.toc {
.toc__menu {
overflow-y: auto;
max-height: calc(100vh - 7em);
}
}
}
}
+103 -112
View File
@@ -211,118 +211,35 @@ body:hover .visually-hidden button {
color: $text-color;
}
.fa-behance,
.fa-behance-square {
color: $behance-color;
}
.fa-bitbucket {
color: $bitbucket-color;
}
.fa-dribbble,
.fa-dribble-square {
color: $dribbble-color;
}
.fa-facebook,
.fa-facebook-square,
.fa-facebook-f {
color: $facebook-color;
}
.fa-flickr {
color: $flickr-color;
}
.fa-foursquare {
color: $foursquare-color;
}
.fa-github,
.fa-github-alt,
.fa-github-square {
color: $github-color;
}
.fa-gitlab {
color: $gitlab-color;
}
.fa-instagram {
color: $instagram-color;
}
.fa-keybase {
color: $keybase-color;
}
.fa-lastfm,
.fa-lastfm-square {
color: $lastfm-color;
}
.fa-linkedin,
.fa-linkedin-in {
color: $linkedin-color;
}
.fa-mastodon,
.fa-mastodon-square {
color: $mastodon-color;
}
.fa-pinterest,
.fa-pinterest-p,
.fa-pinterest-square {
color: $pinterest-color;
}
.fa-reddit {
color: $reddit-color;
}
.fa-rss,
.fa-rss-square {
color: $rss-color;
}
.fa-soundcloud {
color: $soundcloud-color;
}
.fa-stack-exchange,
.fa-stack-overflow {
color: $stackoverflow-color;
}
.fa-tumblr,
.fa-tumblr-square {
color: $tumblr-color;
}
.fa-twitter,
.fa-twitter-square {
color: $twitter-color;
}
.fa-vimeo,
.fa-vimeo-square,
.fa-vimeo-v {
color: $vimeo-color;
}
.fa-vine {
color: $vine-color;
}
.fa-youtube {
color: $youtube-color;
}
.fa-xing,
.fa-xing-square {
color: $xing-color;
@each $color, $icons in (
$behance-color: ".fa-behance, .fa-behance-square",
$bitbucket-color: ".fa-bitbucket",
$dribbble-color: ".fa-dribbble, .fa-dribbble-square",
$facebook-color: ".fa-facebook, .fa-facebook-square, .fa-facebook-f",
$flickr-color: ".fa-flickr",
$foursquare-color: ".fa-foursquare",
$github-color: ".fa-github, .fa-github-alt, .fa-github-square",
$gitlab-color: ".fa-gitlab",
$instagram-color: ".fa-instagram",
$keybase-color: ".fa-keybase",
$lastfm-color: ".fa-lastfm, .fa-lastfm-square",
$linkedin-color: ".fa-linkedin, .fa-linkedin-in",
$mastodon-color: ".fa-mastodon, .fa-mastodon-square",
$pinterest-color: ".fa-pinterest, .fa-pinterest-p, .fa-pinterest-square",
$reddit-color: ".fa-reddit",
$rss-color: ".fa-rss, .fa-rss-square",
$soundcloud-color: ".fa-soundcloud",
$stackoverflow-color: ".fa-stack-exchange, .fa-stack-overflow",
$tumblr-color: ".fa-tumblr, .fa-tumblr-square",
$twitter-color: ".fa-twitter, .fa-twitter-square",
$vimeo-color: ".fa-vimeo, .fa-vimeo-square, .fa-vimeo-v",
$vine-color: ".fa-vine",
$xing-color: ".fa-xing, .fa-xing-square",
$youtube-color: ".fa-youtube",
) {
#{$icons} {
color: $color;
}
}
}
@@ -591,3 +508,77 @@ a.reversefootnote {
position: static;
}
}
/*
Copy <pre> block to clipboard
========================================================================== */
// a <textarea> to hold text for document.execCommand("copy")
.clipboard-helper {
// Prevent zooming on iOS
font-size: 12pt !important;
border: 0 !important;
padding: 0 !important;
margin: 0 !important;
outline: none !important;
position: absolute;
}
pre {
&.highlight .clipboard-copy-button {
color: #ffffca;
}
.clipboard-copy-button {
display: block;
position: absolute;
top: 0.6em;
right: 0.5em;
width: 1.8em;
height: 1.5em;
z-index: 1;
background: none;
border: none;
outline: none;
border-radius: 0.1em;
padding: 0.2em 0.5em;
opacity: 0.4;
transition: color 0.25s linear -0.25s, opacity 0.25s linear;
&::before {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 2;
}
i {
position: absolute;
top: 0.25em;
right: 0.25em;
&.copied {
opacity: 0;
}
}
&.copied i {
opacity: 0;
&.copied {
opacity: 1;
}
}
@at-root {
.no-copy & {
display: none;
}
}
}
&:hover .clipboard-copy-button {
opacity: 1;
}
}
+4
View File
@@ -118,6 +118,10 @@ $masthead-link-color: $primary-color !default;
$masthead-link-color-hover: mix(#000, $primary-color, 25%) !default;
$navicon-link-color-hover: mix(#fff, $primary-color, 75%) !default;
/* notices */
$notice-background-mix: 80% !default;
$code-notice-background-mix: 90% !default;
/* syntax highlighting (base16) */
$base00: #263238 !default;
$base01: #2e3c43 !default;
+5 -1
View File
@@ -27,4 +27,8 @@ $link-color : $info-color !default;
$link-color-hover : mix(#000, $link-color, 25%) !default;
$link-color-visited : mix(#fff, $link-color, 25%) !default;
$masthead-link-color : $primary-color !default;
$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default;
$masthead-link-color-hover : mix(#000, $primary-color, 25%) !default;
/* notices */
$notice-background-mix: 90% !default;
$code-notice-background-mix: 95% !default;
+1 -1
View File
@@ -27,4 +27,4 @@ $navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
.ais-search-box .ais-search-box--input {
background-color: $form-background-color;
}
}
+4
View File
@@ -18,6 +18,10 @@ $masthead-link-color: $text-color !default;
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
/* notices */
$notice-background-mix: 90% !default;
$code-notice-background-mix: 95% !default;
/* neon syntax highlighting (base16) */
$base00: #ffffff !default;
$base01: #e0e0e0 !default;
+4
View File
@@ -18,6 +18,10 @@ $masthead-link-color: $text-color !default;
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
/* notices */
$notice-background-mix: 70% !default;
$code-notice-background-mix: 80% !default;
/* plum syntax highlighting (base16) */
$base00: #ffffff !default;
$base01: #e0e0e0 !default;
@@ -20,6 +20,9 @@ $masthead-link-color: $text-color !default;
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
/* notices */
$notice-background-mix: 75% !default;
/* sunrise syntax highlighting (base16) */
$base00: #1d1f21 !default;
$base01: #282a2e !default;
+2 -1
View File
@@ -1,8 +1,9 @@
---
# Only the main Sass file needs front matter (the dashes are enough)
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
+140 -46
View File
@@ -2,39 +2,18 @@
jQuery plugin settings and other scripts
========================================================================== */
$(document).ready(function() {
$(document).ready(function () {
// FitVids init
$("#main").fitVids();
// Sticky sidebar
var stickySideBar = function() {
var show =
$(".author__urls-wrapper button").length === 0
? $(window).width() > 1024 // width should match $large Sass variable
: !$(".author__urls-wrapper button").is(":visible");
if (show) {
// fix
$(".sidebar").addClass("sticky");
} else {
// unfix
$(".sidebar").removeClass("sticky");
}
};
stickySideBar();
$(window).resize(function() {
stickySideBar();
});
// Follow menu drop down
$(".author__urls-wrapper button").on("click", function() {
$(".author__urls-wrapper button").on("click", function () {
$(".author__urls").toggleClass("is--visible");
$(".author__urls-wrapper button").toggleClass("open");
$(".author__urls-wrapper").find("button").toggleClass("open");
});
// Close search screen with Esc key
$(document).keyup(function(e) {
$(document).keyup(function (e) {
if (e.keyCode === 27) {
if ($(".initial-content").hasClass("is--hidden")) {
$(".search-content").toggleClass("is--visible");
@@ -44,11 +23,11 @@ $(document).ready(function() {
});
// Search toggle
$(".search__toggle").on("click", function() {
$(".search__toggle").on("click", function () {
$(".search-content").toggleClass("is--visible");
$(".initial-content").toggleClass("is--hidden");
// set focus on input
setTimeout(function() {
setTimeout(function () {
$(".search-content input").focus();
}, 400);
});
@@ -58,11 +37,11 @@ $(document).ready(function() {
offset: 20,
speed: 400,
speedAsDuration: true,
durationMax: 500
durationMax: 500,
});
// Gumshoe scroll spy init
if($("nav.toc").length > 0) {
if ($("nav.toc").length > 0) {
var spy = new Gumshoe("nav.toc a", {
// Active classes
navClass: "active", // applied to the nav list item
@@ -77,14 +56,36 @@ $(document).ready(function() {
reflow: true, // if true, listen for reflows
// Event support
events: true // if true, emit custom events
events: true, // if true, emit custom events
});
}
// Auto scroll sticky ToC with content
const scrollTocToContent = function (event) {
var target = event.target;
var scrollOptions = { behavior: "auto", block: "nearest", inline: "start" };
var tocElement = document.querySelector("aside.sidebar__right.sticky");
if (!tocElement) return;
if (window.getComputedStyle(tocElement).position !== "sticky") return;
if (target.parentElement.classList.contains("toc__menu") && target == target.parentElement.firstElementChild) {
// Scroll to top instead
document.querySelector("nav.toc header").scrollIntoView(scrollOptions);
} else {
target.scrollIntoView(scrollOptions);
}
};
// Has issues on Firefox, whitelist Chrome for now
if (!!window.chrome) {
document.addEventListener("gumshoeActivate", scrollTocToContent);
}
// add lightbox class to all image links
$(
"a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']"
).addClass("image-popup");
).has("> img").addClass("image-popup");
// Magnific-Popup options
$(".image-popup").magnificPopup({
@@ -99,38 +100,131 @@ $(document).ready(function() {
gallery: {
enabled: true,
navigateByImgClick: true,
preload: [0, 1] // Will preload 0 - before current, and 1 after the current image
preload: [0, 1], // Will preload 0 - before current, and 1 after the current image
},
image: {
tError: '<a href="%url%">Image #%curr%</a> could not be loaded.'
tError: '<a href="%url%">Image #%curr%</a> could not be loaded.',
},
removalDelay: 500, // Delay in milliseconds before popup is removed
// Class that is added to body when popup is open.
// make it unique to apply your CSS animations just to this exact popup
mainClass: "mfp-zoom-in",
callbacks: {
beforeOpen: function() {
beforeOpen: function () {
// just a hack that adds mfp-anim class to markup
this.st.image.markup = this.st.image.markup.replace(
"mfp-figure",
"mfp-figure mfp-with-anim"
);
}
},
},
closeOnContentClick: true,
midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
midClick: true, // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
});
// Add anchors for headings
$('.page__content').find('h1, h2, h3, h4, h5, h6').each(function() {
var id = $(this).attr('id');
if (id) {
var anchor = document.createElement("a");
anchor.className = 'header-link';
anchor.href = '#' + id;
anchor.innerHTML = '<span class=\"sr-only\">Permalink</span><i class=\"fas fa-link\"></i>';
anchor.title = "Permalink";
$(this).append(anchor);
document
.querySelector(".page__content")
.querySelectorAll("h1, h2, h3, h4, h5, h6")
.forEach(function (element) {
var id = element.getAttribute("id");
if (id) {
var anchor = document.createElement("a");
anchor.className = "header-link";
anchor.href = "#" + id;
anchor.innerHTML =
'<span class="sr-only">Permalink</span><i class="fas fa-link"></i>';
anchor.title = "Permalink";
element.appendChild(anchor);
}
});
// Add copy button for <pre> blocks
var copyText = function (text) {
if (document.queryCommandEnabled("copy") && navigator.clipboard) {
navigator.clipboard.writeText(text).then(
() => true,
() => console.error("Failed to copy text to clipboard: " + text)
);
return true;
} else {
var isRTL = document.documentElement.getAttribute("dir") === "rtl";
var textarea = document.createElement("textarea");
textarea.className = "clipboard-helper";
textarea.style[isRTL ? "right" : "left"] = "-9999px";
// Move element to the same position vertically
var yPosition = window.pageYOffset || document.documentElement.scrollTop;
textarea.style.top = yPosition + "px";
textarea.setAttribute("readonly", "");
textarea.value = text;
document.body.appendChild(textarea);
var success = true;
try {
textarea.select();
success = document.execCommand("copy");
} catch (e) {
success = false;
}
textarea.parentNode.removeChild(textarea);
return success;
}
});
};
var copyButtonEventListener = function (event) {
var thisButton = event.target;
// Locate the <code> element
var codeBlock = thisButton.nextElementSibling;
while (codeBlock && codeBlock.tagName.toLowerCase() !== "code") {
codeBlock = codeBlock.nextElementSibling;
}
if (!codeBlock) {
// No <code> found - wtf?
console.warn(thisButton);
throw new Error("No code block found for this button.");
}
// Skip line numbers if present (i.e. {% highlight lineno %})
var realCodeBlock = codeBlock.querySelector("td.code, td.rouge-code");
if (realCodeBlock) {
codeBlock = realCodeBlock;
}
var result = copyText(codeBlock.innerText);
// Restore the focus to the button
thisButton.focus();
if (result) {
if (thisButton.interval !== null) {
clearInterval(thisButton.interval);
}
thisButton.classList.add('copied');
thisButton.interval = setTimeout(function () {
thisButton.classList.remove('copied');
clearInterval(thisButton.interval);
thisButton.interval = null;
}, 1500);
}
return result;
};
if (window.enable_copy_code_button) {
document
.querySelectorAll(".page__content pre.highlight > code")
.forEach(function (element, index, parentList) {
// Locate the <pre> element
var container = element.parentElement;
// Sanity check - don't add an extra button if there's already one
if (container.firstElementChild.tagName.toLowerCase() !== "code") {
return;
}
var copyButton = document.createElement("button");
copyButton.title = "Copy to clipboard";
copyButton.className = "clipboard-copy-button";
copyButton.innerHTML = '<span class="sr-only">Copy code</span><i class="far fa-fw fa-copy"></i><i class="fas fa-fw fa-check copied"></i>';
copyButton.addEventListener("click", copyButtonEventListener);
container.prepend(copyButton);
});
}
});
+36 -1
View File
@@ -46,4 +46,39 @@ var store = [
"teaser": {{ teaser | relative_url | jsonify }}
}{%- unless forloop.last and l -%},{%- endunless -%}
{%- endfor -%}
{%- endfor -%}]
{%- endfor -%}{%- if site.lunr.search_within_pages -%},
{%- assign pages = site.pages | where_exp: 'doc', 'doc.search != false' | where_exp: 'doc', 'doc.title != null' -%}
{%- for doc in pages -%}
{%- if forloop.last -%}
{%- assign l = true -%}
{%- endif -%}
{
"title": {{ doc.title | jsonify }},
"excerpt":
{%- if site.search_full_content == true -%}
{{ doc.content | newline_to_br |
replace:"<br />", " " |
replace:"</p>", " " |
replace:"</h1>", " " |
replace:"</h2>", " " |
replace:"</h3>", " " |
replace:"</h4>", " " |
replace:"</h5>", " " |
replace:"</h6>", " "|
strip_html | strip_newlines | jsonify }},
{%- else -%}
{{ doc.content | newline_to_br |
replace:"<br />", " " |
replace:"</p>", " " |
replace:"</h1>", " " |
replace:"</h2>", " " |
replace:"</h3>", " " |
replace:"</h4>", " " |
replace:"</h5>", " " |
replace:"</h6>", " "|
strip_html | strip_newlines | truncatewords: 50 | jsonify }},
{%- endif -%}
"url": {{ doc.url | absolute_url | jsonify }}
}{%- unless forloop.last and l -%},{%- endunless -%}
{%- endfor -%}
{%- endif -%}]
+5 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7 -5
View File
@@ -1,7 +1,7 @@
/*
GreedyNav.js - http://lukejacksonn.com/actuate
GreedyNav.js - https://github.com/lukejacksonn/GreedyNav
Licensed under the MIT license - http://opensource.org/licenses/MIT
Copyright (c) 2015 Luke Jackson
Copyright (c) 2015 Luke Jackson http://lukejacksonn.com
*/
$(function() {
@@ -14,11 +14,11 @@ $(function() {
var $logoImg = $('nav.greedy-nav .site-logo img');
var $title = $("nav.greedy-nav .site-title");
var $search = $('nav.greedy-nav button.search__toggle');
var numOfItems, totalSpace, closingTime, breakWidths;
// This function measures both hidden and visible links and sets the navbar breakpoints
// This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items
// This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items
// Please note that "CSS width breakpoints" (which are only 4) !== "navbar breakpoints" (which are as many as the number of items on the navbar)
function measureLinks(){
numOfItems = 0;
@@ -99,6 +99,7 @@ $(function() {
$btn.on('click', function() {
$hlinks.toggleClass('hidden');
$(this).toggleClass('close');
clearTimeout(timer);
});
@@ -106,6 +107,7 @@ $(function() {
// Mouse has left, start the timer
timer = setTimeout(function() {
$hlinks.addClass('hidden');
$('.greedy-nav__toggle').removeClass('close');
}, closingTime);
}).on('mouseenter', function() {
// Mouse is back, cancel the timer
@@ -122,5 +124,5 @@ $(function() {
} else check();
// if page does not have a logo just check
} else check();
});
@@ -1,15 +1,15 @@
/*!
* jQuery JavaScript Library v3.5.1
* jQuery JavaScript Library v3.6.0
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2020-05-04T22:49Z
* Date: 2021-03-02T17:08Z
*/
( function( global, factory ) {
@@ -76,12 +76,16 @@ var support = {};
var isFunction = function isFunction( obj ) {
// Support: Chrome <=57, Firefox <=52
// In some browsers, typeof returns "function" for HTML <object> elements
// (i.e., `typeof document.createElement( "object" ) === "function"`).
// We don't want to classify *any* DOM node as a function.
return typeof obj === "function" && typeof obj.nodeType !== "number";
};
// Support: Chrome <=57, Firefox <=52
// In some browsers, typeof returns "function" for HTML <object> elements
// (i.e., `typeof document.createElement( "object" ) === "function"`).
// We don't want to classify *any* DOM node as a function.
// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
// Plus for old WebKit, typeof returns "function" for HTML collections
// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
return typeof obj === "function" && typeof obj.nodeType !== "number" &&
typeof obj.item !== "function";
};
var isWindow = function isWindow( obj ) {
@@ -147,7 +151,7 @@ function toType( obj ) {
var
version = "3.5.1",
version = "3.6.0",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@@ -401,7 +405,7 @@ jQuery.extend( {
if ( isArrayLike( Object( arr ) ) ) {
jQuery.merge( ret,
typeof arr === "string" ?
[ arr ] : arr
[ arr ] : arr
);
} else {
push.call( ret, arr );
@@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) {
// Populate the class2type map
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
function( _i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
function( _i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
function isArrayLike( obj ) {
@@ -518,14 +522,14 @@ function isArrayLike( obj ) {
}
var Sizzle =
/*!
* Sizzle CSS Selector Engine v2.3.5
* Sizzle CSS Selector Engine v2.3.6
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
* Date: 2020-03-14
* Date: 2021-02-16
*/
( function( window ) {
var i,
@@ -1108,8 +1112,8 @@ support = Sizzle.support = {};
* @returns {Boolean} True iff elem is a non-HTML XML node
*/
isXML = Sizzle.isXML = function( elem ) {
var namespace = elem.namespaceURI,
docElem = ( elem.ownerDocument || elem ).documentElement;
var namespace = elem && elem.namespaceURI,
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
// Support: IE <=8
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
@@ -3024,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext;
function nodeName( elem, name ) {
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
};
}
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
@@ -3997,8 +4001,8 @@ jQuery.extend( {
resolveContexts = Array( i ),
resolveValues = slice.call( arguments ),
// the master Deferred
master = jQuery.Deferred(),
// the primary Deferred
primary = jQuery.Deferred(),
// subordinate callback factory
updateFunc = function( i ) {
@@ -4006,30 +4010,30 @@ jQuery.extend( {
resolveContexts[ i ] = this;
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
if ( !( --remaining ) ) {
master.resolveWith( resolveContexts, resolveValues );
primary.resolveWith( resolveContexts, resolveValues );
}
};
};
// Single- and empty arguments are adopted like Promise.resolve
if ( remaining <= 1 ) {
adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
!remaining );
// Use .then() to unwrap secondary thenables (cf. gh-3000)
if ( master.state() === "pending" ||
if ( primary.state() === "pending" ||
isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
return master.then();
return primary.then();
}
}
// Multiple arguments are aggregated like Promise.all array elements
while ( i-- ) {
adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
}
return master.promise();
return primary.promise();
}
} );
@@ -4180,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
for ( ; i < len; i++ ) {
fn(
elems[ i ], key, raw ?
value :
value.call( elems[ i ], i, fn( elems[ i ], key ) )
value :
value.call( elems[ i ], i, fn( elems[ i ], key ) )
);
}
}
@@ -5089,10 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
}
var
rkeyEvent = /^key/,
rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
function returnTrue() {
return true;
@@ -5387,8 +5388,8 @@ jQuery.event = {
event = jQuery.event.fix( nativeEvent ),
handlers = (
dataPriv.get( this, "events" ) || Object.create( null )
)[ event.type ] || [],
dataPriv.get( this, "events" ) || Object.create( null )
)[ event.type ] || [],
special = jQuery.event.special[ event.type ] || {};
// Use the fix-ed jQuery.Event rather than the (read-only) native event
@@ -5512,12 +5513,12 @@ jQuery.event = {
get: isFunction( hook ) ?
function() {
if ( this.originalEvent ) {
return hook( this.originalEvent );
return hook( this.originalEvent );
}
} :
function() {
if ( this.originalEvent ) {
return this.originalEvent[ name ];
return this.originalEvent[ name ];
}
},
@@ -5656,7 +5657,13 @@ function leverageNative( el, type, expectSync ) {
// Cancel the outer synthetic event
event.stopImmediatePropagation();
event.preventDefault();
return result.value;
// Support: Chrome 86+
// In Chrome, if an element having a focusout handler is blurred by
// clicking outside of it, it invokes the handler synchronously. If
// that handler calls `.remove()` on the element, the data is cleared,
// leaving `result` undefined. We need to guard against this.
return result && result.value;
}
// If this is an inner synthetic event for an event with a bubbling surrogate
@@ -5821,34 +5828,7 @@ jQuery.each( {
targetTouches: true,
toElement: true,
touches: true,
which: function( event ) {
var button = event.button;
// Add which for key events
if ( event.which == null && rkeyEvent.test( event.type ) ) {
return event.charCode != null ? event.charCode : event.keyCode;
}
// Add which for click: 1 === left; 2 === middle; 3 === right
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
if ( button & 1 ) {
return 1;
}
if ( button & 2 ) {
return 3;
}
if ( button & 4 ) {
return 2;
}
return 0;
}
return event.which;
}
which: true
}, jQuery.event.addProp );
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
@@ -5874,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
return true;
},
// Suppress native focus or blur as it's already being fired
// in leverageNative.
_default: function() {
return true;
},
delegateType: delegateType
};
} );
@@ -6541,6 +6527,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
// set in CSS while `offset*` properties report correct values.
// Behavior in IE 9 is more subtle than in newer versions & it passes
// some versions of this test; make sure not to make it pass there!
//
// Support: Firefox 70+
// Only Firefox includes border widths
// in computed dimensions. (gh-4529)
reliableTrDimensions: function() {
var table, tr, trChild, trStyle;
if ( reliableTrDimensionsVal == null ) {
@@ -6548,17 +6538,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
tr = document.createElement( "tr" );
trChild = document.createElement( "div" );
table.style.cssText = "position:absolute;left:-11111px";
table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
tr.style.cssText = "border:1px solid";
// Support: Chrome 86+
// Height set through cssText does not get applied.
// Computed height then comes back as 0.
tr.style.height = "1px";
trChild.style.height = "9px";
// Support: Android 8 Chrome 86+
// In our bodyBackground.html iframe,
// display for all div elements is set to "inline",
// which causes a problem only in Android 8 Chrome 86.
// Ensuring the div is display: block
// gets around this issue.
trChild.style.display = "block";
documentElement
.appendChild( table )
.appendChild( tr )
.appendChild( trChild );
trStyle = window.getComputedStyle( tr );
reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
parseInt( trStyle.borderTopWidth, 10 ) +
parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
documentElement.removeChild( table );
}
@@ -7022,10 +7027,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) {
// Running getBoundingClientRect on a disconnected node
// in IE throws an error.
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
swap( elem, cssShow, function() {
return getWidthOrHeight( elem, dimension, extra );
} ) :
getWidthOrHeight( elem, dimension, extra );
swap( elem, cssShow, function() {
return getWidthOrHeight( elem, dimension, extra );
} ) :
getWidthOrHeight( elem, dimension, extra );
}
},
@@ -7084,7 +7089,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
swap( elem, { marginLeft: 0 }, function() {
return elem.getBoundingClientRect().left;
} )
) + "px";
) + "px";
}
}
);
@@ -7223,7 +7228,7 @@ Tween.propHooks = {
if ( jQuery.fx.step[ tween.prop ] ) {
jQuery.fx.step[ tween.prop ]( tween );
} else if ( tween.elem.nodeType === 1 && (
jQuery.cssHooks[ tween.prop ] ||
jQuery.cssHooks[ tween.prop ] ||
tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
} else {
@@ -7468,7 +7473,7 @@ function defaultPrefilter( elem, props, opts ) {
anim.done( function() {
/* eslint-enable no-loop-func */
/* eslint-enable no-loop-func */
// The final step of a "hide" animation is actually hiding the element
if ( !hidden ) {
@@ -7588,7 +7593,7 @@ function Animation( elem, properties, options ) {
tweens: [],
createTween: function( prop, end ) {
var tween = jQuery.Tween( elem, animation.opts, prop, end,
animation.opts.specialEasing[ prop ] || animation.opts.easing );
animation.opts.specialEasing[ prop ] || animation.opts.easing );
animation.tweens.push( tween );
return tween;
},
@@ -7761,7 +7766,8 @@ jQuery.fn.extend( {
anim.stop( true );
}
};
doAnimation.finish = doAnimation;
doAnimation.finish = doAnimation;
return empty || optall.queue === false ?
this.each( doAnimation ) :
@@ -8401,8 +8407,8 @@ jQuery.fn.extend( {
if ( this.setAttribute ) {
this.setAttribute( "class",
className || value === false ?
"" :
dataPriv.get( this, "__className__" ) || ""
"" :
dataPriv.get( this, "__className__" ) || ""
);
}
}
@@ -8417,7 +8423,7 @@ jQuery.fn.extend( {
while ( ( elem = this[ i++ ] ) ) {
if ( elem.nodeType === 1 &&
( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
return true;
return true;
}
}
@@ -8707,9 +8713,7 @@ jQuery.extend( jQuery.event, {
special.bindType || type;
// jQuery handler
handle = (
dataPriv.get( cur, "events" ) || Object.create( null )
)[ event.type ] &&
handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
dataPriv.get( cur, "handle" );
if ( handle ) {
handle.apply( cur, data );
@@ -8856,7 +8860,7 @@ var rquery = ( /\?/ );
// Cross-browser xml parsing
jQuery.parseXML = function( data ) {
var xml;
var xml, parserErrorElem;
if ( !data || typeof data !== "string" ) {
return null;
}
@@ -8865,12 +8869,17 @@ jQuery.parseXML = function( data ) {
// IE throws on parseFromString with invalid input.
try {
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
} catch ( e ) {
xml = undefined;
}
} catch ( e ) {}
if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
jQuery.error( "Invalid XML: " + data );
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
if ( !xml || parserErrorElem ) {
jQuery.error( "Invalid XML: " + (
parserErrorElem ?
jQuery.map( parserErrorElem.childNodes, function( el ) {
return el.textContent;
} ).join( "\n" ) :
data
) );
}
return xml;
};
@@ -8971,16 +8980,14 @@ jQuery.fn.extend( {
// Can add propHook for "elements" to filter or add form elements
var elements = jQuery.prop( this, "elements" );
return elements ? jQuery.makeArray( elements ) : this;
} )
.filter( function() {
} ).filter( function() {
var type = this.type;
// Use .is( ":disabled" ) so that fieldset[disabled] works
return this.name && !jQuery( this ).is( ":disabled" ) &&
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
( this.checked || !rcheckableType.test( type ) );
} )
.map( function( _i, elem ) {
} ).map( function( _i, elem ) {
var val = jQuery( this ).val();
if ( val == null ) {
@@ -9033,7 +9040,8 @@ var
// Anchor tag for parsing the document origin
originAnchor = document.createElement( "a" );
originAnchor.href = location.href;
originAnchor.href = location.href;
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
function addToPrefiltersOrTransports( structure ) {
@@ -9414,8 +9422,8 @@ jQuery.extend( {
// Context for global events is callbackContext if it is a DOM node or jQuery collection
globalEventContext = s.context &&
( callbackContext.nodeType || callbackContext.jquery ) ?
jQuery( callbackContext ) :
jQuery.event,
jQuery( callbackContext ) :
jQuery.event,
// Deferreds
deferred = jQuery.Deferred(),
@@ -9727,8 +9735,10 @@ jQuery.extend( {
response = ajaxHandleResponses( s, jqXHR, responses );
}
// Use a noop converter for missing script
if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
// Use a noop converter for missing script but not if jsonp
if ( !isSuccess &&
jQuery.inArray( "script", s.dataTypes ) > -1 &&
jQuery.inArray( "json", s.dataTypes ) < 0 ) {
s.converters[ "text script" ] = function() {};
}
@@ -10466,12 +10476,6 @@ jQuery.offset = {
options.using.call( elem, props );
} else {
if ( typeof props.top === "number" ) {
props.top += "px";
}
if ( typeof props.left === "number" ) {
props.left += "px";
}
curElem.css( props );
}
}
@@ -10640,8 +10644,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) {
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
function( defaultExtra, funcName ) {
jQuery.each( {
padding: "inner" + name,
content: type,
"": "outer" + name
}, function( defaultExtra, funcName ) {
// Margin is only for outerHeight, outerWidth
jQuery.fn[ funcName ] = function( margin, value ) {
@@ -10726,7 +10733,8 @@ jQuery.fn.extend( {
}
} );
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
jQuery.each(
( "blur focus focusin focusout resize scroll click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
function( _i, name ) {
@@ -10737,7 +10745,8 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
this.on( name, null, data, fn ) :
this.trigger( name );
};
} );
}
);
-19
View File
@@ -1,19 +0,0 @@
const fs = require("fs");
const pkg = require("./package.json");
const filename = "assets/js/main.min.js";
const script = fs.readFileSync(filename);
const padStart = str => ("0" + str).slice(-2);
const dateObj = new Date();
const date = `${dateObj.getFullYear()}-${padStart(
dateObj.getMonth() + 1
)}-${padStart(dateObj.getDate())}`;
const banner = `/*!
* Minimal Mistakes Jekyll Theme ${pkg.version} by ${pkg.author}
* Copyright 2013-${dateObj.getFullYear()} Michael Rose - mademistakes.com | @mmistakes
* Licensed under ${pkg.license}
*/
`;
if (script.slice(0, 3) != "/**") {
fs.writeFileSync(filename, banner + script);
}
+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
+13 -3
View File
@@ -5,7 +5,7 @@
# For technical reasons, this file is *NOT* reloaded automatically when you use
# `jekyll serve`. If you change this file, please restart the server process.
remote_theme : "mmistakes/minimal-mistakes@4.22.0"
remote_theme : "mmistakes/minimal-mistakes@master"
minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"
@@ -24,8 +24,9 @@ logo : # path of logo image to display in the masthead, e.g.
masthead_title : # overrides the website title displayed in the masthead, use " " for no title
# breadcrumbs : false # true, false (default)
words_per_minute : 200
enable_copy_code_button : true
comments:
provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "custom"
provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "giscus", "custom"
disqus:
shortname :
discourse:
@@ -38,6 +39,13 @@ comments:
utterances:
theme : # "github-light" (default), "github-dark"
issue_term : # "pathname" (default)
giscus:
repo_id : # Shown during giscus setup at https://giscus.app
category_name : # Full text name of the category
category_id : # Shown during giscus setup at https://giscus.app
discussion_term : # "pathname" (default), "url", "title", "og:title"
reactions_enabled : # '1' for enabled (default), '0' for disabled
theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
reCaptcha:
siteKey : # "6LdRBykTAAAAAFB46MnIu6ixuxwu9W1ihFF8G60Q"
secret : # "PznnZGu3P6eTHRPLORniSq+J61YEf+A9zmColXDM5icqF49gbunH51B8+h+i2IvewpuxtA9TFoK68TuhUp/X3YKmmqhXasegHYabY50fqF9nJh9npWNhvITdkQHeaOqnFXUIwxfiEeUt49Yoa2waRR7a5LdRAP3SVM8hz0KIBT4="
@@ -59,8 +67,9 @@ algolia:
# SEO Related
google_site_verification : "UQj93ERU9zgECodaaXgVpkjrFn9UrDMEzVamacSoQ8Y" # Replace this with your ID, or delete
bing_site_verification :
yandex_site_verification :
naver_site_verification :
yandex_site_verification :
baidu_site_verification :
# Social Sharing
twitter:
@@ -223,6 +232,7 @@ defaults:
author_profile: false
share: false
comments: false
toc_sticky: true
sidebar:
nav: "docs"
# _recipes
+2
View File
@@ -78,6 +78,8 @@ docs:
url: /docs/javascript/
- title: Meta
children:
- title: "FAQ"
url: /docs/faq/
- title: "History"
url: /docs/history/
- title: "Contributing"
+3
View File
@@ -0,0 +1,3 @@
# for use with in-page templates
---
version: 4.26.2
+6 -3
View File
@@ -2,7 +2,7 @@
title: "Quick-Start Guide"
permalink: /docs/quick-start-guide/
excerpt: "How to quickly install and setup Minimal Mistakes for use with GitHub Pages."
last_modified_at: 2020-07-27
last_modified_at: 2021-06-07T08:48:05-04:00
redirect_from:
- /theme-setup/
toc: true
@@ -10,9 +10,12 @@ toc: true
Minimal Mistakes has been developed as a [Gem-based theme](http://jekyllrb.com/docs/themes/) for easier use, and 100% compatible with GitHub Pages when used as a remote theme.
**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) for developing and maintaining it.**
**If you enjoy this theme, please consider [sponsoring me](https://github.com/sponsors/mmistakes) to continue developing and maintaining it.**
[!["Buy Me A Coffee"](https://user-images.githubusercontent.com/1376749/120938564-50c59780-c6e1-11eb-814f-22a0399623c5.png)](https://www.buymeacoffee.com/mmistakes)
[![Support via PayPal](https://cdn.jsdelivr.net/gh/twolfson/paypal-github-button@1.0.0/dist/button.svg)](https://www.paypal.me/mmistakes)
{: style="margin-top: 0.5em;"}
## Installing the theme
@@ -75,7 +78,7 @@ To install as a remote theme:
bundle
```
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.22.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
4. Add `remote_theme: "mmistakes/minimal-mistakes@{{ site.data.theme.version }}"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
You may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref (e.g., `mmistakes/minimal-mistakes@4.9.0` or `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). This is useful when rolling back to older versions of the theme. If you don't specify a Git ref, the latest on `master` will be used.
+5 -3
View File
@@ -7,7 +7,7 @@ last_modified_at: 2018-03-20T15:19:22-04:00
Nothing clever here :wink:. Layouts, data files, and includes are all placed in their default locations. Stylesheets and scripts in `assets`, and a few development related files in the project's root directory.
**Please note:** If you installed Minimal Mistakes via the Ruby Gem method, theme files like `_layouts`, `_includes`, `_sass`, and `/assets/` will be missing. This is normal as they are bundled with the [`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) Ruby gem.
**Please note:** If you installed Minimal Mistakes via the Ruby Gem method, theme files like `_layouts`, `_includes`, `_sass`, and `/assets/` will be missing. This is normal as they are bundled with the [`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) Ruby gem. If you would like to make changes, create the files and Jekyll will prefer your local copy.
{: .notice--info}
```bash
@@ -18,8 +18,10 @@ minimal-mistakes
├── _includes
| ├── analytics-providers # snippets for analytics (Google and custom)
| ├── comments-providers # snippets for comments
| ├── footer # custom snippets to add to site footer
| ├── head # custom snippets to add to site head
| ├── footer
| | └── custom.html # custom snippets to add to site footer
| ├── head
| | └── custom.html # custom snippets to add to site head
| ├── feature_row # feature row helper
| ├── gallery # image gallery helper
| ├── group-by-array # group by array helper for archives
+1
View File
@@ -84,6 +84,7 @@ gem "minimal-mistakes-jekyll"
# gem "jekyll-include-cache"
#
# If you have any other plugins, put them here!
# Cf. https://jekyllrb.com/docs/plugins/installation/
group :jekyll_plugins do
end
```
+11 -14
View File
@@ -2,21 +2,16 @@
title: "Upgrading"
permalink: /docs/upgrading/
excerpt: "Instructions and suggestions for upgrading the theme."
last_modified_at: 2018-11-25T19:38:20-05:00
last_modified_at: 2024-04-23T00:43:19+08:00
toc: true
---
If you're using the [Ruby Gem]({{ "/docs/quick-start-guide/#ruby-gem-method" | relative_url }}) or [remote theme]({{ "/docs/quick-start-guide/#github-pages-method" | relative_url }}) versions of Minimal Mistakes, upgrading is fairly painless.
If you're using the [Ruby Gem]({{ "/docs/quick-start-guide/#gem-based-method" | relative_url }}) or [remote theme]({{ "/docs/quick-start-guide/#remote-theme-method" | relative_url }}) versions of Minimal Mistakes, upgrading is fairly painless.
To check which version you are currently using, view the source of your built site and you should see something similar to:
```
<!--
Minimal Mistakes Jekyll Theme 4.22.0 by Michael Rose
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
-->
```text
{% include copyright.html %}
```
At the top of every `.html` file, `/assets/css/main.css`, and `/assets/js/main.min.js`.
@@ -25,19 +20,21 @@ At the top of every `.html` file, `/assets/css/main.css`, and `/assets/js/main.m
Simply run `bundle update` if you're using Bundler (have a `Gemfile`) or `gem update minimal-mistakes-jekyll` if you're not.
When using Bundler you can downgrade or lock the theme to a specific release ([tag](https://github.com/mmistakes/minimal-mistakes/tags)), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`:
When using Bundler you can downgrade or lock the theme to a specific release ([tag][tag]), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`:
```ruby
gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "4.22.0"
gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "{{ site.data.theme.version }}"
```
For more information on [installing gems from git repositories](http://bundler.io/v1.16/guides/git.html) consult Bundler's documentation.
[tag]: https://github.com/mmistakes/minimal-mistakes/tags
For more information on [installing gems from Git repositories](https://bundler.io/guides/git.html) consult Bundler's documentation.
## Remote theme
When setting `remote_theme: "mmistakes/minimal-mistakes@4.22.0"` in your `_config.yml` you may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref.
When setting `remote_theme: "mmistakes/minimal-mistakes@{{ site.data.theme.version }}"` in your `_config.yml` you may also optionally specify a branch, [tag][tag], or commit to use by appending an @ and the Git ref.
For example you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases).
For example, you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases).
To update the theme on GitHub Pages you'll need to push up a commit to force a rebuild. An empty commit works well if you don't have anything to push at the moment:
+234 -110
View File
@@ -2,8 +2,28 @@
title: "Configuration"
permalink: /docs/configuration/
excerpt: "Settings for configuring and customizing the theme."
last_modified_at: 2020-08-04T11:26:21-04:00
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.
@@ -28,93 +48,38 @@ theme: minimal-mistakes-jekyll
Easily change the color scheme of the theme using one of the provided "skins":
```yaml
minimal_mistakes_skin: "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum" "sunrise"
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,11 +122,11 @@ _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.
**Note:** Jekyll 3.3 overrides this value with `url: http://localhost:4000` when running `jekyll serve` locally in development. If you want to avoid this behavior set `JEKYLL_ENV=production` to [force the environment](http://jekyllrb.com/docs/configuration/#specifying-a-jekyll-environment-at-build-time) to production.
**Note:** Jekyll 3.3 overrides this value with `url: http://localhost:4000` when running `jekyll serve` locally in development. If you want to avoid this behavior set `JEKYLL_ENV=production` to [force the environment](https://jekyllrb.com/docs/configuration/environments/) to production.
{: .notice--warning}
### Site base URL
@@ -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:
@@ -285,6 +250,12 @@ defaults:
To disable post date for a post, add `show_date: false` to its YAML Front Matter, overriding what was set in `_config.yml`.
When dates are shown on blog posts or pages, a date format will be chosen to format the date string. The default format is `"%B %-d, %Y"`, which will be displayed like "February 24, 2016". You can choose your date format by referencing this [cheat sheet](https://www.shortcutfoo.com/app/dojos/ruby-date-format-strftime/cheatsheet). For example, use your date format in `_config.yml`.
```yaml
date_format: "%Y-%m-%d"
```
### Reading time
Enable estimated reading time snippets with `read_time: true` in YAML Front Matter. `200` has been set as the default words per minute value --- which can be changed by adjusting `words_per_minute:` in `_config.yml`.
@@ -305,7 +276,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
@@ -325,18 +296,45 @@ 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/), and static-based commenting via [**Staticman**](https://staticman.net/) are built into the theme. First set the comment provider you'd like to use:
[**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:
| Name | Comment Provider |
| ---------------- | ------------------------- |
| **disqus** | Disqus |
| **discourse** | Discourse |
| **facebook** | Facebook Comments |
| **staticman_v2** | Staticman v2 |
| **staticman_v2** | Staticman v2 / v3 |
| **staticman** | Staticman v1 (deprecated) |
| **utterances** | utterances |
| **giscus** | giscus |
| **custom** | Other |
Then add `comments: true` to each document you want comments visible on.
@@ -355,7 +353,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}
@@ -416,6 +414,36 @@ comments:
utterances:
theme: "github-light" # "github-dark"
issue_term: "pathname"
label: "comment" # Optional - must be existing label.
```
#### giscus comments
To use giscus you will need to [install the app](https://github.com/apps/giscus) to your GitHub repository.
The next step is to go to <https://giscus.app> and fill out the desired settings. This will generate JavaScript that will provide you with the settings you will need to configure things below.
You'll need to ensure you've added the following to `_config.yml`:
```yaml
repository: # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes"
```
**Note:** Make sure the repo is public, otherwise your readers will not be able to view the issues/comments. The [discussions feature](https://docs.github.com/en/discussions) also needs to be active on your repo.
{: .notice--warning}
To enable giscus on the front end set `comments.provider` and the other additional options.
```yaml
comments:
provider: "giscus"
giscus:
repo_id : # Shown during giscus setup at https://giscus.app
category_name : # Full text name of the category
category_id : # Shown during giscus setup at https://giscus.app
discussion_term : # "pathname" (default), "url", "title", "og:title"
reactions_enabled : # '1' for enabled (default), '0' for disabled
theme : # "light" (default), "dark", "dark_dimmed", "transparent_dark", "preferred_color_scheme"
```
#### Static-based comments via Staticman
@@ -425,13 +453,16 @@ Transform user comments into `_data` files that live inside of your GitHub repos
**Note:** Looking to migrate comments from a WordPress based site? Give [this tool](https://github.com/arthurlacoste/wordpress-comments-jekyll-staticman) a try.
{: .notice--info}
**Note:** Please note that as of September 2018, Staticman is reaching GitHub API limits due to its popularity, and it is recommended by its maintainer that users deploy their own instances for production (use `site.staticman.endpoint`).
**Note:** Please note that as of September 2018, Staticman is reaching GitHub API limits due to its popularity, and it is recommended by its maintainer that users deploy their own instances for production (use `site.staticman.endpoint`). Consult the Staticman "[Get Started](https://staticman.net/docs/index.html)" guide for more info.
{: .notice--warning}
##### Add Staticman as a collaborator
##### Add Staticman as a collaborator on GitHub (legacy)
1. Allow Staticman push access to your GitHub repository by clicking on **Settings**, then the **Collaborators** tab and adding `staticmanapp` as a collaborator.
2. To accept the pending invitation visit: `https://api.staticman.net/v2/connect/{your GitHub username}/{your repository name}`. Consult the Staticman "[Get Started](https://staticman.net/docs/index.html)" guide for more info.
1. Allow Staticman push access to your GitHub repository by clicking on **Settings**, then the **Collaborators** tab and adding your GitHub bot as a collaborator.
2. To accept the pending invitation visit: `https://{your Staticman v2/3 API}/v[2|3]/connect/{your GitHub username}/{your repository name}`.
**Note:** The new GitHub App authentication method is recommended for GitHub repositories to avoid the API rate limit.
{: .notice--info}
##### Configure Staticman
@@ -524,7 +555,7 @@ By default comment moderation is enabled in `staticman.yml`. As new comments are
To skip this moderation step simply set `moderation: false`.
**ProTip:** Create a GitHub webhook that sends a `POST` request to the following payload URL `https://api.staticman.net/v2/webhook` and triggers a "Pull request" event to delete Staticman branches on merge.
**ProTip:** Create a GitHub webhook that sends a `POST` request to the following payload URL `https://{your Staticman API URL}/v2/webhook` and triggers a "Pull request" event to delete Staticman branches on merge.
{: .notice--info}
![pull-request webhook]({{ "/assets/images/mm-staticman-pr-webhook.jpg" | relative_url }})
@@ -578,6 +609,13 @@ To enable site-wide search add `search: true` to your `_config.yml`.
The default search uses [**Lunr**](https://lunrjs.com/) to build a search index of all post and your documents in collections. This method is 100% compatible with sites hosted on GitHub Pages.
To have it index all pages, update `lunr` in `_config.yml` like so:
```yaml
lunr:
search_within_pages: true
```
**Note:** Only the first 50 words of a post or page's body content is added to the Lunr search index. Setting `search_full_content` to `true` in your `_config.yml` will override this and could impact page load performance.
{: .notice--warning}
@@ -671,7 +709,7 @@ Formerly known as [Google Webmaster Tools](https://www.google.com/webmasters/too
#### Bing Webmaster Tools
There are several ways to [verify site ownership](https://www.bing.com/webmaster/help/how-to-verify-ownership-of-your-site-afcfefc6) --- the easiest adding an authentication code to your config file.
There are several ways to [verify site ownership](https://www.bing.com/webmasters/help/add-and-verify-site-12184f8b) --- the easiest adding an authentication code to your config file.
Copy and paste the string inside of `content`:
@@ -715,6 +753,22 @@ Into `_config.yml`
yandex_site_verification: "2132801JL"
```
#### Baidu
There are several ways to verify site ownership — the easiest is adding an authentication code to your config file.
Copy and paste the string inside of `content`:
```html
<meta name="baidu-site-verification" content="code-iA0wScWXN1" />
```
Into `_config.yml`
```yaml
baidu_site_verification: "code-iA0wScWXN1"
```
#### Twitter Cards and Facebook Open Graph
To improve the appearance of links shared from your site to social networks like Twitter and Facebook be sure to configure the following.
@@ -732,7 +786,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
@@ -752,33 +806,36 @@ facebook:
username: "michaelrose" # https://www.facebook.com/michaelrose
```
**ProTip:** To debug Open Graph data use [this tool](https://developers.facebook.com/tools/debug/og/object?q=https%3A%2F%2Fmademistakes.com) to test your pages. If content changes aren't reflected you will probably have to hit the **Fetch new scrape information** button to refresh.
**ProTip:** To debug Open Graph data use [this tool](https://developers.facebook.com/tools/debug/) to test your pages. If content changes aren't reflected you will probably have to hit the **Scrape Again** button to refresh.
{: .notice--info}
##### Open Graph default image
For pages that don't have a `header.image` assigned in their YAML Front Matter, `site.og_image` will be used as a fallback. Use your logo, icon, avatar or something else that is meaningful. Just make sure it is place in the `/assets/images/` folder, a minimum size of 120px by 120px, and less than 1MB in file size.
For pages that don't have a `header.image` assigned in their YAML Front Matter, `site.og_image` will be used as a fallback. Use your logo, icon, avatar or something else that is meaningful. Just make sure it is placed in the `/assets/images/` folder, has a minimum size of 120px by 120px, and is less than 1MB in file size.
```yaml
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
@@ -818,7 +875,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}
@@ -844,7 +901,7 @@ Author links are all optional, include the ones you want visible under the `auth
| Name | Description |
| --- | --- |
| **label** | Link label (e.g. `"Twitter"`) |
| **icon** | [Font Awesome icon](https://fontawesome.com/icons?d=gallery) classes (e.g. `"fab fa-fw fa-twitter-square"`) |
| **icon** | [Font Awesome icon](https://fontawesome.com/v6/search) classes (e.g. `"fab fa-fw fa-twitter-square"`) |
| **url** | Link URL (e.g. `"https://twitter.com/mmistakes"`) |
```yaml
@@ -877,7 +934,7 @@ Footer links can be added under the `footer.links` array.
| Name | Description |
| --- | --- |
| **label** | Link label (e.g. `"Twitter"`) |
| **icon** | [Font Awesome icon](https://fontawesome.com/icons?d=gallery) classes (e.g. `"fab fa-fw fa-twitter-square"`) |
| **icon** | [Font Awesome icon](https://fontawesome.com/v6/search) classes (e.g. `"fab fa-fw fa-twitter-square"`) |
| **url** | Link URL (e.g. `"https://twitter.com/mmistakes"`) |
```yaml
@@ -905,7 +962,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
@@ -977,9 +1034,76 @@ 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 I suggest [**jekyll-paginate-v2**](https://github.com/sverrirs/jekyll-paginate-v2).
**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}
[jekyll-paginate-v2]: https://github.com/sverrirs/jekyll-paginate-v2
### Paginate V2
*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
This sets the timezone environment variable, which Ruby uses to handle time and date creation and manipulation. Any entry from the [IANA Time Zone Database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) is valid. The default is the local time zone, as set by your operating system.
+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:
+4 -1
View File
@@ -2,16 +2,18 @@
title: "UI Text"
permalink: /docs/ui-text/
excerpt: "Text for customizing user interface elements found in the theme."
last_modified_at: 2021-02-05T20:54:24-05:00
last_modified_at: 2021-05-11T10:22:55-04:00
---
Text for UI elements, `_layouts`, and `_includes` grouped together as a set of translation keys. This is by no means a full-on i18n solution, but it does help make customizing theme text a bit easier.
The English[^yaml-anchors] main keys in [`_data/ui-text.yml`](https://github.com/mmistakes/minimal-mistakes/blob/master/_data/ui-text.yml) are translated in the following languages:
- Arabic (عربي)
- Brazilian Portuguese (Português brasileiro)
- Catalan
- Chinese
- Czech
- Danish
- Dutch
- Finnish
@@ -23,6 +25,7 @@ The English[^yaml-anchors] main keys in [`_data/ui-text.yml`](https://github.com
- Indonesian
- Irish (Gaeilge)
- Italian (Italiano)
- Kiswahili
- Korean
- Japanese
- Malayalam

Some files were not shown because too many files have changed in this diff Show More