{% if post.link %} {{ title }} Permalink {% else %} {{ title }} {% endif %}
{% include page__meta.html locale=locale type=include.type %} {% if post.excerpt %}{{ post.excerpt | markdownify | strip_html | truncate: 160 }}
{% endif %}Repository: mmistakes/minimal-mistakes Branch: master Commit: 5786c35342d4 Files: 502 Total size: 1.8 MB Directory structure: gitextract__97g9qfe/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── documentation.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── bad-pr.yml │ └── build.yml ├── .gitignore ├── CHANGELOG.md ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── _config.yml ├── _data/ │ ├── navigation.yml │ └── ui-text.yml ├── _includes/ │ ├── after-content.html │ ├── analytics-providers/ │ │ ├── custom.html │ │ ├── google-gtag.html │ │ ├── google-universal.html │ │ ├── google.html │ │ └── swetrix.html │ ├── analytics.html │ ├── archive-single.html │ ├── author-profile-custom-links.html │ ├── author-profile.html │ ├── before-related.html │ ├── breadcrumbs.html │ ├── category-list.html │ ├── comment.html │ ├── comments-providers/ │ │ ├── custom.html │ │ ├── custom_scripts.html │ │ ├── discourse.html │ │ ├── disqus.html │ │ ├── facebook.html │ │ ├── giscus.html │ │ ├── scripts.html │ │ ├── staticman.html │ │ ├── staticman_v2.html │ │ └── utterances.html │ ├── comments.html │ ├── copyright.html │ ├── copyright.js │ ├── documents-collection.html │ ├── feature_row │ ├── figure │ ├── footer/ │ │ └── custom.html │ ├── footer.html │ ├── gallery │ ├── group-by-array │ ├── head/ │ │ └── custom.html │ ├── head.html │ ├── masthead.html │ ├── nav_list │ ├── page__date.html │ ├── page__hero.html │ ├── page__hero_video.html │ ├── page__meta.html │ ├── page__related.html │ ├── page__taxonomy.html │ ├── paginator-v1.html │ ├── paginator-v2.html │ ├── paginator.html │ ├── post_pagination.html │ ├── posts-category.html │ ├── posts-tag.html │ ├── posts-taxonomy.html │ ├── schema.html │ ├── scripts.html │ ├── search/ │ │ ├── algolia-search-scripts.html │ │ ├── google-search-scripts.html │ │ ├── lunr-search-scripts.html │ │ └── search_form.html │ ├── seo.html │ ├── sidebar-custom.html │ ├── sidebar.html │ ├── skip-links.html │ ├── social-share.html │ ├── tag-list.html │ ├── toc │ ├── toc.html │ └── video ├── _layouts/ │ ├── archive-taxonomy.html │ ├── archive.html │ ├── categories.html │ ├── category.html │ ├── collection.html │ ├── compress.html │ ├── default.html │ ├── home.html │ ├── posts.html │ ├── search.html │ ├── single.html │ ├── splash.html │ ├── tag.html │ └── tags.html ├── _sass/ │ ├── minimal-mistakes/ │ │ ├── _animations.scss │ │ ├── _archive.scss │ │ ├── _base.scss │ │ ├── _buttons.scss │ │ ├── _copyright.scss │ │ ├── _footer.scss │ │ ├── _forms.scss │ │ ├── _masthead.scss │ │ ├── _mixins.scss │ │ ├── _navigation.scss │ │ ├── _notices.scss │ │ ├── _page.scss │ │ ├── _print.scss │ │ ├── _reset.scss │ │ ├── _search.scss │ │ ├── _sidebar.scss │ │ ├── _syntax.scss │ │ ├── _tables.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── skins/ │ │ │ ├── _air.scss │ │ │ ├── _aqua.scss │ │ │ ├── _catppuccin_latte.scss │ │ │ ├── _catppuccin_mocha.scss │ │ │ ├── _contrast.scss │ │ │ ├── _dark.scss │ │ │ ├── _default.scss │ │ │ ├── _dirt.scss │ │ │ ├── _mint.scss │ │ │ ├── _neon.scss │ │ │ ├── _plum.scss │ │ │ └── _sunrise.scss │ │ └── vendor/ │ │ ├── breakpoint/ │ │ │ ├── _breakpoint.scss │ │ │ ├── _context.scss │ │ │ ├── _helpers.scss │ │ │ ├── _legacy-settings.scss │ │ │ ├── _no-query.scss │ │ │ ├── _parsers.scss │ │ │ ├── _respond-to.scss │ │ │ ├── _settings.scss │ │ │ └── parsers/ │ │ │ ├── _double.scss │ │ │ ├── _query.scss │ │ │ ├── _resolution.scss │ │ │ ├── _single.scss │ │ │ ├── _triple.scss │ │ │ ├── double/ │ │ │ │ ├── _default-pair.scss │ │ │ │ ├── _default.scss │ │ │ │ └── _double-string.scss │ │ │ ├── resolution/ │ │ │ │ └── _resolution.scss │ │ │ ├── single/ │ │ │ │ └── _default.scss │ │ │ └── triple/ │ │ │ └── _default.scss │ │ ├── magnific-popup/ │ │ │ ├── _magnific-popup.scss │ │ │ └── _settings.scss │ │ └── susy/ │ │ ├── _su.scss │ │ ├── _susy-prefix.scss │ │ ├── _susy.scss │ │ ├── plugins/ │ │ │ ├── _svg-grid.scss │ │ │ └── svg-grid/ │ │ │ ├── _prefix.scss │ │ │ ├── _svg-api.scss │ │ │ ├── _svg-grid-math.scss │ │ │ ├── _svg-settings.scss │ │ │ ├── _svg-unprefix.scss │ │ │ └── _svg-utilities.scss │ │ └── susy/ │ │ ├── _api.scss │ │ ├── _normalize.scss │ │ ├── _parse.scss │ │ ├── _settings.scss │ │ ├── _su-math.scss │ │ ├── _su-validate.scss │ │ ├── _syntax-helpers.scss │ │ ├── _unprefix.scss │ │ └── _utilities.scss │ └── minimal-mistakes.scss ├── assets/ │ ├── css/ │ │ └── main.scss │ └── js/ │ ├── _main.js │ ├── lunr/ │ │ ├── lunr-en.js │ │ ├── lunr-gr.js │ │ ├── lunr-store.js │ │ └── lunr.js │ ├── plugins/ │ │ ├── gumshoe.js │ │ ├── jquery.ba-throttle-debounce.js │ │ ├── jquery.fitvids.js │ │ ├── jquery.greedy-navigation.js │ │ ├── jquery.magnific-popup.js │ │ └── smooth-scroll.js │ └── vendor/ │ └── jquery/ │ └── jquery-3.6.0.js ├── docs/ │ ├── Gemfile │ ├── Rakefile │ ├── _config.dev.yml │ ├── _config.yml │ ├── _data/ │ │ ├── authors.yml │ │ ├── comments/ │ │ │ ├── chocolate-chip-cookies/ │ │ │ │ ├── comment-1473870213530.yml │ │ │ │ ├── comment-1478213467992.yml │ │ │ │ ├── comment-1500181304581.yml │ │ │ │ └── comment-1500214855350.yml │ │ │ ├── gemified-theme-beta/ │ │ │ │ ├── comment-1479508047505.yml │ │ │ │ ├── comment-1480591890264.yml │ │ │ │ ├── comment-1482532165381.yml │ │ │ │ ├── comment-1483456786593.yml │ │ │ │ ├── comment-1483457152038.yml │ │ │ │ └── comment-1519412839827.yml │ │ │ ├── layout-comments/ │ │ │ │ ├── comment-1470944006665.yml │ │ │ │ ├── comment-1470944162041.yml │ │ │ │ ├── comment-1472308473018.yml │ │ │ │ ├── comment-1514406795156.yml │ │ │ │ ├── comment-1514407115153.yml │ │ │ │ └── comment-1538482988032.yml │ │ │ ├── layout-header-image-horizontal/ │ │ │ │ ├── comment-1483124729757.yml │ │ │ │ └── comment-1483128389943.yml │ │ │ ├── layout-header-image-text-readability/ │ │ │ │ ├── comment-1474306861206.yml │ │ │ │ ├── comment-1479253931238.yml │ │ │ │ └── comment-1479265677846.yml │ │ │ ├── layout-header-overlay-image/ │ │ │ │ ├── comment-1512840683260.yml │ │ │ │ ├── comment-1513110608614.yml │ │ │ │ ├── comment-1513111329875.yml │ │ │ │ └── comment-1513111563922.yml │ │ │ ├── layout-related-posts/ │ │ │ │ ├── comment-1500183131535.yml │ │ │ │ └── comment-1500214974083.yml │ │ │ ├── layout-sidebar-custom/ │ │ │ │ ├── comment-1519247076880.yml │ │ │ │ ├── comment-1519247290410.yml │ │ │ │ └── comment-1520748170396.yml │ │ │ ├── layout-sidebar-nav-list/ │ │ │ │ ├── comment-1492811460488.yml │ │ │ │ └── comment-1492812977693.yml │ │ │ ├── layout-table-of-contents-post/ │ │ │ │ ├── comment-1512118683486.yml │ │ │ │ ├── comment-1520683848241.yml │ │ │ │ ├── comment-1527082094887.yml │ │ │ │ ├── comment-1527500055863.yml │ │ │ │ ├── comment-1527690060032.yml │ │ │ │ ├── comment-1527690281769.yml │ │ │ │ └── comment-1540422628114.yml │ │ │ ├── markup-image-alignment/ │ │ │ │ └── comment-1534823211504.yml │ │ │ ├── markup-more-images/ │ │ │ │ ├── comment-1472040323579.yml │ │ │ │ └── comment-1472146638519.yml │ │ │ ├── markup-syntax-highlighting/ │ │ │ │ ├── comment-1470969665387.yml │ │ │ │ ├── comment-1478928407894.yml │ │ │ │ ├── comment-1487758246637.yml │ │ │ │ ├── comment-1505403032256.yml │ │ │ │ ├── comment-1505403241808.yml │ │ │ │ └── comment-1514836962551.yml │ │ │ ├── post-future-date/ │ │ │ │ ├── comment-1472064560364.yml │ │ │ │ └── comment-1472786137736.yml │ │ │ ├── post-gallery/ │ │ │ │ ├── comment-1500055247314.yml │ │ │ │ └── comment-1500056210776.yml │ │ │ ├── post-modified/ │ │ │ │ ├── comment-1497284119888.yml │ │ │ │ ├── comment-1497284892766.yml │ │ │ │ └── comment-1520673777110.yml │ │ │ ├── post-video-youtube/ │ │ │ │ ├── comment-1506623182288.yml │ │ │ │ ├── comment-1506623710918.yml │ │ │ │ └── comment-1506632190623.yml │ │ │ └── welcome-to-jekyll/ │ │ │ ├── comment-1470942205700.yml │ │ │ ├── comment-1470942247755.yml │ │ │ ├── comment-1470942265819.yml │ │ │ ├── comment-1470942493518.yml │ │ │ ├── comment-1471823346931.yml │ │ │ ├── comment-1471834988411.yml │ │ │ ├── comment-1472786599470.yml │ │ │ ├── comment-1474328950155.yml │ │ │ ├── comment-1500505983331.yml │ │ │ ├── comment-1507141538771.yml │ │ │ ├── comment-1529792272424.yml │ │ │ └── comment-1529794012288.yml │ │ ├── navigation.yml │ │ └── theme.yml │ ├── _docs/ │ │ ├── 01-quick-start-guide.md │ │ ├── 02-structure.md │ │ ├── 03-installation.md │ │ ├── 04-upgrading.md │ │ ├── 05-configuration.md │ │ ├── 06-overriding-theme-defaults.md │ │ ├── 07-navigation.md │ │ ├── 08-ui-text.md │ │ ├── 09-authors.md │ │ ├── 10-layouts.md │ │ ├── 11-posts.md │ │ ├── 12-pages.md │ │ ├── 13-collections.md │ │ ├── 14-helpers.md │ │ ├── 15-utility-classes.md │ │ ├── 16-stylesheets.md │ │ ├── 17-javascript.md │ │ ├── 18-history.md │ │ ├── 19-contributing.md │ │ ├── 20-docs-2-2.md │ │ ├── 21-license.md │ │ └── 22-faq.md │ ├── _drafts/ │ │ └── post-draft.md │ ├── _includes/ │ │ ├── after-content.html │ │ ├── before-related.html │ │ └── comments-providers/ │ │ └── scripts.html │ ├── _pages/ │ │ ├── 404.md │ │ ├── about.md │ │ ├── archive-layout-with-content.md │ │ ├── category-archive.md │ │ ├── collection-archive.html │ │ ├── edge-case.md │ │ ├── home.md │ │ ├── lorem-ipsum.md │ │ ├── markup.md │ │ ├── page-a.md │ │ ├── page-archive.html │ │ ├── page-b.md │ │ ├── pets.md │ │ ├── portfolio-archive.md │ │ ├── post-archive-feature-rows.html │ │ ├── recipes-archive.md │ │ ├── sample-page.md │ │ ├── sitemap.md │ │ ├── splash-page.md │ │ ├── tag-archive.md │ │ ├── terms.md │ │ └── year-archive.md │ ├── _pets/ │ │ ├── lhasa-apso.md │ │ └── tabby.md │ ├── _portfolio/ │ │ ├── baz-boom-identity.md │ │ ├── fizz-bang-identity.md │ │ ├── foo-bar-website.md │ │ └── ginger-gulp-identity.md │ ├── _posts/ │ │ ├── 2009-05-15-edge-case-nested-and-mixed-lists.md │ │ ├── 2009-06-01-edge-case-many-tags.md │ │ ├── 2009-07-02-edge-case-many-categories.md │ │ ├── 2009-08-06-edge-case-no-body-content.md │ │ ├── 2009-09-05-edge-case-no-yaml-title.md │ │ ├── 2009-10-05-edge-case-multiline-excerpt.md │ │ ├── 2009-10-05-edge-case-title-should-not-overflow-the-content-area.md │ │ ├── 2009-10-05-edge-case-very-long-title.md │ │ ├── 2009-10-06-edge-case-broken-highlighting.md │ │ ├── 2010-01-07-post-modified.md │ │ ├── 2010-01-07-post-standard.md │ │ ├── 2010-01-08-post-chat.md │ │ ├── 2010-02-05-post-notice.md │ │ ├── 2010-02-05-post-quote.md │ │ ├── 2010-03-07-post-link.md │ │ ├── 2010-06-02-post-video-youtube.md │ │ ├── 2010-08-05-post-header-image-og-override.md │ │ ├── 2010-08-05-post-header-overlay-image-og-override.md │ │ ├── 2010-08-05-post-image-linked.md │ │ ├── 2010-08-05-post-image-standard.md │ │ ├── 2010-08-05-post-teaser-image-og-override.md │ │ ├── 2010-08-06-post-image-linked-caption.md │ │ ├── 2010-08-07-post-image-caption.md │ │ ├── 2010-09-09-post-gallery.md │ │ ├── 2010-09-10-post-twitter-embeds.md │ │ ├── 2010-10-25-post-future-date.md │ │ ├── 2012-01-02-layout-comments-disabled.md │ │ ├── 2012-01-02-layout-comments.md │ │ ├── 2012-01-02-layout-post-date-disabled.md │ │ ├── 2012-01-02-layout-post-date.md │ │ ├── 2012-01-02-layout-read-time-disabled.md │ │ ├── 2012-01-02-layout-read-time.md │ │ ├── 2012-01-02-layout-related-posts-disabled.md │ │ ├── 2012-01-02-layout-related-posts.md │ │ ├── 2012-01-02-layout-sharing-disabled.md │ │ ├── 2012-01-02-layout-sharing.md │ │ ├── 2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md │ │ ├── 2012-01-03-layout-table-of-contents-include-post.md │ │ ├── 2012-01-03-layout-table-of-contents-indent-post.md │ │ ├── 2012-01-03-layout-table-of-contents-post.md │ │ ├── 2012-01-03-layout-table-of-contents-sticky.md │ │ ├── 2012-03-14-layout-code-excerpt-generated.md │ │ ├── 2012-03-14-layout-excerpt-defined.md │ │ ├── 2012-03-14-layout-excerpt-generated.md │ │ ├── 2012-03-15-layout-author-override.md │ │ ├── 2012-03-15-layout-author-sidebar-disabled.md │ │ ├── 2012-03-15-layout-header-image-external.md │ │ ├── 2012-03-15-layout-header-image-horizontal.md │ │ ├── 2012-03-15-layout-header-image-text-readability.md │ │ ├── 2012-03-15-layout-header-image-vertical.md │ │ ├── 2012-03-15-layout-header-overlay-color.md │ │ ├── 2012-03-15-layout-header-overlay-image-tagline.md │ │ ├── 2012-03-15-layout-header-overlay-image.md │ │ ├── 2012-03-15-layout-more-tag.md │ │ ├── 2012-03-15-layout-sidebar-custom.md │ │ ├── 2012-03-15-layout-sidebar-nav-list.md │ │ ├── 2012-05-22-markup-text-readability-wide-page.md │ │ ├── 2012-05-22-markup-text-readability.md │ │ ├── 2013-01-05-markup-title-with-markup.md │ │ ├── 2013-01-05-markup-title-with-special-characters.md │ │ ├── 2013-01-09-markup-text-alignment.md │ │ ├── 2013-01-10-markup-image-alignment.md │ │ ├── 2013-01-11-markup-html-tags-and-formatting.md │ │ ├── 2013-05-22-markup-more-images.md │ │ ├── 2013-08-16-markup-syntax-highlighting.md │ │ ├── 2016-02-24-welcome-to-jekyll.md │ │ ├── 2016-09-21-gemified-theme-alpha.md │ │ ├── 2016-10-06-gemified-theme-beta.md │ │ ├── 2017-01-23-layout-header-video.md │ │ └── 2017-11-28-post-exclude-search.md │ ├── _recipes/ │ │ ├── chocolate-chip-cookies.md │ │ ├── oatmeal-cookies.md │ │ └── peanut-butter-cookies.md │ └── assets/ │ └── images/ │ ├── browserconfig.xml │ └── manifest.json ├── index.html ├── minimal-mistakes-jekyll.gemspec ├── package.json ├── staticman.yml └── test/ ├── Gemfile ├── _config.yml ├── _data/ │ ├── authors.yml │ └── navigation.yml ├── _pages/ │ ├── 404.md │ ├── archive-layout-with-content.md │ ├── category-archive-grid.md │ ├── category-archive.md │ ├── collection-archive-grid.html │ ├── collection-archive.html │ ├── edge-case-grid.md │ ├── edge-case.md │ ├── lorem-ipsum.md │ ├── markup-grid.md │ ├── markup.md │ ├── page-a.md │ ├── page-archive-grid.html │ ├── page-archive.html │ ├── page-b.md │ ├── portfolio-archive.md │ ├── post-archive-feature-rows.html │ ├── recipes-archive.md │ ├── sample-page.md │ ├── search.md │ ├── sitemap.md │ ├── splash-page.md │ ├── tag-archive-grid.md │ ├── tag-archive.md │ ├── terms.md │ ├── year-archive-grid.md │ └── year-archive.md ├── _pets/ │ ├── lhasa-apso.md │ └── tabby.md ├── _portfolio/ │ ├── baz-boom-identity.md │ ├── fizz-bang-identity.md │ ├── foo-bar-website.md │ └── ginger-gulp-identity.md ├── _posts/ │ ├── 2009-05-15-edge-case-nested-and-mixed-lists.md │ ├── 2009-06-01-edge-case-many-tags.md │ ├── 2009-07-02-edge-case-many-categories.md │ ├── 2009-08-06-edge-case-no-body-content.md │ ├── 2009-09-05-edge-case-no-yaml-title.md │ ├── 2009-10-05-edge-case-multiline-excerpt.md │ ├── 2009-10-05-edge-case-title-should-not-overflow-the-content-area.md │ ├── 2009-10-05-edge-case-very-long-title.md │ ├── 2010-01-07-post-modified.md │ ├── 2010-01-07-post-standard.md │ ├── 2010-01-08-post-chat.md │ ├── 2010-02-05-post-notice.md │ ├── 2010-02-05-post-quote.md │ ├── 2010-03-07-post-link.md │ ├── 2010-06-02-post-video-youtube.md │ ├── 2010-08-05-post-header-image-og-override.md │ ├── 2010-08-05-post-header-overlay-image-og-override.md │ ├── 2010-08-05-post-image-linked.md │ ├── 2010-08-05-post-image-standard.md │ ├── 2010-08-05-post-teaser-image-og-override.md │ ├── 2010-08-06-post-image-linked-caption.md │ ├── 2010-08-07-post-image-caption.md │ ├── 2010-09-09-post-gallery.md │ ├── 2010-09-10-post-twitter-embeds.md │ ├── 2010-10-25-post-future-date.md │ ├── 2012-01-02-layout-comments-disabled.md │ ├── 2012-01-02-layout-comments.md │ ├── 2012-01-02-layout-post-date-disabled.md │ ├── 2012-01-02-layout-post-date.md │ ├── 2012-01-02-layout-read-time-disabled.md │ ├── 2012-01-02-layout-read-time.md │ ├── 2012-01-02-layout-related-posts-disabled.md │ ├── 2012-01-02-layout-related-posts.md │ ├── 2012-01-02-layout-sharing-disabled.md │ ├── 2012-01-02-layout-sharing.md │ ├── 2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md │ ├── 2012-01-03-layout-table-of-contents-include-post.md │ ├── 2012-01-03-layout-table-of-contents-indent-post.md │ ├── 2012-01-03-layout-table-of-contents-post.md │ ├── 2012-01-03-layout-table-of-contents-sticky.md │ ├── 2012-03-14-layout-code-excerpt-generated.md │ ├── 2012-03-14-layout-excerpt-defined.md │ ├── 2012-03-14-layout-excerpt-generated.md │ ├── 2012-03-15-layout-author-override.md │ ├── 2012-03-15-layout-author-sidebar-disabled.md │ ├── 2012-03-15-layout-header-image-external.md │ ├── 2012-03-15-layout-header-image-horizontal.md │ ├── 2012-03-15-layout-header-image-text-readability.md │ ├── 2012-03-15-layout-header-image-vertical.md │ ├── 2012-03-15-layout-header-overlay-color.md │ ├── 2012-03-15-layout-header-overlay-image-tagline.md │ ├── 2012-03-15-layout-header-overlay-image.md │ ├── 2012-03-15-layout-more-tag.md │ ├── 2012-03-15-layout-sidebar-custom.md │ ├── 2012-03-15-layout-sidebar-nav-list.md │ ├── 2012-05-22-markup-text-readability-wide-page.md │ ├── 2012-05-22-markup-text-readability.md │ ├── 2013-01-05-markup-title-with-markup.md │ ├── 2013-01-05-markup-title-with-special-characters.md │ ├── 2013-01-09-markup-text-alignment.md │ ├── 2013-01-10-markup-image-alignment.md │ ├── 2013-01-11-markup-html-tags-and-formatting.md │ ├── 2013-05-22-markup-more-images.md │ ├── 2013-08-16-markup-syntax-highlighting.md │ ├── 2016-02-24-welcome-to-jekyll.md │ ├── 2017-01-23-layout-header-video.md │ └── 2017-11-28-post-exclude-search.md ├── _recipes/ │ ├── chocolate-chip-cookies.md │ ├── oatmeal-cookies.md │ └── peanut-butter-cookies.md └── index.html ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # editorconfig.org root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = false [*.md] trim_trailing_whitespace = false ================================================ FILE: .gitattributes ================================================ 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 ================================================ FILE: .github/CONTRIBUTING.md ================================================ # 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. For help with using the theme or general Jekyll support questions, please use the [Jekyll Talk forums](https://talk.jekyllrb.com/). Minimal Mistakes has been designed as a base for you to customize and fit your site's unique needs. Please keep this in mind when requesting features and/or submitting pull requests. If it's not something that most people will use, I probably won't consider it. When in doubt ask. This goes for author sidebar links and "share button" additions -- I have no intention of merging in every possibly option, the essentials are there to get you started :smile:. ## Pull Requests When submitting a pull request: 1. Clone the repo. 2. Create a branch off of `master` and give it a meaningful name (e.g. `my-awesome-new-feature`) and describe the feature or fix. 3. Open a pull request on GitHub. ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ 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: Theme version and system environment description: | Please include theme version, Jekyll version, public git repository, whether you are hosting with GitHub Pages, and the operating system you tested with. 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: - URL to the page with the problem: - Operating system: - Browser version: validations: required: true - type: textarea id: what-happened attributes: label: What happened? description: | Describe the problem **in detail**. For example: - What is missing? - What error do you see? Attach the error log if available. validations: required: true - 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 ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ 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. ================================================ FILE: .github/ISSUE_TEMPLATE/documentation.yml ================================================ 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 ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ## Summary ## Context ================================================ FILE: .github/workflows/bad-pr.yml ================================================ name: Cleanup bad PR on: pull_request_target: types: [opened, reopened] permissions: contents: read jobs: close-pr: permissions: pull-requests: write runs-on: ubuntu-slim 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 Type: Spam - 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 ================================================ FILE: .github/workflows/build.yml ================================================ name: build on: push: branches: - master workflow_dispatch: {} repository_dispatch: {} jobs: build: if: github.repository == 'mmistakes/minimal-mistakes' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: ruby/setup-ruby@v1 with: ruby-version: '3.2' - name: Setup cache for Bundler id: cache uses: actions/cache@v4 with: path: | docs/Gemfile.lock docs/vendor/bundle key: ${{ runner.os }}-bundler-${{ hashFiles('docs/Gemfile') }} restore-keys: | ${{ runner.os }}-bundler- - name: Install - Bundler env: MAKE: make -j2 working-directory: docs/ run: | bundle config set path vendor/bundle bundle install --jobs=4 --retry=3 bundle clean - name: Update Algolia index working-directory: docs/ run: bundle exec jekyll algolia push env: ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }} continue-on-error: true ================================================ FILE: .gitignore ================================================ # Vim *~ *.sw[p_] # IntelliJ IDEA *.idea # Sublime Text *.sublime-project *.sublime-workspace # Ruby Gem *.gem .bundle Gemfile.lock **/vendor/bundle # Node.js and NPM node_modules npm-debug.log* package-lock.json codekit-config.json # macOS .DS_Store # Jekyll generated files .jekyll-cache .jekyll-metadata .sass-cache _asset_bundler_cache _site ================================================ FILE: CHANGELOG.md ================================================ # Changelog ## [4.28.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.28.0) ### Enhancements - Updated Traditional Chinese translation (#5250) - Add built-in support for jekyll-gfm-admonitions (#5312) - Add Latte and Mocha skins from Catppuccin project (#5341) - Add support for Swetrix, a GDPR-compliant analytics provider (#5344) - Support resolving `ui-text` using `page.locale` when available (#5439) - Add `aria-label` to all nav elements for WCAG compliance (#5442) - Add IndieWeb microformat support and configurable footer `rel` attribute (#5443) - Add `og:image:alt` and `twitter:image:alt` support (#5444) - Add `fediverse:creator` meta tag for link preview attribution (#5445) - Update hardcoded icon classes for Font Awesome 6 (#5446) - Add missing brand-color rules for newer social platforms (#5447) - Add custom sidebar content hook (#5448) - Add config toggle to suppress taxonomy display on posts (#5449) - Minor changes to the PR auto labeling GitHub Actions workflow Special thanks to @bexelbie for their contributions in this release. ### Bug Fixes - Fix some social icon colors and missing Korean translations (#5103) ## [4.27.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.3) ### Bug Fixes - Add explicit CSS rules for `.sr-only` following Font Awesome 7's changes. (#5296) ## [4.27.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.2) ### Enhancements - Hide `.page__footer-follow` if there are no links nor atom feed. (#5279) - Add HTML escaping for some titles, labels and metada that was missing. (#5276) - Add optional `footer.since` for copyright time range. (#5275) ### Bug Fixes - Add `escape_once` to gallery title and alt text. ## [4.27.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.1) ### Enhancements - Add a "Share on Bluesky" button (#5179) - Add preset variables for modern font stack (#5033) - Update X share button to match brand color (#5245) ### Bug Fixes - Fix wrong icon and color for X share button. ## [4.27.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.27.0) ### Enhancements - Add RTL Support. [#4886](https://github.com/mmistakes/minimal-mistakes/pull/4886) - Add missing Polish translation. [#4890](https://github.com/mmistakes/minimal-mistakes/pull/4890) - Rewrite most directions with [CSS logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values). - Remove unnecessary "type" attribute (#4956) - The "if" means the default is never used (#4955) - For pages without a title, show the site title only once (#4959) - Use `documents-collection.html` partial in `home` layout. - Add Bulgarian translation. [#5003](https://github.com/mmistakes/minimal-mistakes/pull/5003) - Add provider and comments info to `single.html` layout for non-production. (#5068) - Tweak contrast skin $primary-color to adhere to WCAG guidelines. (#5126) - Update social share buttons to reflect Twitter rebranding to X (#5210) ### Bug Fixes - Replace a redirected link to MadeMistakes in footer. [#4882](https://github.com/mmistakes/minimal-mistakes/pull/4882) - Fix wrong float direction for `feature_row` with `type="right"`. [#4061](https://github.com/mmistakes/minimal-mistakes/issues/4061) - Fix reset stylesheet overruling `$doc-font-size`. [#4983](https://github.com/mmistakes/minimal-mistakes/issues/4983) - Fix JavaScript null error on home and splash layouts. [#4938](https://github.com/mmistakes/minimal-mistakes/issues/4938), [#4939](https://github.com/mmistakes/minimal-mistakes/pull/4939) - Fix bad <figure> HTML if "alt" contains quotes. - Fix extra newline generated in `_includes/post_pagination.html`. - Hide hidden links & remove the overlay when one is clicked. [#5042](https://github.com/mmistakes/minimal-mistakes/pull/5042) - Fix typo in "Configuration" (#5106) - bundle exec jekyll serve will fail if more than once (#5193) ### Documentation & Maintenance - Automatically update Algolia search index with GitHub Actions. ## [4.26.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.2) ### Enhancements - Add Czech localization. [#4866](https://github.com/mmistakes/minimal-mistakes/pull/4866) - Allow overriding HTML `lang` attribute on a per-page basis. [#4862](https://github.com/mmistakes/minimal-mistakes/pull/4862) ### Bug Fixes - Figure helper breaks when using code markup in caption with `popup=true`. [#4841](https://github.com/mmistakes/minimal-mistakes/issues/4841) ## [4.26.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.1) ### Bug Fixes - Disable copy button on invalid syntax highlighting blocks to avoid positioning issues. - Fix typo for `fa-dribbble` in `_utilities.scss`. - Restrict "auto scroll sticky ToC to content" feature to Chromium browsers for now. [#4826](https://github.com/mmistakes/minimal-mistakes/issues/4826) ### Documentation & Maintenance - Rewrite social icons SCSS with a loop. ### Enhancements - Change the icon of a copy button into a tick for 1.5 seconds on successful copy. ## [4.26.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.0) ### Bug Fixes - Fix an unclosed `
` tag in `page__hero.html`, near `page.header.actions`.
- Remove overlay and revert X to hamburger icon when popup disappears. [#3958](https://github.com/mmistakes/minimal-mistakes/pull/3958)
- Fix SEO title when it contains a vertical bar. [#3094](https://github.com/mmistakes/minimal-mistakes/pull/3094) [#3113](https://github.com/mmistakes/minimal-mistakes/pull/3113)
- Remove "sticky sidebar" JS as it's now completely based on CSS media queries. [#4245](https://github.com/mmistakes/minimal-mistakes/issues/4245) [#4645](https://github.com/mmistakes/minimal-mistakes/pull/4645)
### Enhancements
- Add support for [Jekyll Paginate V2](https://github.com/sverrirs/jekyll-paginate-v2) 🎉 [#2636](https://github.com/mmistakes/minimal-mistakes/pull/2636)
- Add "copy to clipboard" button for code blocks 🎉 [#2812](https://github.com/mmistakes/minimal-mistakes/pull/2812)
- Auto scroll sticky ToC with content. [#3115](https://github.com/mmistakes/minimal-mistakes/pull/3115)
- Replace "hidden" check in Liquid templates with `where_exp: "item", "item.hidden != true"`.
- Remove deprecated `page.header.cta_url` setting. [#4821](https://github.com/mmistakes/minimal-mistakes/pull/4821)
- Allow multiple nav lists in sidebar. [#2843](https://github.com/mmistakes/minimal-mistakes/pull/2843)
- Add popup parameter to `{% include figure %}` to enable Magnific Popup. [#3119](https://github.com/mmistakes/minimal-mistakes/pull/3119)
- Add target attribute for navigation link. [#3056](https://github.com/mmistakes/minimal-mistakes/pull/3056)
- Split schema to a separate include file. [#3085](https://github.com/mmistakes/minimal-mistakes/pull/3085)
- Cleanup `_includes/seo.html`.
### Documentation & Maintenance
- Rewrite skin previews on `05-configuration.md` in Liquid template.
- Remove unused classes from `_layouts/single.html`.
- Migrate npm run scripts to Ruby Rake tasks.
- Add Rake task `version` for updating all hard-coded version numbers from `package.json` all at once.
- Merge `categories` and `tags` layout into `_includes/posts-taxonomy.html`.
- Update Social Sharing links section. [#4066](https://github.com/mmistakes/minimal-mistakes/pull/4066)
## [4.25.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.1)
### Bug Fixes
- "You may also enjoy" no longer recommends hidden posts. [#4653](https://github.com/mmistakes/minimal-mistakes/issues/4653)
- Replaced dead link to "Viewport and Media Queries" slides. [#4421](https://github.com/mmistakes/minimal-mistakes/discussions/4421)
- Fix broken `where_exp` in `lunr-store.js` for Jekyll < 4.0. [#4808](https://github.com/mmistakes/minimal-mistakes/issues/4808)
### Enhancements
- Add Ukrainian translations. [#4273](https://github.com/mmistakes/minimal-mistakes/pull/4273)
- Add more configuration for Giscus. [#4274](https://github.com/mmistakes/minimal-mistakes/pull/4274)
- Bump jekyll-toc to [v1.2.1](https://github.com/allejo/jekyll-toc/releases/tag/v1.2.1).
### Documentation & Maintenance
- Bump shell-quote from 1.7.1 to 1.7.3 [#3692](https://github.com/mmistakes/minimal-mistakes/issues/3692)
- Add `after-content.html` and `before-related.html` includes to ease docs site overrides.
- GitHub Workflows security hardening [#3884](https://github.com/mmistakes/minimal-mistakes/issues/3884)
- Replace Font Awesome v5 search page with v6.
- Try adding an FAQ page.
- Update remote theme reference in Quick-Start Guide to point to 4.25.0. [#4809](https://github.com/mmistakes/minimal-mistakes/issues/4809)
## [4.25.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.25.0)
### Bug Fixes
- Fix Linkedin social share link [#4754](https://github.com/mmistakes/minimal-mistakes/issues/4754)
- Fix non-English characters being url encoded in breadcrumb [#3819](https://github.com/mmistakes/minimal-mistakes/issues/3819)
- Fix wrong `first_page_path` because of hard-coded `page:num` [#3778](https://github.com/mmistakes/minimal-mistakes/issues/3778)
- Remove JS and other files from search index [#4000](https://github.com/mmistakes/minimal-mistakes/pull/4000)
- Fix unlisted YouTube video embeds in documentation/test sites. [#3649](https://github.com/mmistakes/minimal-mistakes/issues/3649)
- Fix error in Algolia search script when returning a hit that without `html` and `hightlight.html`. [#3101](https://github.com/mmistakes/minimal-mistakes/issues/3101) [#3102](https://github.com/mmistakes/minimal-mistakes/pull/3102)
- Fix inline code style not applied to stylized text. [#3253](https://github.com/mmistakes/minimal-mistakes/pull/3253)
- Fix Keybase icon in author sidebar. [#3221](https://github.com/mmistakes/minimal-mistakes/pull/3221)
- Fix sort order of Staticman comments when data files aren't named alphabetically. [#3184](https://github.com/mmistakes/minimal-mistakes/pull/3184)
- Fix `layout: compress` issue with HTML comment in video include. [#3117](https://github.com/mmistakes/minimal-mistakes/pull/3117)
- Add Magnific Popup class to anchors that only contain an `img` element. [#3111](https://github.com/mmistakes/minimal-mistakes/issues/3111) [#3114](https://github.com/mmistakes/minimal-mistakes/pull/3114)
- Fix heading level of related posts section from `h4` to `h2` to improve accessibility and SEO. [#3064](https://github.com/mmistakes/minimal-mistakes/pull/3064)
- Fix grammar error in German localized UI text string. [#3063](https://github.com/mmistakes/minimal-mistakes/pull/3063)
- Remove site.url from first breadcrumb link. [#3051](https://github.com/mmistakes/minimal-mistakes/pull/3051)
### Enhancements
- Add `site.copyright` and `site.copyright_url` config options [#4313](https://github.com/mmistakes/minimal-mistakes/pull/4313)
- Lazy-load InstantSearch scripts and stylesheets [#3691](https://github.com/mmistakes/minimal-mistakes/pull/3691)
- Improve Finnish translations [#4595](https://github.com/mmistakes/minimal-mistakes/pull/4595)
- Remove redundant downcase from \_layouts/categories.html. [#4531](https://github.com/mmistakes/minimal-mistakes/pull/4531)
- Load latest Font Awesome package. [#3765](https://github.com/mmistakes/minimal-mistakes/pull/3765)
- Add missing Polish missing UI text strings. [#3969](https://github.com/mmistakes/minimal-mistakes/pull/3969)
- Update breadcrumbs conditional to enable/disable them via Front Matter on pages using `layout: single`. [#3096](https://github.com/mmistakes/minimal-mistakes/pull/3096) [#3669](https://github.com/mmistakes/minimal-mistakes/pull/3669)
- Remove Internet Explorer 9 upgrade notice. [#3666](https://github.com/mmistakes/minimal-mistakes/pull/3666)
- Add Kiswahili localized UI text strings. [#3489](https://github.com/mmistakes/minimal-mistakes/pull/3489)
- Exclude `main.scss` from Lunr search index.
- Allow `site.pages` to be indexed and searched via Lunr. [#3352](https://github.com/mmistakes/minimal-mistakes/pull/3352)
- Update jQuery to v3.6.0. [#3254](https://github.com/mmistakes/minimal-mistakes/pull/3254)
- Use notice `` colors for blockquotes that have `notice--` classes applied. [#3140](https://github.com/mmistakes/minimal-mistakes/pull/3140) [#3068](https://github.com/mmistakes/minimal-mistakes/issues/3068)
- Add sameAs itemprop to author link. [#3087](https://github.com/mmistakes/minimal-mistakes/pull/3087)
- Update and add missing Brazilian Portuguese translations. [#3204](https://github.com/mmistakes/minimal-mistakes/pull/3204)
- Add optional label attribute for utterances comments. [#3128](https://github.com/mmistakes/minimal-mistakes/pull/3128)
- Add missing Danish translations. [#3095](https://github.com/mmistakes/minimal-mistakes/pull/3095)
- Add ARIA role to search forms. [#3086](https://github.com/mmistakes/minimal-mistakes/pull/3086)
- Add overflow scroll bar to sticky table of contents that are taller than the viewport's height. [#2874](https://github.com/mmistakes/minimal-mistakes/pull/2874)
- Add Microformats markup. [#3052](https://github.com/mmistakes/minimal-mistakes/pull/3052)
### Documentation & Maintenance
- Fix links to Font Awesome gallery. [#3599](https://github.com/mmistakes/minimal-mistakes/pull/3599)
- Fix GreedyNav.js attribution link. [#3553](https://github.com/mmistakes/minimal-mistakes/pull/3553)
- Fix typo about loading JavaScript in layout documentation. [#3350](https://github.com/mmistakes/minimal-mistakes/pull/3350)
- Fix documentation typos. [#3232](https://github.com/mmistakes/minimal-mistakes/pull/3232) [#3318](https://github.com/mmistakes/minimal-mistakes/pull/3318)
- Add link to documentation clarifying how to add plugins. [#3181](https://github.com/mmistakes/minimal-mistakes/pull/3181)
- Fix broken documentation link and add Baidu site verification to `_config.yml` files. [#3139](https://github.com/mmistakes/minimal-mistakes/pull/3139)
- Bump path-parse from 1.0.6 to 1.0.7. [#3116](https://github.com/mmistakes/minimal-mistakes/pull/3116)
- Automatically close invalid PRs using GitHub Actions. [#3313](https://github.com/mmistakes/minimal-mistakes/pull/3313)
- Add instructions on how to unminify `main.js` for easier browser debugging. [#3055](https://github.com/mmistakes/minimal-mistakes/pull/3055)
- Consolidate hard-coded version numbers where possible.
- Add Rakefile for automatically syncing CHANGELOG with history and synched them.
## [4.24.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.24.0)
### Bug Fixes
- Fix README text for Gumshoejs license. [#3024](https://github.com/mmistakes/minimal-mistakes/pull/3024)
- Remove `tabindex="-1"` from `input` elements in `search.html` layout to allow them to be accessible by keyboard. [#2982](https://github.com/mmistakes/minimal-mistakes/issues/2982)
- Fix broken sidebar image in sample post. [#3013](https://github.com/mmistakes/minimal-mistakes/issues/3013)
- Fix broken links in Upgrading documentation. [#3004](https://github.com/mmistakes/minimal-mistakes/issues/3004)
### Enhancements
- Remove IE9 flexbox fallback. [#3042](https://github.com/mmistakes/minimal-mistakes/pull/3042)
- Remove `h2` from skip links navigation as it is not important for site structure. [#3012](https://github.com/mmistakes/minimal-mistakes/pull/3012)
- Loads Font Awesome asynchronously. [#2967](https://github.com/mmistakes/minimal-mistakes/pull/2967)
- Replace custom search icon SVG with Font Awesome icon. [#2774](https://github.com/mmistakes/minimal-mistakes/pull/2774)
- Adds support for giscus comments. [#3022](https://github.com/mmistakes/minimal-mistakes/pull/3022)
## [4.23.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.23.0)
### Enhancements
- Add Arabic (عربي) localized UI text strings. [#2936](https://github.com/mmistakes/minimal-mistakes/pull/2936)
- Update onchange and uglify-js dependencies.
- Document head and footer `custom.html` includes. [#2815](https://github.com/mmistakes/minimal-mistakes/pull/2815)
- Color notices based on skin colors instead of fixed values. [#2887](https://github.com/mmistakes/minimal-mistakes/pull/2887)
- Add configurable datetime format. [#2844](https://github.com/mmistakes/minimal-mistakes/pull/2844)
- Add Baidu site verification [#2830](https://github.com/mmistakes/minimal-mistakes/pull/2830)
- Add `alt` attribute to site logo. [#2529](https://github.com/mmistakes/minimal-mistakes/issues/2529) [#2824](https://github.com/mmistakes/minimal-mistakes/issues/2824)
### Bug Fixes
- Fix menu toggle to properly show close icon when open.
- Fix Jekyll environment note in configuration documentation. [#2912](https://github.com/mmistakes/minimal-mistakes/issues/2912)
- Fix typo in Helpers documentation. [#2940](https://github.com/mmistakes/minimal-mistakes/pull/2940)
- Remove all references to official public Staticman API instance. [#2818](https://github.com/mmistakes/minimal-mistakes/issues/2818) [#2831](https://github.com/mmistakes/minimal-mistakes/pull/2831)
- Remove Google Search CSS. [#2852](https://github.com/mmistakes/minimal-mistakes/issues/2852) [#2855](https://github.com/mmistakes/minimal-mistakes/pull/2855)
## [4.22.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.22.0)
### Bug Fixes
- Remove Google Search script from `404.md`. [#2597](https://github.com/mmistakes/minimal-mistakes/issues/2597) [#2737](https://github.com/mmistakes/minimal-mistakes/pull/2737) [#2789](https://github.com/mmistakes/minimal-mistakes/pull/2789)
- Fix Font Awesome icon color in `contrast`, `dark`, `mint`, `neon`, `plum`, and `sunrise` skins. [#2724](https://github.com/mmistakes/minimal-mistakes/issues/2724)
### Enhancements
- Allow custom sorting for collections. [#2723](https://github.com/mmistakes/minimal-mistakes/pull/2723)
- Use `sort_natural` instead of custom Liquid logic to sort tags and categories. [#2756](https://github.com/mmistakes/minimal-mistakes/pull/2756)
- Add configuration option to toggle off RSS feed link in `` and site footer. [#2787](https://github.com/mmistakes/minimal-mistakes/pull/2787)
- Upgrade Lunrjs to 2.3.9 and switch to `relative_url`. [#2805](https://github.com/mmistakes/minimal-mistakes/pull/2805)
- Adds `.webp` to list of supported image extensions for the image popup lightbox. [#2788](https://github.com/mmistakes/minimal-mistakes/pull/2788)
- Add Hebrew localized UI text strings. [#2760](https://github.com/mmistakes/minimal-mistakes/pull/2760)
- Update documentation to include `toc_sticky` parameter's description. [#2741](https://github.com/mmistakes/minimal-mistakes/pull/2741)
- Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731)
- Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734)
- Update allejo/jekyll-toc to v1.1.0, skip headings without an ID. [#2752](https://github.com/mmistakes/minimal-mistakes/pull/2752)
- Allow custom gradient for page header overlay. [#2806](https://github.com/mmistakes/minimal-mistakes/pull/2806)
## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0)
### Bug Fixes
- Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664)
- Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697)
- Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692)
- Fix a small typo in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718)
### Enhancements
- Update jQuery to 3.5.1. [#2713](https://github.com/mmistakes/minimal-mistakes/pull/2713)
- Add Indonesian localized UI text strings. [#2725](https://github.com/mmistakes/minimal-mistakes/pull/2725)
- Update Vietnamese localized UI text strings. [#2722](https://github.com/mmistakes/minimal-mistakes/pull/2722)
- Add Norwegian (Norsk) localized UI text strings. [#2702](https://github.com/mmistakes/minimal-mistakes/pull/2702)
- Update allejo/jekyll-toc to v1.0.14 [#2700](https://github.com/mmistakes/minimal-mistakes/pull/2700)
## [4.20.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.2)
### Bug Fixes
- Fix broken link in documentation. [#2677](https://github.com/mmistakes/minimal-mistakes/issues/2677)
- Fix typo in documentation. [#2678](https://github.com/mmistakes/minimal-mistakes/issues/2678)
- Remove duplicate CSS definitions. [#2666](https://github.com/mmistakes/minimal-mistakes/pull/2666)
- Fix `entries_layout: grid` in various layouts. [#2639](https://github.com/mmistakes/minimal-mistakes/issues/2639)
- Change `fa` to `fas` for Font Awesome 5. [#2649](https://github.com/mmistakes/minimal-mistakes/pull/2649)
### Enhancements
- Refactor page meta include. [#2641](https://github.com/mmistakes/minimal-mistakes/pull/2641)
- Add `article:author` Open Graph markup. [#2670](https://github.com/mmistakes/minimal-mistakes/pull/2670)
## [4.20.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.1)
### Bug Fixes
- Fix grid `entries_layout` in home.html. [#2616](https://github.com/mmistakes/minimal-mistakes/pull/2616)
## [4.20.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.20.0)
### Bug Fixes
- Add `relative_url` filter to author home link [#2575](https://github.com/mmistakes/minimal-mistakes/pull/2575)
- Fix `analytics.provider` config comment to list all analytics providers. [#2607](https://github.com/mmistakes/minimal-mistakes/pull/2607)
- Fix typo in installation documentation. [#2570](https://github.com/mmistakes/minimal-mistakes/pull/2570)
- Fix broken Lunr search with Jekyll v4.1.0. [#2617](https://github.com/mmistakes/minimal-mistakes/pull/2617)
### Enhancements
- Add an optional date alongside the reading time. To enable set `show_date: true` similar to how reading time is. [#2526](https://github.com/mmistakes/minimal-mistakes/pull/2526)
- Remove hidden posts from posts.html layout. [#2625](https://github.com/mmistakes/minimal-mistakes/pull/2625)
- Add entry layout configuration for `list` (default) or `grid` views on `layout: home`. [#2616](https://github.com/mmistakes/minimal-mistakes/pull/2616)
- Add missing Chinese translations. [#2576](https://github.com/mmistakes/minimal-mistakes/pull/2576)
- Improve Chinese translations. [#2626](https://github.com/mmistakes/minimal-mistakes/pull/2626)
- Add `line-height` to `h4` element in notice helper. [#2602](https://github.com/mmistakes/minimal-mistakes/pull/2602)
- Improve Algolia search. [#2572](https://github.com/mmistakes/minimal-mistakes/pull/2572)
- Update link to wtfpl license in README. [#2571](https://github.com/mmistakes/minimal-mistakes/pull/2571)
- Ignore teaser headline in table of contents when including posts list in another page. [#2558](https://github.com/mmistakes/minimal-mistakes/pull/2558)
- Replace Font Awesome Kits with CSS from jsDelivr CDN. [#2583](https://github.com/mmistakes/minimal-mistakes/pull/2583)
- Add `danmaku` option to Bilibili video provider and add corresponding documentation/ [#2599](https://github.com/mmistakes/minimal-mistakes/pull/2599)
- Update documentation about loading l10n data file from the theme-gem. [#2621](https://github.com/mmistakes/minimal-mistakes/issues/2621) [#2624](https://github.com/mmistakes/minimal-mistakes/pull/2624)
## [4.19.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.3)
### Enhancements
- Update GreedyNav.js to reduce masthead link overflow/shifting on mobile devices. [#2551](https://github.com/mmistakes/minimal-mistakes/issues/2551)
- Replace `` in `comments.html` include and add `custom_scripts.html` include for loading custom comment provider JavaScript in the footer. [#2549](https://github.com/mmistakes/minimal-mistakes/issues/2549)
- Move page date Liquid to include. [#2544](https://github.com/mmistakes/minimal-mistakes/pull/2544)
- Strip trailing whitespace in `seo_description`. [#2542](https://github.com/mmistakes/minimal-mistakes/pull/2542)
- Improve sticky sidebar's appearance with short content. [#2514](https://github.com/mmistakes/minimal-mistakes/pull/2514)
## [4.19.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.2)
### Enhancements
- Add support for bilibili videos in [responsive video helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#responsive-video-embed). [#2512](https://github.com/mmistakes/minimal-mistakes/pull/2512)
- Add Myanmar (Burmese) localized UI text strings. [#2500](https://github.com/mmistakes/minimal-mistakes/pull/2500)
- Improve author links underline on hover. [#2472](https://github.com/mmistakes/minimal-mistakes/pull/2472)
- Add documentation for applying Front Matter defaults to jekyll-archives pages. [#2466](https://github.com/mmistakes/minimal-mistakes/pull/2466)
- Add missing Vietnamese translations. [#2459](https://github.com/mmistakes/minimal-mistakes/pull/2459) [#2486](https://github.com/mmistakes/minimal-mistakes/pull/2486)
- Fix Finnish localized UI text strings. [#2455](https://github.com/mmistakes/minimal-mistakes/pull/2455)
- Clarify documentation that Lunr only searches documents in collections. [#2450](https://github.com/mmistakes/minimal-mistakes/pull/2450)
- Add guide on applying Front Matter defaults to jekyll-archives pages [#2466](https://github.com/mmistakes/minimal-mistakes/pull/2466)
### Bug Fixes
- Fix typo in configuration documentation. [#2497](https://github.com/mmistakes/minimal-mistakes/pull/2497)
- Fix "Follow menu falls under post links" on small screens. [#2479](https://github.com/mmistakes/minimal-mistakes/issues/2479)
- Hide index page from page-archive. [#2482](https://github.com/mmistakes/minimal-mistakes/pull/2482)
## [4.19.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.1)
### Enhancements
- Add [Dracula](https://draculatheme.com/) Base16 syntax highlighting theme Sass variables to [stylesheets documentation](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/#syntax-highlighting). [#2438](https://github.com/mmistakes/minimal-mistakes/pull/2438)
- Update links to `HTTPS` and remove Google+ from configuration documentation. [#2432](https://github.com/mmistakes/minimal-mistakes/pull/2432)
- Use `first_page_path` from jekyll-paginate-v2 if available. [#2431](https://github.com/mmistakes/minimal-mistakes/pull/2431)
- Update onchange and uglify-js dependencies.
- Update smooth-scroll.js to `v16.1.2`. [#2430](https://github.com/mmistakes/minimal-mistakes/issues/2430)
### Bug Fixes
- Fix author profile links `z-index` order on small screens. [#2440](https://github.com/mmistakes/minimal-mistakes/issues/2440)
## [4.19.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.19.0)
### Enhancements
- Add "click" overlay to close masthead and follow button menus when open. [#1168](https://github.com/mmistakes/minimal-mistakes/issues/1168)
- Remove deprecated Staticman v1 configurations from `_config.yml`. [#2386](https://github.com/mmistakes/minimal-mistakes/issues/2386)
- Use `relative_url` and `absolute_url` filters where possible. [#2387](https://github.com/mmistakes/minimal-mistakes/pull/2387)
- Improve headline hierarchy and add Sass specific variables `$h-size-x`. [#2423](https://github.com/mmistakes/minimal-mistakes/issues/2423)
- Improve accessibility of `default` skin by increasing color contrast of text and links.
- Hide posts with `hidden: true` YAML front matter from appearing in listings. [#2345](https://github.com/mmistakes/minimal-mistakes/pull/2345)
- Add Irish (Gaeilge) localized UI text strings. [#2422](https://github.com/mmistakes/minimal-mistakes/pull/2422)
- Remove `box-shadow` on radio and checkbox inputs. [#2398](https://github.com/mmistakes/minimal-mistakes/pull/2398)
- Bump Jekyll gem dependency to `v3.7`.
### Bug Fixes
- Fix documentation around using `bundle info` command. [#2425](https://github.com/mmistakes/minimal-mistakes/pull/2425)
- Fix rake vulnerability in `.gemspec` file.
- Fix Staticman v2 comment submission. [#2402](https://github.com/mmistakes/minimal-mistakes/pull/2402)
- Fix repeated site base path for masthead logo. [#2385](https://github.com/mmistakes/minimal-mistakes/pull/2385)
## [4.18.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.18.1)
### Bug Fixes
- Fix compatibility issue with jekyll-paginate-v2. [#2381](https://github.com/mmistakes/minimal-mistakes/pull/2381)
## [4.18.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.18.0)
### Enhancements
- Allow `home` layout to display posts without pagination. [#2378](https://github.com/mmistakes/minimal-mistakes/pull/2378)
- Add links to high resolution skin screenshots in README. [#2363](https://github.com/mmistakes/minimal-mistakes/issues/2363)
- Update README and LICENSE. [#2367](https://github.com/mmistakes/minimal-mistakes/pull/2367)
- Update `.gitignore` file. [#2366](https://github.com/mmistakes/minimal-mistakes/pull/2366)
- Allow override of page excerpt in hero header via `tagline` YAML front matter. [#2307](https://github.com/mmistakes/minimal-mistakes/pull/2307)
- Exclude `package-lock.json` from Jekyll build. [#2364](https://github.com/mmistakes/minimal-mistakes/pull/2364)
- Use `%-d` instead of `%d` so displayed dates aren't padded with zero. [#2359](https://github.com/mmistakes/minimal-mistakes/pull/2359)
- Update table of contents helper (`toc.html`) to [v1.0.8](https://github.com/allejo/jekyll-toc/releases). [#2355](https://github.com/mmistakes/minimal-mistakes/pull/2355)
- Add missing Dutch localized UI text strings. [#2321](https://github.com/mmistakes/minimal-mistakes/pull/2321)
- Support page header (hero) in `archive-taxonomy` layout. [#2320](https://github.com/mmistakes/minimal-mistakes/pull/2320)
- Add social icon color for Keybase. [#2302](https://github.com/mmistakes/minimal-mistakes/pull/2302)
### Bug Fixes
- Fix JavaScript comments in Disqus include to be compatible with `compress` layout. [#2373](https://github.com/mmistakes/minimal-mistakes/pull/2373)
- Fix wrong newline concatenation in SEO description [#2368](https://github.com/mmistakes/minimal-mistakes/pull/2368) [#2354](https://github.com/mmistakes/minimal-mistakes/issues/2354)
- Fix Staticman v2/v3 conditional for showing comments. [#2351](https://github.com/mmistakes/minimal-mistakes/pull/2351)
- Fix masthead logo path. [#2332](https://github.com/mmistakes/minimal-mistakes/pull/2332)
- Fix schema.org dates to ISO-8601. [#2339](https://github.com/mmistakes/minimal-mistakes/pull/2339)
- Fix background color of code blocks in notices. [#2328](https://github.com/mmistakes/minimal-mistakes/pull/2328)
- Fix alignment of feature rows when placed next to a sticky sidebar. [#2327](https://github.com/mmistakes/minimal-mistakes/issues/2327)
- Fix `seo_description` in `_includes/seo.html`. [#2326](https://github.com/mmistakes/minimal-mistakes/pull/2326)
- Fix typo in `_config.yml`. [#2319](https://github.com/mmistakes/minimal-mistakes/pull/2319)
## [4.17.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.2)
### Enhancements
- Add collection step to documentation about creating a portfolio page. [#2294](https://github.com/mmistakes/minimal-mistakes/pull/2294)
- Replace sticky footer JavaScript with flexbox styles. [#2289](https://github.com/mmistakes/minimal-mistakes/pull/2289)
### Bug Fixes
- Fix sticky footer when using MozBar extension. [#2281](https://github.com/mmistakes/minimal-mistakes/issues/2281)
## [4.17.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.1)
### Enhancements
- Update Chinese (Simplified) localized UI text strings. [#2286](https://github.com/mmistakes/minimal-mistakes/pull/2286)
- Update list of 3rd party JavaScript used and licenses. [#2276](https://github.com/mmistakes/minimal-mistakes/pull/2276)
### Bug Fixes
- Fix indention of nested GFM task lists. [#2283](https://github.com/mmistakes/minimal-mistakes/issues/2283)
## [4.17.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.17.0)
### Enhancements
- Show a permalink anchor when hovering over headings in main content area. [#2251](https://github.com/mmistakes/minimal-mistakes/pull/2251)
- Allow per-page override of `words_per_minute`. [#2250](https://github.com/mmistakes/minimal-mistakes/pull/2250)
- Update [onchange](https://www.npmjs.com/package/onchange) development dependency in `package.json`. [#2241](https://github.com/mmistakes/minimal-mistakes/issues/2241)
- Add Catalan localized UI text strings. [#2237](https://github.com/mmistakes/minimal-mistakes/pull/2237)
### Bug Fixes
- Remove extraneous space from Internet Explorer conditional statement. [#2273](https://github.com/mmistakes/minimal-mistakes/pull/2273)
- Fix typo in `_config.yml`. [#2243](https://github.com/mmistakes/minimal-mistakes/pull/2243)
- Replace `http` URLs with `https` where applicable in `_config.yml`. [#2244](https://github.com/mmistakes/minimal-mistakes/pull/2244)
## [4.16.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.6)
### Enhancements
- Relax Jekyll dependency to allow for version 4.0.
- Add missing Spanish localized UI text strings. [#2229](https://github.com/mmistakes/minimal-mistakes/pull/2229)
- Allow Markdown in author bio. [#2215](https://github.com/mmistakes/minimal-mistakes/pull/2215)
### Bug Fixes
- Fix `site.url` in Organization/Person JSON-LD schema. [#1906](https://github.com/mmistakes/minimal-mistakes/issues/1906)
- Remove full stop in some `comment_form_info` UI text strings. [#2220](https://github.com/mmistakes/minimal-mistakes/pull/2220)
- Fix default `site.author` in seo.html [#2230](https://github.com/mmistakes/minimal-mistakes/pull/2230)
- Fix overlapping links (linked to and post's permalink) in post link type. [#2222](https://github.com/mmistakes/minimal-mistakes/issues/2222)
## [4.16.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.5)
### Enhancements
- Add optional site subtitle to masthead. [#2173](https://github.com/mmistakes/minimal-mistakes/issues/2173)
- Add missing Punjabi and Hindi localized UI text strings. [#2212](https://github.com/mmistakes/minimal-mistakes/pull/2212)
- Add missing Korean localized UI text strings. [#2209](https://github.com/mmistakes/minimal-mistakes/pull/2209)
- Use [Font Awesome Kits](https://blog.fontawesome.com/introducing-font-awesome-kits-7134d1d59959) to use the latest version of icons. [#2184](https://github.com/mmistakes/minimal-mistakes/issues/2184)
- Remove unnecessary console.log in `lunr-en.js` and `lunr-gr.js` JavaScript. [#2193](https://github.com/mmistakes/minimal-mistakes/issues/2193)
- Remove unnecessary `type="text/javascript"` from Google Analytics JavaScript. [#2190](https://github.com/mmistakes/minimal-mistakes/pull/2190)
- Update links and fix typos in documentation. [#2186](https://github.com/mmistakes/minimal-mistakes/pull/2186)
- Add skip links. [#2182](https://github.com/mmistakes/minimal-mistakes/issues/2182)
### Bug Fixes
- Fix aria issues with Lunr search form. [#2211](https://github.com/mmistakes/minimal-mistakes/pull/2211)
- Fix missing fallback title for table of contents.
## [4.16.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.4)
### Enhancements
- Update Brazilian Portuguese localized UI text strings. [#2162](https://github.com/mmistakes/minimal-mistakes/pull/2162)
- Update Font Awesome to v5.8.2. [#2150](https://github.com/mmistakes/minimal-mistakes/pull/2150)
- Add missing Spanish localized UI text strings. [#2149](https://github.com/mmistakes/minimal-mistakes/pull/2149)
### Bug Fixes
- Fix arithmetic in `_form.scss` partial. [#2169](https://github.com/mmistakes/minimal-mistakes/pull/2169)
- Fix pound symbol not displaying properly for post categories and tags. [#2156](https://github.com/mmistakes/minimal-mistakes/issues/2156)
- Fix permalink stacking order and click-able area in archives.
## [4.16.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.3)
### Enhancements
- Update jQuery to v3.4.1. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137)
- Update Gumshoe to v5.1.1. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140)
### Bug Fixes
- Fix JavaScript error when resizing pages with table of contents. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140)
## [4.16.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.2)
### Bug Fixes
- Revert jQuery back to version v3.3.1, v.3.4.0 causes issues with other plugins that haven't been updated. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137)
## [4.16.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.1)
### Enhancements
- Update [`compress` layout](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#compress-layout) to v3.1.0. [#2128](https://github.com/mmistakes/minimal-mistakes/pull/2128)
- Update jQuery to v3.4.0. [#2129](https://github.com/mmistakes/minimal-mistakes/pull/2129)
### Bug Fixes
- Fix Gumshoe related JavaScript error on pages without a table of contents. [#2124](https://github.com/mmistakes/minimal-mistakes/pull/2124)
## [4.16.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.0)
### Enhancements
- Improve search `input` semantics for Lunr and Google search providers. [#2123](https://github.com/mmistakes/minimal-mistakes/pull/2123)
- Allow adding JavaScript files after those bundled in the theme. [#2110](https://github.com/mmistakes/minimal-mistakes/issues/2110) [#2116](https://github.com/mmistakes/minimal-mistakes/pull/2116)
- Add `$max-width` Sass variable for adjusting page content's maximum width. [#2093](https://github.com/mmistakes/minimal-mistakes/pull/2093)
- Add Thai localized UI text strings. [#2111](https://github.com/mmistakes/minimal-mistakes/pull/2111)
- Update Font Awesome to [v5.8.1](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.8.1). [#2102](https://github.com/mmistakes/minimal-mistakes/pull/2102)
- Add missing Vietnamese localized UI text strings. [#2097](https://github.com/mmistakes/minimal-mistakes/pull/2097)
- Replace jQuery Smooth Scroll with Smooth Scroll + Gumshoe. [#2082](https://github.com/mmistakes/minimal-mistakes/pull/2082)
- Add styling for [GFM task lists](https://help.github.com/en/articles/about-task-lists#creating-task-lists). [#2092](https://github.com/mmistakes/minimal-mistakes/issues/2092)
- Update Google Universal Analytics to load async. [#2079](https://github.com/mmistakes/minimal-mistakes/pull/2079)
- Remove Google+ social sharing button, comment provider, and author link configs from theme.
- Add missing Chinese text strings. [#2072](https://github.com/mmistakes/minimal-mistakes/pull/2072)
### Bug Fixes
- Fix table of contents active link styling.
- Add missing Hindi localized UI text strings. [#2105](https://github.com/mmistakes/minimal-mistakes/pull/2105) [#2106](https://github.com/mmistakes/minimal-mistakes/pull/2106)
- Fix Brazilian Portuguese text strings. [#2098](https://github.com/mmistakes/minimal-mistakes/pull/2098)
- Fix typo in French `results_found` text string. [#2096](https://github.com/mmistakes/minimal-mistakes/pull/2096)
- Fix figures inside of list elements. [#2094](https://github.com/mmistakes/minimal-mistakes/pull/2094)
- Remove Font Awesome `data-search-pseudo-elements` attribute as it degrades smooth scroll performance. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075#issuecomment-472437014)
- Fix footnote links incompatibility with smooth scroll plugin. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075)
- Loosen Bundler dependency in ruby gem.
## [4.15.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.2)
### Enhancements
- Close search overlay with Esc. [#2055](https://github.com/mmistakes/minimal-mistakes/pull/2055)
- Update Swedish localized UI text strings. [#2056](https://github.com/mmistakes/minimal-mistakes/pull/2056)
- Update Font Awesome to 5.7.1 and add `data-search-pseudo-elements` attribute. [#2053](https://github.com/mmistakes/minimal-mistakes/pull/2053)
- Add Malayalam localized UI text strings. [#2037](https://github.com/mmistakes/minimal-mistakes/pull/2037)
### Bug Fixes
- Fix table of contents errors with non-English characters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042)
- Fix `site.logo` false positives. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-455770730)
- Add empty `alt` attribute to `site.logo` image. [#2035](https://github.com/mmistakes/minimal-mistakes/pull/2035)
## [4.15.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.1)
### Bug Fixes
- Fix empty `` when `site_logo` is not assigned. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-454809876)
## [4.15.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.0)
### Enhancements
- Add logo and title customization to the masthead. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026)
- Add support to customize `issue-term` for utterances comment provider. [#2022](https://github.com/mmistakes/minimal-mistakes/pull/2022)
- Allow custom canonical url on a page-by-page basis. [#2021](https://github.com/mmistakes/minimal-mistakes/pull/2021)
- Update table of contents navigation based on scroll position to indicate which link is currently active in the viewport. [#2020](https://github.com/mmistakes/minimal-mistakes/pull/2020)
- Clicking table of contents links changes URL has fragment. [#2019](https://github.com/mmistakes/minimal-mistakes/pull/2019) [#2023](https://github.com/mmistakes/minimal-mistakes/pull/2023)
## [4.14.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.2)
### Enhancements
- Improve accessibility by adding label text to search button toggle. [#2014](https://github.com/mmistakes/minimal-mistakes/pull/2014)
- Update Lunr to 2.3.5. [#2010](https://github.com/mmistakes/minimal-mistakes/pull/2010)
- Shorten Internet Explorer conditional statement in `_includes/head.html`. [#2006](https://github.com/mmistakes/minimal-mistakes/pull/2006)
- Add Persian localized UI text strings. [#2004](https://github.com/mmistakes/minimal-mistakes/pull/2004)
- Remove unused JavaScript variables from Staticman comment script. [#1996](https://github.com/mmistakes/minimal-mistakes/pull/1996)
- Update Font Awesome to 5.6.0. [#1995](https://github.com/mmistakes/minimal-mistakes/pull/1995)
- Change remaining schema.org markup to `https`. [#1978](https://github.com/mmistakes/minimal-mistakes/pull/1978)
- Update NPM dependencies.
### Bug Fixes
- Fix wide tables that overflow parent container. [#2008](https://github.com/mmistakes/minimal-mistakes/issues/2008)
- Fix Spanish `comments_label` and `comments_title` UI text strings. [#1997](https://github.com/mmistakes/minimal-mistakes/pull/1997)
- Allow sidebar navigation with custom sidebar content. [#1986](https://github.com/mmistakes/minimal-mistakes/issues/1986)
- Fix Google Custom Search JavaScript error when not using Instant Search. [#1983](https://github.com/mmistakes/minimal-mistakes/pull/1983)
## [4.14.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.1)
### Bug Fixes
- Fix closed navicon on hover.
## [4.14.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.0)
### Enhancements
- Change schema.org markup to `https`. [#1969](https://github.com/mmistakes/minimal-mistakes/pull/1969)
- Add Google Drive as video provider. [#1967](https://github.com/mmistakes/minimal-mistakes/pull/1967)
- Match `:focus` color to skin.
- Add support for [utterances](https://utteranc.es/) comments. [#1909](https://github.com/mmistakes/minimal-mistakes/issues/1909)
- Use privacy aware embed options for YouTube and Vimeo in [responsive video helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#responsive-video-embed). [#1964](https://github.com/mmistakes/minimal-mistakes/pull/1964)
- Add `rel="nofollow noopener noreferrer"` to author profile links. [#1924](https://github.com/mmistakes/minimal-mistakes/pull/1924)
- Improve color contrast of primary buttons and links.
- Add Punjabi localized UI text strings. [#1962](https://github.com/mmistakes/minimal-mistakes/pull/1962)
- Add Hindi localized UI text strings. [#1888](https://github.com/mmistakes/minimal-mistakes/pull/1888)
- Update Lunr to `2.3.3`. [#1885](https://github.com/mmistakes/minimal-mistakes/pull/1885)
- Cache "static" includes to improve build performance. **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 throw `Unknown tag 'include_cached'` errors at build. [#1874](https://github.com/mmistakes/minimal-mistakes/pull/1874)
- Make entire feature and archive items "clickable". [#1864](https://github.com/mmistakes/minimal-mistakes/pull/1864)
- Allow custom Staticman endpoints. [#1842](https://github.com/mmistakes/minimal-mistakes/issues/1842)
- Remove `type="text/css"` from Algolia script includes. [#1836](https://github.com/mmistakes/minimal-mistakes/pull/1836)
- Remove unneeded `HandheldFriendly` and `MobileOptimized` meta tags. [#1837](https://github.com/mmistakes/minimal-mistakes/pull/1837)
- Update Font Awesome to version `5.5.0` and add `integrity` hash. [#1922](https://github.com/mmistakes/minimal-mistakes/pull/1922)
- Always load Google 404 Linkhelp script over HTTPS. [#1829](https://github.com/mmistakes/minimal-mistakes/pull/1829)
- Remove deprecated `base_path` include helper.
### Bug Fixes
- Prevent current post from showing in the related posts section. [#1976](https://github.com/mmistakes/minimal-mistakes/pull/1976)
- Fix dark skins syntax highlighting colors. [#1973](https://github.com/mmistakes/minimal-mistakes/issues/1973)
- Remove unnecessary closing bracket in analytics documentation. [#1915](https://github.com/mmistakes/minimal-mistakes/pull/1915)
- Fix breadcrumb navigation alignment. [#1917](https://github.com/mmistakes/minimal-mistakes/issues/1917)
- Fix Algolia search link positioning. [#1904](https://github.com/mmistakes/minimal-mistakes/pull/1904)
- Fix Lunr search index merging words. [#1883](https://github.com/mmistakes/minimal-mistakes/issues/1883)
- Properly apply `relative_url` filter to internal links in header overlay `actions` array.
- Revert cached includes (`include_cached`) for comment and analytics providers. [#1905](https://github.com/mmistakes/minimal-mistakes/issues/1905)
## [4.13.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.13.0)
### Enhancements
- Add Romanian localized UI text strings. [#1814](https://github.com/mmistakes/minimal-mistakes/pull/1814)
- Improve author link flexibility. [#1581](https://github.com/mmistakes/minimal-mistakes/issues/1581)
- Improve footer link flexibility.
- Deprecate `cta_label` and `cta_url` in header overlay in favor of new `actions` array that allows for multiple "call to action" button links. [#1461](https://github.com/mmistakes/minimal-mistakes/issues/1461)
- Add support to [gallery helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) for defining column layout (`half`, `third`, or single `''`). [#1821](https://github.com/mmistakes/minimal-mistakes/issues/1821)
### Bug Fixes
- Fix sidebar navigation list toggle. [#1819](https://github.com/mmistakes/minimal-mistakes/issues/1819)
- Fix hover animation for links with `:visited` state. [#1820](https://github.com/mmistakes/minimal-mistakes/issues/1820)
## [4.12.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.2)
### Enhancements
- Add missing Italian localized UI text strings. [#1793](https://github.com/mmistakes/minimal-mistakes/pull/1793)
- Update [jekyll-toc](https://github.com/allejo/jekyll-toc) to `v1.0.5`.
- Support heading levels 1-6 in table of contents with proper indentation styling. [#1782](https://github.com/mmistakes/minimal-mistakes/issues/1782)
- Use relative links for masthead navigation menu items when possible. [#1784](https://github.com/mmistakes/minimal-mistakes/pull/1784)
- Add `.emoji` class to author sidebar to normalize image sizes. [#1780](https://github.com/mmistakes/minimal-mistakes/pull/1780)
- Update Staticman commit message to include comment author's name.
- Improve side navigation spacing in relation to masthead.
- Style archive links with appropriate link color.
- Adjust feature row spacing and font-sizes.
- Use sentence case and increase font-sizes for improved readability in table of contents.
- Add `{{ content }}` to `home` layout. [#1775](https://github.com/mmistakes/minimal-mistakes/pull/1775)
## [4.12.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.1)
### Enhancements
- Add missing French localized UI text strings. [#1769](https://github.com/mmistakes/minimal-mistakes/pull/1769) [#1741](https://github.com/mmistakes/minimal-mistakes/pull/1741)
- Update Font Awesome to version [`5.2.0`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). [#1754](https://github.com/mmistakes/minimal-mistakes/pull/1754)
- Add documentation note to update root `Gemfile` when forking theme.
### Bug Fixes
- Remove slash at the beginning of `path` in staticman.yml example. [#1772](https://github.com/mmistakes/minimal-mistakes/pull/1772)
- Fix `read_time` logic in header image overlay. [#1756](https://github.com/mmistakes/minimal-mistakes/pull/1756)
## [4.12.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.0)
### Enhancements
- Add Hungarian localized UI text strings. [#1682](https://github.com/mmistakes/minimal-mistakes/pull/1682)
- DRY `tags_max` calculation in tags.html layout. [#1696](https://github.com/mmistakes/minimal-mistakes/pull/1696)
- DRY `categories_max` calculation in categories.html layout.
- Add support for ["sticking" table of contents](https://mmistakes.github.io/minimal-mistakes/layout-table-of-contents-sticky/) to top of page via `toc_sticky: true` YAML Front Matter.
- Add support for captioning images in feature row helper via `image_caption` YAML Front Matter. [#1440](https://github.com/mmistakes/minimal-mistakes/issues/1440)
- Add [Google Custom Search Engine](https://cse.google.com/cse) support. [#1652](https://github.com/mmistakes/minimal-mistakes/issues/1652)
- Update Font Awesome to version. [`5.1.13`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- Add "Pets" sample archive page to documentation site. [#1664](https://github.com/mmistakes/minimal-mistakes/pull/1664)
- Add GitLab social icon brand color. [#1653](https://github.com/mmistakes/minimal-mistakes/issues/1653)
- Prevent line breaks between FontAwesome icon and text in footer social links. [#1659](https://github.com/mmistakes/minimal-mistakes/issues/1659)
### Bug Fixes
- Set default `title_separator`. [#1701](https://github.com/mmistakes/minimal-mistakes/pull/1701)
- Fix `naver_site_verification` typo in /\_includes/seo.html. [#1687](https://github.com/mmistakes/minimal-mistakes/pull/1687)
- Fix table of contents missing borders. [#1675](https://github.com/mmistakes/minimal-mistakes/issues/1675)
- Fix link to "Recipes" sample archive on documentation site. [#1664](https://github.com/mmistakes/minimal-mistakes/pull/1664)
- Update example Reddit social share interpolation syntax in documentation. [#1656](https://github.com/mmistakes/minimal-mistakes/issues/1656)
- Fix "Back to Top" links on pages that use [header overlays](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay).
## [4.11.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.11.2)
### Enhancements
- Update Font Awesome to version `5.0.11`. [#1620](https://github.com/mmistakes/minimal-mistakes/pull/1620)
- Add Slovak localized UI text strings. [#1613](https://github.com/mmistakes/minimal-mistakes/pull/1613)
- Add option to anonymize IP addresses of hits sent to Google Analytics. [#1636](https://github.com/mmistakes/minimal-mistakes/pull/1636)
### Bug Fixes
- Use correct text string for "Back to Top" link. [#1595](https://github.com/mmistakes/minimal-mistakes/issues/1595)
- Add conditionals for showing `reCaptcha.siteKey` and `reCaptcha.secret` in Staticman comments form.
## [4.11.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.11.1)
### Enhancements
- Add default `theme` and `remote_theme` values to `_config.yml`.
- Add new layouts (`posts`, `categories`, `tags`, `collection`, `category`, and `tag`) for easier archive page creation.
### Bug Fixes
- Replace `absolute_url` filter with `relative_url` where it makes sense (asset/navigation related paths). [#1588](https://github.com/mmistakes/minimal-mistakes/issues/1588)
- Fix search excerpts that run together because of implied spaces.
## [4.10.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.10.1)
### Enhancements
- Update jQuery to version `3.3.1`. [#1491](https://github.com/mmistakes/minimal-mistakes/issues/1491)
- Add link to jekyll-algolia's `files_to_exclude` documentation.
- Update Font Awesome to version [`5.0.8`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). [#1561](https://github.com/mmistakes/minimal-mistakes/pull/1561)
- Activate Algolia search for documentation site. [#1570](https://github.com/mmistakes/minimal-mistakes/issues/1570)
- Add missing German translations. [#1577](https://github.com/mmistakes/minimal-mistakes/pull/1577)
- Add support for Google Analytics with global site tag (gtag.js) [#1563](https://github.com/mmistakes/minimal-mistakes/pull/1563)
### Bug Fixes
- Focus Algolia search input after clicking on search toggle.
## [4.10.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.10.0)
### Enhancements
- Add support for [Algolia](https://www.algolia.com/) search provider ([see demo](https://mmistakes.github.io/minimal-mistakes-algolia-search/)). [#1416](https://github.com/mmistakes/minimal-mistakes/issues/1416)
## [4.9.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.9.1)
### Enhancements
- Simplify year archive Liquid.
- Add documentation on how to downgrade theme.
- Improve greedy navigation's layout when JavaScript is disabled.
- Improve SEO include by grouping similar tags, reducing white-space, and adding `article:modified_time`. [#1456](https://github.com/mmistakes/minimal-mistakes/pull/1456)
- Minify `assets/js/lunr/lunr.js`.
- Improve calculation of Greedy navigation's `availableSpace`.
- Add Danish and Russian translations for new search strings. [#1472](https://github.com/mmistakes/minimal-mistakes/pull/1472) [#1477](https://github.com/mmistakes/minimal-mistakes/pull/1477)
- Indicate that archive titles are links with an underline.
- Remove `base_path` include from `/test` pages.
- Reduce font-size of page meta in list/grid items.
- Improve feature row styling when used with `archive` layout. [#1484](https://github.com/mmistakes/minimal-mistakes/issues/1484)
- Improve German translations. [#1511](https://github.com/mmistakes/minimal-mistakes/pull/1511)
- Update Font Awesome to `5.0.6`. [#1513](https://github.com/mmistakes/minimal-mistakes/pull/1513)
- Add `wide` variant to single layout. [#1516](https://github.com/mmistakes/minimal-mistakes/pull/1516)
### Bug Fixes
- Allow `author` to accept an object or string. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289)
- Fix syntax highlighting line number styling inconsistency. [#1467](https://github.com/mmistakes/minimal-mistakes/issues/1467)
- Fix author sidebar icon colors for dark skins. [#1482](https://github.com/mmistakes/minimal-mistakes/issues/1482)
- Remove misleading underline hover state on feature row items.
- Properly escape quotes in `site.social.name` and `site.name`. [#1485](https://github.com/mmistakes/minimal-mistakes/pull/1485)
- Fix typo in upgrading documentation. [#1487](https://github.com/mmistakes/minimal-mistakes/pull/1487)
- Fix `border-bottom` for Gist line numbers.
- Replace `|` with HTML entity when used as title separator. [#760](https://github.com/mmistakes/minimal-mistakes/issues/760)
## [4.9.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.9.0)
### Enhancements
- Add `show_overlay_excerpt` for disabling overlay image excerpt text. [#1436](https://github.com/mmistakes/minimal-mistakes/pull/1436)
- Update remote theme installation instructions in Quick Start Guide. [#1439](https://github.com/mmistakes/minimal-mistakes/pull/1439)
- Reduce visual weight of code blocks.
- Add Lunr.js Greek stemmer. [#1445](https://github.com/mmistakes/minimal-mistakes/pull/1445)
- Update Font Awesome 5 [SVG with JavaScript version](https://fontawesome.com/how-to-use/svg-with-js). [#1446](https://github.com/mmistakes/minimal-mistakes/pull/1446)
- Note: if Font Awesome icons were used in the content of posts/pages or custom table of contents, find and replace any icons that have different names between version 4 and 5. Make sure to read the [complete list](https://fontawesome.com/how-to-use/upgrading-from-4#icon-name-changes-full) on Font Awesome's site.
- Reduce size of Lunr.js search JSON data and introduce `site.search_full_content` flag for limiting size of JSON file. [#1449](https://github.com/mmistakes/minimal-mistakes/pull/1449)
- Improve syntax highlighting styles. [#1450](https://github.com/mmistakes/minimal-mistakes/pull/1450)
### Bug Fixes
- Fix code block extra white-space when using [Jekyll's highlight tag](https://jekyllrb.com/docs/templates/#code-snippet-highlighting) with `linenos`. [#1437](https://github.com/mmistakes/minimal-mistakes/issues/1437)
- Round top-right corner of code block icon.
- Remove Lunr.js trimmer and bring back colons. [#1445](https://github.com/mmistakes/minimal-mistakes/pull/1445)
- Fix sticky `.sidebar` that overlaps main content when resizing viewport. [#1447](https://github.com/mmistakes/minimal-mistakes/issues/1447)
## [4.8.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.8.1)
### Enhancements
- Add linkback functionality to author avatar and name in sidebar via `author.home`. [#1386](https://github.com/mmistakes/minimal-mistakes/pull/1386)
- Add Japanese localized UI text strings. [#1411](https://github.com/mmistakes/minimal-mistakes/pull/1411)
- Update Lunr.js to 2.1.5 [#1419](https://github.com/mmistakes/minimal-mistakes/pull/1419)
### Bug Fixes
- Fixed broken link to Staticman's page [#1422](https://github.com/mmistakes/minimal-mistakes/pull/1422)
- Fix Lunr search to work with number tags. [#1409](https://github.com/mmistakes/minimal-mistakes/issues/1409) [#1419](https://github.com/mmistakes/minimal-mistakes/pull/1419)
## [4.8.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.8.0)
### Enhancements
- Open social share links in a new window. [#1357](https://github.com/mmistakes/minimal-mistakes/pull/1357)
- Remove Alexa.com verification due to retiring of "[Claim Your Site](https://support.alexa.com/hc/en-us/articles/219135887)" feature. [#1350](https://github.com/mmistakes/minimal-mistakes/issues/1350)
- Disable analytics in `development` environment. [#1362](https://github.com/mmistakes/minimal-mistakes/pull/1362)
- Disable comments in `development` environment. [#1363](https://github.com/mmistakes/minimal-mistakes/pull/1363)
- Exclude specific pages/posts from search index by adding `search: false` to the YAML Front Matter. [#1369](https://github.com/mmistakes/minimal-mistakes/pull/1369)
- Add optional `description` key to masthead links for clarifying their purpose with the `title` attribute. [#1380](https://github.com/mmistakes/minimal-mistakes/pull/1380)
- Incorporate site search into masthead. [#1383](https://github.com/mmistakes/minimal-mistakes/pull/1383)
- Update gem dependencies. [#1388](https://github.com/mmistakes/minimal-mistakes/pull/1388)
### Bug Fixes
- Fix `post.content` typo in `assets/js/lunr-en.js`. [#1354](https://github.com/mmistakes/minimal-mistakes/pull/1354)
- Fix "lunr-en.js:1 Uncaught SyntaxError: Unexpected token <" in `assets/js/lunr-en.js`. [#1356](https://github.com/mmistakes/minimal-mistakes/pull/1356)
- Rename Naver verification `naver_site_verification` to be consistent with other site variables.
- Fix button class in "Post with Table Of Contents" demo content. [#1368](https://github.com/mmistakes/minimal-mistakes/pull/1368)
- Fix capitalization of WordPress in documentation. [#1381](https://github.com/mmistakes/minimal-mistakes/pull/1381)
- Fix zh-HK UI text to point to Traditional Chinese. [#1374](https://github.com/mmistakes/minimal-mistakes/issues/1374) [#1389](https://github.com/mmistakes/minimal-mistakes/pull/1389)
## [4.7.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.7.1)
### Enhancements
- Add search layout powered by [Lunr](https://lunrjs.com/). [#1353](https://github.com/mmistakes/minimal-mistakes/pull/1353)
- Use [jekyll-remote-theme](https://github.com/benbalter/jekyll-remote-theme) for demo site. [#1339](https://github.com/mmistakes/minimal-mistakes/issues/1339)
- Add note about WordPress to Staticman comment migration tool in documentation. [#1346](https://github.com/mmistakes/minimal-mistakes/issues/1346)
### Bug Fixes
- Change `http` to `https` for Jekyll and Browserhappy links. [#1342](https://github.com/mmistakes/minimal-mistakes/pull/1342) [#1343](https://github.com/mmistakes/minimal-mistakes/pull/1343)
- Change `http` author profile links to `https` when supported. [#1349](https://github.com/mmistakes/minimal-mistakes/pull/1349)
- Fix broken SCSS partial links in layouts documentation. [#1351](https://github.com/mmistakes/minimal-mistakes/issues/1351)
## [4.7.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.7.0)
### Enhancements
- Add `alt` description to avatar image. [#1226](https://github.com/mmistakes/minimal-mistakes/pull/1226)
- Clarify documentation about which `assets` folders and files to remove when migrating to the gem version of the theme. [#1268](https://github.com/mmistakes/minimal-mistakes/issues/1268)
- Add note about Staticman GitHub compatibility. [#1273](https://github.com/mmistakes/minimal-mistakes/issues/1273)
- Add missing Brazilian Portuguese translations to `ui-text.yml`. [#1278](https://github.com/mmistakes/minimal-mistakes/pull/1278)
- Update font stack documentation. [#1292](https://github.com/mmistakes/minimal-mistakes/pull/1292)
- Improve accessibility of navigation menu button. [#1099](https://github.com/mmistakes/minimal-mistakes/issues/1099)
- Add Naver Webmaster Tools verification. [#1286](https://github.com/mmistakes/minimal-mistakes/pull/1286)
- Add support for Staticman v2 endpoint and reCAPTCHA.
- Add Polish localized UI text strings. [#1304](https://github.com/mmistakes/minimal-mistakes/pull/1304)
- Add toggleable table of contents via YAML Front Matter. Note: `toc` helper include will be deprecated in next major version. [#1222](https://github.com/mmistakes/minimal-mistakes/issues/1222)
- Refactor seo.html include to DRY-up page image handling.
- Add support for setting what image is used by OpenGraph and Twitter via `page.header.og_image`. [#1316](https://github.com/mmistakes/minimal-mistakes/issues/1316)
- Fix the spelling of some product names in the author profile. [#1328](https://github.com/mmistakes/minimal-mistakes/pull/1328)
- Add `aqua`, `neon`, and `plum` skins. [#1336](https://github.com/mmistakes/minimal-mistakes/pull/1336)
- Update **jekyll-toc** with heading classes fix. [#1337](https://github.com/mmistakes/minimal-mistakes/pull/1337)
- Remove `+` from Google+ author link to allow non-vanity URLs. [#1319](https://github.com/mmistakes/minimal-mistakes/pull/1319)
### Bug Fixes
- Fix system font rendering in Chrome on macOS/OS X. [#1290](https://github.com/mmistakes/minimal-mistakes/pull/1290)
- Fix extra padding in syntax highlighted code blocks due to Rouge 2 adding `` to markup.
## [4.6.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.6.0)
### Enhancements
- Test strict Front Matter in `/test` site. [#1236](https://github.com/mmistakes/minimal-mistakes/pull/1236)
- Rename `gems` key to `plugins`. [#1239](https://github.com/mmistakes/minimal-mistakes/pull/1239)
- Add [YIQ Color Contrast](https://github.com/easy-designs/yiq-color-contrast) mixin for determining lightness of a color.
- DRY up button CSS using Sass lists and YIQ Color Contrast mixin.
- Add `btn--primary` button class. **Note:** elements that were previously using only a `.btn` class will now also need `.btn--primary` (eg. `my link`).
- Add `air`, `contrast`, `dark`, `dirt`, `mint`, and `sunrise` skin color options. [#1208](https://github.com/mmistakes/minimal-mistakes/issues/1208)
- Allow scripts in `
" | remove: "
" %} {% else %} {% assign title = post.title %} {% endif %}{{ post.excerpt | markdownify | strip_html | truncate: 160 }}
{% endif %}{{ site.data.ui-text[locale].categories_label | default: "Categories:" }} {% for category_word in categories_sorted %} {{ category_word }}{% unless forloop.last %}, {% endunless %} {% endfor %}
{% endif %} ================================================ FILE: _includes/comment.html ================================================{% if include.date %} {% if include.index %}{% endif %} {% if include.index %}{% endif %} {% endif %}
{{ site.data.ui-text[locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} *
{{ site.data.ui-text[locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} *
{{ f.btn_label | default: site.data.ui-text[locale].more_label | default: "Learn More" }}
{% endif %}" | remove: "
" }}" | remove: "
" }}{{ site.data.ui-text[locale].date_label | default: "Updated:" }}
{% elsif page.date %}{{ site.data.ui-text[locale].date_label | default: "Updated:" }}
{% endif %} ================================================ FILE: _includes/page__hero.html ================================================ {% assign locale = include.locale | default: site.locale %} {% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %} {% if page.header.overlay_filter contains "gradient" %} {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %} {% elsif page.header.overlay_filter contains "rgba" %} {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %} {% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %} {% elsif page.header.overlay_filter %} {% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %} {% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %} {% endif %} {% if page.header.image_description %} {% assign image_description = page.header.image_description %} {% else %} {% assign image_description = page.title %} {% endif %} {% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %} ================================================ FILE: _includes/page__hero_video.html ================================================ {% assign video = page.header.video %} {% include video id=video.id provider=video.provider danmaku=video.danmaku %} ================================================ FILE: _includes/page__meta.html ================================================ {% assign locale = include.locale | default: site.locale %} {% assign document = post | default: page %} {% if document.read_time or document.show_date %} {% endif %} ================================================ FILE: _includes/page__related.html ================================================ {% assign locale = include.locale | default: site.locale %} {% assign posts = include.posts | where_exp: "post", "post.hidden != true" %} ================================================ FILE: _includes/page__taxonomy.html ================================================ {% assign locale = include.locale | default: site.locale %} {% unless site.show_taxonomy == false %} {% if site.tag_archive.type and page.tags[0] %} {% include tag-list.html locale=locale %} {% endif %} {% if site.category_archive.type and page.categories[0] %} {% include category-list.html locale=locale %} {% endif %} {% endunless %} ================================================ FILE: _includes/paginator-v1.html ================================================ {% assign locale = include.locale | default: site.locale %} {% if paginator.total_pages > 1 %} {% endif %} ================================================ FILE: _includes/paginator-v2.html ================================================ {% assign locale = include.locale | default: site.locale %} ================================================ FILE: _includes/paginator.html ================================================ {% assign locale = include.locale | default: site.locale %} {% if paginator.total_pages > 1 %} {% if site.paginate %} {% include paginator-v1.html locale=locale %} {% elsif site.pagination.enabled %} {% include paginator-v2.html locale=locale %} {% endif %} {% endif %} ================================================ FILE: _includes/post_pagination.html ================================================ {% assign locale = include.locale | default: site.locale %} {% if page.previous or page.next %} {% endif %} ================================================ FILE: _includes/posts-category.html ================================================ {% assign locale = include.locale | default: site.locale %} {% assign posts = site.categories[include.taxonomy] | where_exp: "post", "post.hidden != true" %} {%- for post in posts -%} {% include archive-single.html locale=locale %} {%- endfor -%} ================================================ FILE: _includes/posts-tag.html ================================================ {% assign locale = include.locale | default: site.locale %} {% assign posts = site.tags[include.taxonomy] | where_exp: "post", "post.hidden != true" %} {%- for post in posts -%} {% include archive-single.html locale=locale %} {%- endfor -%} ================================================ FILE: _includes/posts-taxonomy.html ================================================ {% assign locale = include.locale | default: site.locale %} {% assign items_max = 0 %} {% for item in include.taxonomies %} {% if item[1].size > items_max %} {% assign items_max = item[1].size %} {% endif %} {% endfor %}{{ site.data.ui-text[locale].tags_label | default: "Tags:" }} {% for tag_word in tags_sorted %} {{ tag_word }}{% unless forloop.last %}, {% endunless %} {% endfor %}
{% endif %} ================================================ FILE: _includes/toc ================================================ {% assign locale = include.locale | default: site.locale %} ================================================ FILE: _includes/toc.html ================================================ {% capture tocWorkspace %} {% comment %} Copyright (c) 2017 Vladimir "allejo" Jimenez Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. {% endcomment %} {% comment %} 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 Usage: {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} Parameters: * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll Optional Parameters: * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC * class (string) : '' - a CSS class assigned to the TOC * id (string) : '' - an ID to assigned to the TOC * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level * 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 generate the table of contents and will NOT output the markdown given to it {% endcomment %} {% capture newline %} {% endcapture %} {% assign newline = newline | rstrip %} {% capture deprecation_warnings %}{% endcapture %} {% if include.baseurl %} {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %} {% endif %} {% if include.skipNoIDs %} {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %} {% endif %} {% 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 %} {% assign maxHeader = include.h_max | default: 6 %} {% assign nodes = include.html | strip | split: '" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " | Step | Bytes |
| raw | {{ content | size }}{% if _profile_endings %} |
| endings | {{ _profile_endings }}{% endif %}{% if _profile_startings %} |
| startings | {{ _profile_startings }}{% endif %}{% if _profile_comments %} |
| comments | {{ _profile_comments }}{% endif %}{% if _profile_collapse %} |
| collapse | {{ _profile_collapse }}{% endif %}{% if _profile_clippings %} |
| clippings | {{ _profile_clippings }}{% endif %} |
" | remove: "
" }}Comments are configured with provider: {{ site.comments.provider }}, but are disabled in non-production environments.
{% endif %} {% endif %}block to clipboard ========================================================================== */ // a
x
'; head.appendChild(div.childNodes[1]); } if ( options ) { $.extend( settings, options ); } return this.each(function(){ var selectors = [ 'iframe[src*="player.vimeo.com"]', 'iframe[src*="youtube.com"]', 'iframe[src*="youtube-nocookie.com"]', 'iframe[src*="kickstarter.com"][src*="video.html"]', 'object', 'embed' ]; if (settings.customSelector) { selectors.push(settings.customSelector); } var ignoreList = '.fitvidsignore'; if(settings.ignore) { ignoreList = ignoreList + ', ' + settings.ignore; } var $allVideos = $(this).find(selectors.join(',')); $allVideos = $allVideos.not('object object'); // SwfObj conflict patch $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. $allVideos.each(function(count){ var $this = $(this); if($this.parents(ignoreList).length > 0) { return; // Disable FitVids on this video. } if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width')))) { $this.attr('height', 9); $this.attr('width', 16); } var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), aspectRatio = height / width; if(!$this.attr('id')){ var videoID = 'fitvid' + count; $this.attr('id', videoID); } $this.wrap('').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%'); $this.removeAttr('height').removeAttr('width'); }); }); }; // Works with either jQuery or Zepto })( window.jQuery || window.Zepto ); ================================================ FILE: assets/js/plugins/jquery.greedy-navigation.js ================================================ /* GreedyNav.js - https://github.com/lukejacksonn/GreedyNav Licensed under the MIT license - http://opensource.org/licenses/MIT Copyright (c) 2015 Luke Jackson http://lukejacksonn.com */ $(function() { var $btn = $("nav.greedy-nav .greedy-nav__toggle"); var $vlinks = $("nav.greedy-nav .visible-links"); var $hlinks = $("nav.greedy-nav .hidden-links"); var $nav = $("nav.greedy-nav"); var $logo = $('nav.greedy-nav .site-logo'); 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 // 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; totalSpace = 0; closingTime = 1000; breakWidths = []; // Adds the width of a navItem in order to create breakpoints for the navbar function addWidth(i, w) { totalSpace += w; numOfItems += 1; breakWidths.push(totalSpace); } // Measures the width of hidden links by making a temporary clone of them and positioning under visible links function hiddenWidth(obj){ var clone = obj.clone(); clone.css("visibility","hidden"); $vlinks.append(clone); addWidth(0, clone.outerWidth()); clone.remove(); } // Measure both visible and hidden links widths $vlinks.children().outerWidth(addWidth); $hlinks.children().each(function(){hiddenWidth($(this))}); } // Get initial state measureLinks(); var winWidth = $( window ).width(); // Set the last measured CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px. var lastBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3; var availableSpace, numOfVisibleItems, requiredSpace, timer; function check() { winWidth = $( window ).width(); // Set the current CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px. var curBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3; // If current breakpoint is different from last measured breakpoint, measureLinks again if(curBreakpoint !== lastBreakpoint) measureLinks(); // Set the last measured CSS width breakpoint with the current breakpoint lastBreakpoint = curBreakpoint; // Get instant state numOfVisibleItems = $vlinks.children().length; // Decrease the width of visible elements from the nav innerWidth to find out the available space for navItems availableSpace = /* nav */ $nav.innerWidth() - /* logo */ ($logo.length !== 0 ? $logo.outerWidth(true) : 0) - /* title */ $title.outerWidth(true) - /* search */ ($search.length !== 0 ? $search.outerWidth(true) : 0) - /* toggle */ (numOfVisibleItems !== breakWidths.length ? $btn.outerWidth(true) : 0); requiredSpace = breakWidths[numOfVisibleItems - 1]; // There is not enought space if (requiredSpace > availableSpace) { $vlinks.children().last().prependTo($hlinks); numOfVisibleItems -= 1; check(); // There is more than enough space. If only one element is hidden, add the toggle width to the available space } else if (availableSpace + (numOfVisibleItems === breakWidths.length - 1?$btn.outerWidth(true):0) > breakWidths[numOfVisibleItems]) { $hlinks.children().first().appendTo($vlinks); numOfVisibleItems += 1; check(); } // Update the button accordingly $btn.attr("count", numOfItems - numOfVisibleItems); if (numOfVisibleItems === numOfItems) { $btn.addClass('hidden'); } else $btn.removeClass('hidden'); } // Window listeners $(window).resize(function() { check(); }); $btn.on('click', function() { $hlinks.toggleClass('hidden'); $(this).toggleClass('close'); clearTimeout(timer); }); $hlinks.on("click", function () { // Hide the hidden links & remove the overlay when one is clicked. $hlinks.addClass("hidden"); $btn.removeClass("close"); }).on('mouseleave', function() { // Mouse has left, start the timer timer = setTimeout(function() { $hlinks.addClass('hidden'); $('.greedy-nav__toggle').removeClass('close'); }, closingTime); }).on('mouseenter', function() { // Mouse is back, cancel the timer clearTimeout(timer); }) // check if page has a logo if($logoImg.length !== 0){ // check if logo is not loaded if(!($logoImg[0].complete || $logoImg[0].naturalWidth !== 0)){ // if logo is not loaded wait for logo to load or fail to check $logoImg.one("load error", check); // if logo is already loaded just check } else check(); // if page does not have a logo just check } else check(); }); ================================================ FILE: assets/js/plugins/jquery.magnific-popup.js ================================================ /*! Magnific Popup - v1.1.0 - 2016-02-20 * http://dimsemenov.com/plugins/magnific-popup/ * Copyright (c) 2016 Dmitry Semenov; */ ;(function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], factory); } else if (typeof exports === 'object') { // Node/CommonJS factory(require('jquery')); } else { // Browser globals factory(window.jQuery || window.Zepto); } }(function($) { /*>>core*/ /** * * Magnific Popup Core JS file * */ /** * Private static constants */ var CLOSE_EVENT = 'Close', BEFORE_CLOSE_EVENT = 'BeforeClose', AFTER_CLOSE_EVENT = 'AfterClose', BEFORE_APPEND_EVENT = 'BeforeAppend', MARKUP_PARSE_EVENT = 'MarkupParse', OPEN_EVENT = 'Open', CHANGE_EVENT = 'Change', NS = 'mfp', EVENT_NS = '.' + NS, READY_CLASS = 'mfp-ready', REMOVING_CLASS = 'mfp-removing', PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; /** * Private vars */ /*jshint -W079 */ var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' MagnificPopup = function(){}, _isJQ = !!(window.jQuery), _prevStatus, _window = $(window), _document, _prevContentType, _wrapClasses, _currPopupType; /** * Private functions */ var _mfpOn = function(name, f) { mfp.ev.on(NS + name + EVENT_NS, f); }, _getEl = function(className, appendTo, html, raw) { var el = document.createElement('div'); el.className = 'mfp-'+className; if(html) { el.innerHTML = html; } if(!raw) { el = $(el); if(appendTo) { el.appendTo(appendTo); } } else if(appendTo) { appendTo.appendChild(el); } return el; }, _mfpTrigger = function(e, data) { mfp.ev.triggerHandler(NS + e, data); if(mfp.st.callbacks) { // converts "mfpEventName" to "eventName" callback and triggers it if it's present e = e.charAt(0).toLowerCase() + e.slice(1); if(mfp.st.callbacks[e]) { mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); } } }, _getCloseBtn = function(type) { if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); _currPopupType = type; } return mfp.currTemplate.closeBtn; }, // Initialize Magnific Popup only when called at least once _checkInstance = function() { if(!$.magnificPopup.instance) { /*jshint -W020 */ mfp = new MagnificPopup(); mfp.init(); $.magnificPopup.instance = mfp; } }, // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr supportsTransitions = function() { var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist v = ['ms','O','Moz','Webkit']; // 'v' for vendor if( s['transition'] !== undefined ) { return true; } while( v.length ) { if( v.pop() + 'Transition' in s ) { return true; } } return false; }; /** * Public functions */ MagnificPopup.prototype = { constructor: MagnificPopup, /** * Initializes Magnific Popup plugin. * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed */ init: function() { var appVersion = navigator.appVersion; mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; mfp.isAndroid = (/android/gi).test(appVersion); mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); mfp.supportsTransition = supportsTransitions(); // We disable fixed positioned lightbox on devices that don't handle it nicely. // If you know a better way of detecting this - let me know. mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); _document = $(document); mfp.popupsCache = {}; }, /** * Opens popup * @param data [description] */ open: function(data) { var i; if(data.isObj === false) { // convert jQuery collection to array to avoid conflicts later mfp.items = data.items.toArray(); mfp.index = 0; var items = data.items, item; for(i = 0; i < items.length; i++) { item = items[i]; if(item.parsed) { item = item.el[0]; } if(item === data.el[0]) { mfp.index = i; break; } } } else { mfp.items = $.isArray(data.items) ? data.items : [data.items]; mfp.index = data.index || 0; } // if popup is already opened - we just update the content if(mfp.isOpen) { mfp.updateItemHTML(); return; } mfp.types = []; _wrapClasses = ''; if(data.mainEl && data.mainEl.length) { mfp.ev = data.mainEl.eq(0); } else { mfp.ev = _document; } if(data.key) { if(!mfp.popupsCache[data.key]) { mfp.popupsCache[data.key] = {}; } mfp.currTemplate = mfp.popupsCache[data.key]; } else { mfp.currTemplate = {}; } mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; if(mfp.st.modal) { mfp.st.closeOnContentClick = false; mfp.st.closeOnBgClick = false; mfp.st.showCloseBtn = false; mfp.st.enableEscapeKey = false; } // Building markup // main containers are created only once if(!mfp.bgOverlay) { // Dark overlay mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { mfp.close(); }); mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { if(mfp._checkIfClose(e.target)) { mfp.close(); } }); mfp.container = _getEl('container', mfp.wrap); } mfp.contentContainer = _getEl('content'); if(mfp.st.preloader) { mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); } // Initializing modules var modules = $.magnificPopup.modules; for(i = 0; i < modules.length; i++) { var n = modules[i]; n = n.charAt(0).toUpperCase() + n.slice(1); mfp['init'+n].call(mfp); } _mfpTrigger('BeforeOpen'); if(mfp.st.showCloseBtn) { // Close button if(!mfp.st.closeBtnInside) { mfp.wrap.append( _getCloseBtn() ); } else { _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { values.close_replaceWith = _getCloseBtn(item.type); }); _wrapClasses += ' mfp-close-btn-in'; } } if(mfp.st.alignTop) { _wrapClasses += ' mfp-align-top'; } if(mfp.fixedContentPos) { mfp.wrap.css({ overflow: mfp.st.overflowY, overflowX: 'hidden', overflowY: mfp.st.overflowY }); } else { mfp.wrap.css({ top: _window.scrollTop(), position: 'absolute' }); } if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { mfp.bgOverlay.css({ height: _document.height(), position: 'absolute' }); } if(mfp.st.enableEscapeKey) { // Close on ESC key _document.on('keyup' + EVENT_NS, function(e) { if(e.keyCode === 27) { mfp.close(); } }); } _window.on('resize' + EVENT_NS, function() { mfp.updateSize(); }); if(!mfp.st.closeOnContentClick) { _wrapClasses += ' mfp-auto-cursor'; } if(_wrapClasses) mfp.wrap.addClass(_wrapClasses); // this triggers recalculation of layout, so we get it once to not to trigger twice var windowHeight = mfp.wH = _window.height(); var windowStyles = {}; if( mfp.fixedContentPos ) { if(mfp._hasScrollBar(windowHeight)){ var s = mfp._getScrollbarSize(); if(s) { windowStyles.marginRight = s; } } } if(mfp.fixedContentPos) { if(!mfp.isIE7) { windowStyles.overflow = 'hidden'; } else { // ie7 double-scroll bug $('body, html').css('overflow', 'hidden'); } } var classesToadd = mfp.st.mainClass; if(mfp.isIE7) { classesToadd += ' mfp-ie7'; } if(classesToadd) { mfp._addClassToMFP( classesToadd ); } // add content mfp.updateItemHTML(); _mfpTrigger('BuildControls'); // remove scrollbar, add margin e.t.c $('html').css(windowStyles); // add everything to DOM mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) ); // Save last focused element mfp._lastFocusedEl = document.activeElement; // Wait for next cycle to allow CSS transition setTimeout(function() { if(mfp.content) { mfp._addClassToMFP(READY_CLASS); mfp._setFocus(); } else { // if content is not defined (not loaded e.t.c) we add class only for BG mfp.bgOverlay.addClass(READY_CLASS); } // Trap the focus in popup _document.on('focusin' + EVENT_NS, mfp._onFocusIn); }, 16); mfp.isOpen = true; mfp.updateSize(windowHeight); _mfpTrigger(OPEN_EVENT); return data; }, /** * Closes the popup */ close: function() { if(!mfp.isOpen) return; _mfpTrigger(BEFORE_CLOSE_EVENT); mfp.isOpen = false; // for CSS3 animation if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { mfp._addClassToMFP(REMOVING_CLASS); setTimeout(function() { mfp._close(); }, mfp.st.removalDelay); } else { mfp._close(); } }, /** * Helper for close() function */ _close: function() { _mfpTrigger(CLOSE_EVENT); var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; mfp.bgOverlay.detach(); mfp.wrap.detach(); mfp.container.empty(); if(mfp.st.mainClass) { classesToRemove += mfp.st.mainClass + ' '; } mfp._removeClassFromMFP(classesToRemove); if(mfp.fixedContentPos) { var windowStyles = {marginRight: ''}; if(mfp.isIE7) { $('body, html').css('overflow', ''); } else { windowStyles.overflow = ''; } $('html').css(windowStyles); } _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); mfp.ev.off(EVENT_NS); // clean up DOM elements that aren't removed mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); mfp.bgOverlay.attr('class', 'mfp-bg'); mfp.container.attr('class', 'mfp-container'); // remove close button from target element if(mfp.st.showCloseBtn && (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { if(mfp.currTemplate.closeBtn) mfp.currTemplate.closeBtn.detach(); } if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { $(mfp._lastFocusedEl).focus(); // put tab focus back } mfp.currItem = null; mfp.content = null; mfp.currTemplate = null; mfp.prevHeight = 0; _mfpTrigger(AFTER_CLOSE_EVENT); }, updateSize: function(winHeight) { if(mfp.isIOS) { // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 var zoomLevel = document.documentElement.clientWidth / window.innerWidth; var height = window.innerHeight * zoomLevel; mfp.wrap.css('height', height); mfp.wH = height; } else { mfp.wH = winHeight || _window.height(); } // Fixes #84: popup incorrectly positioned with position:relative on body if(!mfp.fixedContentPos) { mfp.wrap.css('height', mfp.wH); } _mfpTrigger('Resize'); }, /** * Set content of popup based on current index */ updateItemHTML: function() { var item = mfp.items[mfp.index]; // Detach and perform modifications mfp.contentContainer.detach(); if(mfp.content) mfp.content.detach(); if(!item.parsed) { item = mfp.parseEl( mfp.index ); } var type = item.type; _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); // BeforeChange event works like so: // _mfpOn('BeforeChange', function(e, prevType, newType) { }); mfp.currItem = item; if(!mfp.currTemplate[type]) { var markup = mfp.st[type] ? mfp.st[type].markup : false; // allows to modify markup _mfpTrigger('FirstMarkupParse', markup); if(markup) { mfp.currTemplate[type] = $(markup); } else { // if there is no markup found we just define that template is parsed mfp.currTemplate[type] = true; } } if(_prevContentType && _prevContentType !== item.type) { mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); } var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); mfp.appendContent(newContent, type); item.preloaded = true; _mfpTrigger(CHANGE_EVENT, item); _prevContentType = item.type; // Append container back after its content changed mfp.container.prepend(mfp.contentContainer); _mfpTrigger('AfterChange'); }, /** * Set HTML content of popup */ appendContent: function(newContent, type) { mfp.content = newContent; if(newContent) { if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && mfp.currTemplate[type] === true) { // if there is no markup, we just append close button element inside if(!mfp.content.find('.mfp-close').length) { mfp.content.append(_getCloseBtn()); } } else { mfp.content = newContent; } } else { mfp.content = ''; } _mfpTrigger(BEFORE_APPEND_EVENT); mfp.container.addClass('mfp-'+type+'-holder'); mfp.contentContainer.append(mfp.content); }, /** * Creates Magnific Popup data object based on given data * @param {int} index Index of item to parse */ parseEl: function(index) { var item = mfp.items[index], type; if(item.tagName) { item = { el: $(item) }; } else { type = item.type; item = { data: item, src: item.src }; } if(item.el) { var types = mfp.types; // check for 'mfp-TYPE' class for(var i = 0; i < types.length; i++) { if( item.el.hasClass('mfp-'+types[i]) ) { type = types[i]; break; } } item.src = item.el.attr('data-mfp-src'); if(!item.src) { item.src = item.el.attr('href'); } } item.type = type || mfp.st.type || 'inline'; item.index = index; item.parsed = true; mfp.items[index] = item; _mfpTrigger('ElementParse', item); return mfp.items[index]; }, /** * Initializes single popup or a group of popups */ addGroup: function(el, options) { var eHandler = function(e) { e.mfpEl = this; mfp._openClick(e, el, options); }; if(!options) { options = {}; } var eName = 'click.magnificPopup'; options.mainEl = el; if(options.items) { options.isObj = true; el.off(eName).on(eName, eHandler); } else { options.isObj = false; if(options.delegate) { el.off(eName).on(eName, options.delegate , eHandler); } else { options.items = el; el.off(eName).on(eName, eHandler); } } }, _openClick: function(e, el, options) { var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { return; } var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; if(disableOn) { if($.isFunction(disableOn)) { if( !disableOn.call(mfp) ) { return true; } } else { // else it's number if( _window.width() < disableOn ) { return true; } } } if(e.type) { e.preventDefault(); // This will prevent popup from closing if element is inside and popup is already opened if(mfp.isOpen) { e.stopPropagation(); } } options.el = $(e.mfpEl); if(options.delegate) { options.items = el.find(options.delegate); } mfp.open(options); }, /** * Updates text on preloader */ updateStatus: function(status, text) { if(mfp.preloader) { if(_prevStatus !== status) { mfp.container.removeClass('mfp-s-'+_prevStatus); } if(!text && status === 'loading') { text = mfp.st.tLoading; } var data = { status: status, text: text }; // allows to modify status _mfpTrigger('UpdateStatus', data); status = data.status; text = data.text; mfp.preloader.html(text); mfp.preloader.find('a').on('click', function(e) { e.stopImmediatePropagation(); }); mfp.container.addClass('mfp-s-'+status); _prevStatus = status; } }, /* "Private" helpers that aren't private at all */ // Check to close popup or not // "target" is an element that was clicked _checkIfClose: function(target) { if($(target).hasClass(PREVENT_CLOSE_CLASS)) { return; } var closeOnContent = mfp.st.closeOnContentClick; var closeOnBg = mfp.st.closeOnBgClick; if(closeOnContent && closeOnBg) { return true; } else { // We close the popup if click is on close button or on preloader. Or if there is no content. if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) { return true; } // if click is outside the content if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { if(closeOnBg) { // last check, if the clicked element is in DOM, (in case it's removed onclick) if( $.contains(document, target) ) { return true; } } } else if(closeOnContent) { return true; } } return false; }, _addClassToMFP: function(cName) { mfp.bgOverlay.addClass(cName); mfp.wrap.addClass(cName); }, _removeClassFromMFP: function(cName) { this.bgOverlay.removeClass(cName); mfp.wrap.removeClass(cName); }, _hasScrollBar: function(winHeight) { return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); }, _setFocus: function() { (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); }, _onFocusIn: function(e) { if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { mfp._setFocus(); return false; } }, _parseMarkup: function(template, values, item) { var arr; if(item.data) { values = $.extend(item.data, values); } _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); $.each(values, function(key, value) { if(value === undefined || value === false) { return true; } arr = key.split('_'); if(arr.length > 1) { var el = template.find(EVENT_NS + '-'+arr[0]); if(el.length > 0) { var attr = arr[1]; if(attr === 'replaceWith') { if(el[0] !== value[0]) { el.replaceWith(value); } } else if(attr === 'img') { if(el.is('img')) { el.attr('src', value); } else { el.replaceWith( $('