From f16cba1799c3675b3b444d33f63fb5b1f9e00b32 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 25 Jul 2021 15:40:40 +0200 Subject: [PATCH] Prepare 7.2.1 release --- CHANGELOG | 4 ++ docs/assets/screenshots/social-cards.png | Bin 0 -> 47338 bytes docs/creating-your-site.md | 40 +++++------ docs/insiders/index.md | 34 +++++----- docs/setup/setting-up-social-cards.md | 63 ++++++++++++++++++ material/base.html | 2 +- .../assets/stylesheets/main.14225c90.min.css | 2 + .../stylesheets/main.14225c90.min.css.map | 1 + .../assets/stylesheets/main.90c53ea0.min.css | 2 - .../stylesheets/main.90c53ea0.min.css.map | 1 - material/overrides/main.html | 21 +----- mkdocs.yml | 1 + package-lock.json | 2 +- package.json | 2 +- .../assets/stylesheets/main/_typeset.scss | 5 -- 15 files changed, 115 insertions(+), 65 deletions(-) create mode 100644 docs/assets/screenshots/social-cards.png create mode 100644 docs/setup/setting-up-social-cards.md create mode 100644 material/overrides/assets/stylesheets/main.14225c90.min.css create mode 100644 material/overrides/assets/stylesheets/main.14225c90.min.css.map delete mode 100644 material/overrides/assets/stylesheets/main.90c53ea0.min.css delete mode 100644 material/overrides/assets/stylesheets/main.90c53ea0.min.css.map diff --git a/CHANGELOG b/CHANGELOG index f1c8b5dfc..d873db89e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +mkdocs-material-7.2.1 (2021-07-25) + + * Fixed #2862: Back-to-top button overlays active search bar + mkdocs-material-7.2.0 (2021-07-21) * Added support for search suggestions to save keystrokes diff --git a/docs/assets/screenshots/social-cards.png b/docs/assets/screenshots/social-cards.png new file mode 100644 index 0000000000000000000000000000000000000000..3b348db345dad8aa5fc30d25d78b324636355c4e GIT binary patch literal 47338 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 Tw7vKHHdyMnb#4_PtU~?=e0w @@ -116,12 +117,13 @@ and much more: [9]: setup/setting-up-navigation.md [10]: setup/setting-up-site-search.md [11]: setup/setting-up-site-analytics.md - [12]: setup/setting-up-tags.md - [13]: setup/setting-up-versioning.md - [14]: setup/setting-up-the-header.md - [15]: setup/setting-up-the-footer.md - [16]: setup/adding-a-git-repository.md - [17]: setup/adding-a-comment-system.md + [12]: setup/setting-up-social-cards.md + [13]: setup/setting-up-tags.md + [14]: setup/setting-up-versioning.md + [15]: setup/setting-up-the-header.md + [16]: setup/setting-up-the-footer.md + [17]: setup/adding-a-git-repository.md + [18]: setup/adding-a-comment-system.md ## Previewing as you write @@ -147,12 +149,12 @@ If you're running Material for MkDocs from within Docker, use: docker run --rm -it -p 8000:8000 -v "%cd%":/docs squidfunk/mkdocs-material ``` -Point your browser to [localhost:8000][18] and you should see: +Point your browser to [localhost:8000][19] and you should see: -[![Creating your site][19]][19] +[![Creating your site][20]][20] - [18]: http://localhost:8000 - [19]: assets/screenshots/creating-your-site.png + [19]: http://localhost:8000 + [20]: assets/screenshots/creating-your-site.png ## Building your site @@ -165,8 +167,8 @@ mkdocs build The contents of this directory make up your project documentation. There's no need for operating a database or server, as it is completely self-contained. -The site can be hosted on [GitHub Pages][20], [GitLab Pages][21], a CDN of your +The site can be hosted on [GitHub Pages][21], [GitLab Pages][22], a CDN of your choice or your private web space. - [20]: publishing-your-site.md#github-pages - [21]: publishing-your-site.md#gitlab-pages + [21]: publishing-your-site.md#github-pages + [22]: publishing-your-site.md#gitlab-pages diff --git a/docs/insiders/index.md b/docs/insiders/index.md index 4dfbb324b..8de6299ca 100644 --- a/docs/insiders/index.md +++ b/docs/insiders/index.md @@ -117,9 +117,10 @@ The following features are currently exclusively available to sponsors:
+- [x] [Social cards :material-new-box:][34] - [x] [Cookie consent :material-new-box:][33] - [x] [Linking content tabs :material-new-box:][32] -- [x] [Boosting pages in search :material-new-box:][30] +- [x] [Boosting pages in search][30] - [x] [Tags (with search integration)][29] - [x] [Stay on page when switching versions][28] - [x] [Version warning][26] @@ -190,25 +191,28 @@ the public for general availability. #### $ 7,000 – Royal Gold - [x] [Cookie consent][33] -- [ ] Table of contents auto-collapse -- [ ] Table of contents follows active anchor +- [ ] Improved search result summaries +- [ ] List of last searches [33]: ../setup/setting-up-site-analytics.md#cookie-consent #### $ 8,000 – Scotch Bonnet -- [ ] Improved search result summaries +- [x] [Social cards][34] - [ ] Stay on page when switching languages -- [ ] List of last searches +- [ ] Table of contents follows active anchor + + [34]: ../setup/setting-up-social-cards.md #### Future -- [ ] [Material for MkDocs Live Edit][34] +- [ ] [Material for MkDocs Live Edit][35] - [ ] New layouts and styles - [ ] Code block palette toggle - [ ] Native lightbox integration +- [ ] Table of contents auto-collapse - [34]: https://twitter.com/squidfunk/status/1338252230265360391 + [35]: https://twitter.com/squidfunk/status/1338252230265360391 ### Goals completed @@ -273,23 +277,23 @@ implemented behind feature flags; all configuration changes are backward-compatible. This means that your users will be able to build the documentation locally with Material for MkDocs and when they push their changes, it can be built with Insiders (e.g. as part of GitHub Actions). Thus, it's -recommended to [install Insiders][35] only in CI, as you don't want to expose +recommended to [install Insiders][36] only in CI, as you don't want to expose your `GH_TOKEN` to users. - [35]: ../publishing-your-site.md#github-pages + [36]: ../publishing-your-site.md#github-pages ### Payment _We don't want to pay for sponsorship every month. Are there any other options?_ Yes. You can sponsor on a yearly basis by [switching your GitHub account to a -yearly billing cycle][36]. If for some reason you cannot do that, you could +yearly billing cycle][37]. If for some reason you cannot do that, you could also create a dedicated GitHub account with a yearly billing cycle, which you only use for sponsoring (some sponsors already do that). One-time payments are not eligible for Insiders. - [36]: https://docs.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle + [37]: https://docs.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle ### Terms @@ -298,7 +302,7 @@ commercial project. Can we use Insiders under the same terms and conditions?_ Yes. Whether you're an individual or a company, you may use _Material for MkDocs Insiders_ precisely under the same terms as Material for MkDocs, which are given -by the [MIT license][37]. However, we kindly ask you to respect the following +by the [MIT license][38]. However, we kindly ask you to respect the following guidelines: - Please __don't distribute the source code__ of Insiders. You may freely use @@ -309,7 +313,7 @@ guidelines: - If you cancel your subscription, you're removed as a collaborator and will miss out on future updates of Insiders. However, you may __use the latest version__ that's available to you __as long as you like__. Just remember that - [GitHub deletes private forks][38]. + [GitHub deletes private forks][39]. - [37]: ../license.md - [38]: https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository + [38]: ../license.md + [39]: https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository diff --git a/docs/setup/setting-up-social-cards.md b/docs/setup/setting-up-social-cards.md new file mode 100644 index 000000000..f566f8173 --- /dev/null +++ b/docs/setup/setting-up-social-cards.md @@ -0,0 +1,63 @@ +--- +template: overrides/main.html +--- + +# Setting up social cards + +Social cards, also known as social previews, are images that are displayed when +a link to your project documentation is shared on social media. Material for +MkDocs can generate beautiful social cards automatically, using the colors, +fonts and logo defined in `mkdocs.yml`. + +## Configuration + +### Built-in social cards + +[:octicons-file-code-24: Source][1] · +[:octicons-cpu-24: Plugin][1] · +:octicons-beaker-24: Experimental · +[:octicons-heart-fill-24:{ .mdx-heart } Insiders only][1]{ .mdx-insiders } + +The [built-in social cards plugin][1] generates a social card image for every +page and adds the necessary meta tags, so it's displayed on social media when +shared. Enable it via `mkdocs.yml`: + +``` yaml +plugins: + - social +``` + +For example, the page on [setting up site analytics][2] renders as: + +
+ +[![Social Cards][3]][3] + +
+ +Want to try it out? Copy the current URL and enter it into [Twitter's Card +validator][4] to see how social cards look in action. + +
+
+ +This is a built-in plugin, which means that no third-party plugin needs to be +installed, as Material for MkDocs already bundles it. The following options +are available: + +`cards_directory`{ #cards_directory } + +: :octicons-milestone-24: Default: `assets/images/social` – This option + specifies where the generated social card images will be written to. It + should normally not be necessary to change this option. + + ``` yaml + plugins: + - social: + cards_directory: assets/images/social + ``` + + [1]: ../insiders/index.md + [2]: setting-up-site-analytics.md + [3]: ../assets/screenshots/social-cards.png + [4]: https://cards-dev.twitter.com/validator diff --git a/material/base.html b/material/base.html index 0154f029c..7ce64e619 100644 --- a/material/base.html +++ b/material/base.html @@ -27,7 +27,7 @@ {% endif %} - + {% endblock %} {% block htmltitle %} {% if page and page.meta and page.meta.title %} diff --git a/material/overrides/assets/stylesheets/main.14225c90.min.css b/material/overrides/assets/stylesheets/main.14225c90.min.css new file mode 100644 index 000000000..0428efd35 --- /dev/null +++ b/material/overrides/assets/stylesheets/main.14225c90.min.css @@ -0,0 +1,2 @@ +@-webkit-keyframes mdx-heart{0%,40%,80%,to{transform:scale(1)}20%,60%{transform:scale(1.15)}}@keyframes mdx-heart{0%,40%,80%,to{transform:scale(1)}20%,60%{transform:scale(1.15)}}.md-typeset .twitter{color:#00acee}.md-typeset .mdx-video{width:auto}.md-typeset .mdx-video__inner{height:0;padding-bottom:56.138%;position:relative;width:100%}.md-typeset .mdx-video iframe{border:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.md-typeset .mdx-heart{-webkit-animation:mdx-heart 1s infinite;animation:mdx-heart 1s infinite}.md-typeset .mdx-insiders{color:#e91e63}.md-typeset .mdx-switch button{cursor:pointer;transition:opacity .25s}.md-typeset .mdx-switch button:focus,.md-typeset .mdx-switch button:hover{opacity:.75}.md-typeset .mdx-switch button>code{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block}.md-typeset .mdx-columns ol,.md-typeset .mdx-columns ul{-moz-columns:2;column-count:2}@media screen and (max-width:29.9375em){.md-typeset .mdx-columns ol,.md-typeset .mdx-columns ul{-moz-columns:initial;columns:initial}}.md-typeset .mdx-columns li{-moz-column-break-inside:avoid;break-inside:avoid}.md-announce a,.md-announce a:focus,.md-announce a:hover{color:currentColor}.md-announce strong{white-space:nowrap}.md-announce .twitter{margin-left:.2em}.mdx-container{background:url("data:image/svg+xml;utf8,") no-repeat bottom,linear-gradient(to bottom,var(--md-primary-fg-color),#a63fd9 99%,var(--md-default-bg-color) 99%);padding-top:1rem}[data-md-color-scheme=slate] .mdx-container{background:url("data:image/svg+xml;utf8,") no-repeat bottom,linear-gradient(to bottom,var(--md-primary-fg-color),#a63fd9 99%,var(--md-default-bg-color) 99%)}.mdx-hero{color:var(--md-primary-bg-color);margin:0 .8rem}.mdx-hero h1{color:currentColor;font-weight:700;margin-bottom:1rem}@media screen and (max-width:29.9375em){.mdx-hero h1{font-size:1.4rem}}.mdx-hero__content{padding-bottom:6rem}@media screen and (min-width:60em){.mdx-hero{align-items:stretch;display:flex}.mdx-hero__content{margin-top:3.5rem;max-width:19rem;padding-bottom:14vw}.mdx-hero__image{order:1;transform:translateX(4rem);width:38rem}}@media screen and (min-width:76.25em){.mdx-hero__image{transform:translateX(8rem)}}.mdx-hero .md-button{color:var(--md-primary-bg-color);margin-right:.5rem;margin-top:.5rem}.mdx-hero .md-button:focus,.mdx-hero .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.mdx-hero .md-button--primary{background-color:var(--md-primary-bg-color);border-color:var(--md-primary-bg-color);color:#894da8}.md-typeset .mdx-iconsearch{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.1),0 .025rem .05rem rgba(0,0,0,.1);position:relative;transition:box-shadow 125ms}.md-typeset .mdx-iconsearch:focus-within,.md-typeset .mdx-iconsearch:hover{box-shadow:0 .4rem 1rem rgba(0,0,0,.15),0 .025rem .05rem rgba(0,0,0,.15)}.md-typeset .mdx-iconsearch .md-input{background:var(--md-default-bg-color);box-shadow:0 0 .6rem rgba(0,0,0,.07)}[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch .md-input{background:var(--md-code-bg-color)}.md-typeset .mdx-iconsearch-result{-webkit-backface-visibility:hidden;backface-visibility:hidden;max-height:50vh;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:pan-y}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset .mdx-iconsearch-result__meta{color:var(--md-default-fg-color--lighter);font-size:.64rem;position:absolute;right:.6rem;top:.4rem}.md-typeset .mdx-iconsearch-result__list{list-style:none;margin:0;padding:0}.md-typeset .mdx-iconsearch-result__item{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin:0;padding:.2rem .6rem}.md-typeset .mdx-iconsearch-result__item:last-child{border-bottom:none}.md-typeset .mdx-iconsearch-result__item>*{margin-right:.6rem}.md-typeset .mdx-iconsearch-result__item img{height:.9rem;width:.9rem}[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch-result__item img[src*=squidfunk]{-webkit-filter:invert(1);filter:invert(1)}.md-typeset .mdx-sponsorship__list{margin:2em 0;overflow:auto}.md-typeset .mdx-sponsorship__item{border-radius:100%;display:block;float:left;height:3rem;margin:.2rem;overflow:hidden;transform:scale(1);transition:color 125ms,transform 125ms;width:3rem}.md-typeset .mdx-sponsorship__item:focus,.md-typeset .mdx-sponsorship__item:hover{transform:scale(1.1)}.md-typeset .mdx-sponsorship__item:focus img,.md-typeset .mdx-sponsorship__item:hover img{-webkit-filter:grayscale(0);filter:grayscale(0)}.md-typeset .mdx-sponsorship__item--private{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:1.2rem;font-weight:700;line-height:3rem;text-align:center}.md-typeset .mdx-sponsorship__item img{display:block;-webkit-filter:grayscale(100%);filter:grayscale(100%);height:auto;transition:-webkit-filter 125ms;transition:filter 125ms;transition:filter 125ms,-webkit-filter 125ms;width:100%}.md-typeset .mdx-sponsorship-button{font-weight:400}.md-typeset .mdx-sponsorship-count,.md-typeset .mdx-sponsorship-total{font-weight:700} +/*# sourceMappingURL=main.14225c90.min.css.map */ \ No newline at end of file diff --git a/material/overrides/assets/stylesheets/main.14225c90.min.css.map b/material/overrides/assets/stylesheets/main.14225c90.min.css.map new file mode 100644 index 000000000..b0d505363 --- /dev/null +++ b/material/overrides/assets/stylesheets/main.14225c90.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/overrides/assets/stylesheets/main/_typeset.scss","src/overrides/assets/stylesheets/main.scss","src/assets/stylesheets/utilities/_break.scss","src/overrides/assets/stylesheets/main/layout/_announce.scss","src/overrides/assets/stylesheets/main/layout/_hero.scss","src/overrides/assets/stylesheets/main/layout/_iconsearch.scss","src/overrides/assets/stylesheets/main/layout/_sponsorship.scss"],"names":[],"mappings":"AA2BA,6BACE,cAIE,kBC7BF,CDgCA,QAEE,qBC/BF,CACF,CDoBA,qBACE,cAIE,kBC7BF,CDgCA,QAEE,qBC/BF,CACF,CD0CE,qBACE,aCxCJ,CD4CE,uBACE,UC1CJ,CD6CI,8BAGE,QAAA,CACA,sBAAA,CAHA,iBAAA,CACA,UCzCN,CD+CI,8BAOE,WAAA,CAFA,WAAA,CAFA,MAAA,CAGA,eAAA,CALA,iBAAA,CACA,KAAA,CAEA,UC1CN,CDkDE,uBACE,uCAAA,CAAA,+BChDJ,CDoDE,0BACE,aClDJ,CDsDE,+BACE,cAAA,CACA,uBCpDJ,CDuDI,0EAEE,WCtDN,CD0DI,oCAGE,2CAAA,CADA,gCAAA,CADA,aCtDN,CDgEI,wDAEE,cAAA,CAAA,cC9DN,CC8JI,wCFlGA,wDAMI,oBAAA,CAAA,eC7DN,CACF,CDiEI,4BACE,8BAAA,CAAA,kBC/DN,CE7BE,yDAGE,kBFgCJ,CE5BE,oBACE,kBF8BJ,CE1BE,sBACE,gBF4BJ,CG5CA,eAEE,uYACE,CAFF,gBHgDF,CGrCE,4CACE,yYHuCJ,CG3BA,UAEE,gCAAA,CADA,cH+BF,CG3BE,aAEE,kBAAA,CACA,eAAA,CAFA,kBH+BJ,CCuHI,wCEvJF,aAOI,gBH6BJ,CACF,CGzBE,mBACE,mBH2BJ,CC4FI,mCEzIJ,UAwBI,mBAAA,CADA,YH2BF,CGvBE,mBAEE,iBAAA,CADA,eAAA,CAEA,mBHyBJ,CGrBE,iBACE,OAAA,CAEA,0BAAA,CADA,WHwBJ,CACF,CC4EI,sCE5FA,iBACE,0BHmBJ,CACF,CGfE,qBAGE,gCAAA,CADA,kBAAA,CADA,gBHmBJ,CGdI,sDAGE,0CAAA,CACA,sCAAA,CAFA,+BHiBN,CGXI,8BAEE,2CAAA,CACA,uCAAA,CAFA,aHeN,CIvGE,4BAEE,2CAAA,CACA,mBAAA,CACA,uEACE,CAJF,iBAAA,CAMA,2BJwGJ,CIrGI,2EAEE,wEJsGN,CIhGI,sCACE,qCAAA,CACA,oCJkGN,CI/FM,mEACE,kCJiGR,CI3FE,mCAIE,kCAAA,CAAA,0BAAA,CAHA,eAAA,CACA,eAAA,CAKA,+DAAA,CADA,oBAAA,CADA,kBJ8FJ,CIzFI,sDAEE,YAAA,CADA,WJ4FN,CIvFI,4DACE,oDJyFN,CItFM,kEACE,0CJwFR,CInFI,yCAIE,yCAAA,CACA,gBAAA,CAJA,iBAAA,CAEA,WAAA,CADA,SJwFN,CIjFI,yCAGE,eAAA,CAFA,QAAA,CACA,SJoFN,CI/EI,yCAGE,+DAAA,CAFA,QAAA,CACA,mBJkFN,CI9EM,oDACE,kBJgFR,CI5EM,2CACE,kBJ8ER,CI1EM,6CAEE,YAAA,CADA,WJ6ER,CIzEQ,0FACE,wBAAA,CAAA,gBJ2EV,CKtKI,mCACE,YAAA,CACA,aLyKN,CKrKI,mCAOE,kBAAA,CANA,aAAA,CACA,UAAA,CAEA,WAAA,CACA,YAAA,CACA,eAAA,CAEA,kBAAA,CACA,sCACE,CAPF,UL6KN,CKlKM,kFAEE,oBLmKR,CKhKQ,0FACE,2BAAA,CAAA,mBLkKV,CK7JM,4CAME,+CAAA,CALA,yCAAA,CAEA,gBAAA,CADA,eAAA,CAEA,gBAAA,CACA,iBLgKR,CK3JM,uCACE,aAAA,CAGA,8BAAA,CAAA,sBAAA,CADA,WAAA,CAEA,+BAAA,CAAA,uBAAA,CAAA,4CAAA,CAHA,ULgKR,CKvJE,oCACE,eLyJJ,CKrJE,sEAEE,eLuJJ","file":"src/overrides/assets/stylesheets/main.scss","sourcesContent":["////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Keyframes\n// ----------------------------------------------------------------------------\n\n// Pumping heart animation\n@keyframes mdx-heart {\n 0%,\n 40%,\n 80%,\n 100% {\n transform: scale(1);\n }\n\n 20%,\n 60% {\n transform: scale(1.15);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Scoped in typesetted content to match specificity of regular content\n.md-typeset {\n\n // Twitter icon\n .twitter {\n color: #00acee;\n }\n\n // Insiders video\n .mdx-video {\n width: auto;\n\n // Insiders video container\n &__inner {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 56.138%;\n }\n\n // Insiders video iframe\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border: none;\n }\n }\n\n // Pumping heart\n .mdx-heart {\n animation: mdx-heart 1000ms infinite;\n }\n\n // Insiders color (for links, etc.)\n .mdx-insiders {\n color: $clr-pink-500;\n }\n\n // Switch buttons\n .mdx-switch button {\n cursor: pointer;\n transition: opacity 250ms;\n\n // Button on focus/hover\n &:focus,\n &:hover {\n opacity: 0.75;\n }\n\n // Code block\n > code {\n display: block;\n color: var(--md-primary-bg-color);\n background-color: var(--md-primary-fg-color);\n }\n }\n\n // Two-column layout\n .mdx-columns {\n\n // Column\n ol,\n ul {\n columns: 2;\n\n // [mobile portrait -]: Reset columns on mobile\n @include break-to-device(mobile portrait) {\n columns: initial;\n }\n }\n\n // Column item\n li {\n break-inside: avoid;\n }\n }\n}\n","@keyframes mdx-heart {\n 0%, 40%, 80%, 100% {\n transform: scale(1);\n }\n 20%, 60% {\n transform: scale(1.15);\n }\n}\n.md-typeset .twitter {\n color: #00acee;\n}\n.md-typeset .mdx-video {\n width: auto;\n}\n.md-typeset .mdx-video__inner {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 56.138%;\n}\n.md-typeset .mdx-video iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border: none;\n}\n.md-typeset .mdx-heart {\n animation: mdx-heart 1000ms infinite;\n}\n.md-typeset .mdx-insiders {\n color: #e91e63;\n}\n.md-typeset .mdx-switch button {\n cursor: pointer;\n transition: opacity 250ms;\n}\n.md-typeset .mdx-switch button:focus, .md-typeset .mdx-switch button:hover {\n opacity: 0.75;\n}\n.md-typeset .mdx-switch button > code {\n display: block;\n color: var(--md-primary-bg-color);\n background-color: var(--md-primary-fg-color);\n}\n.md-typeset .mdx-columns ol,\n.md-typeset .mdx-columns ul {\n columns: 2;\n}\n@media screen and (max-width: 29.9375em) {\n .md-typeset .mdx-columns ol,\n.md-typeset .mdx-columns ul {\n columns: initial;\n }\n}\n.md-typeset .mdx-columns li {\n break-inside: avoid;\n}\n\n.md-announce a,\n.md-announce a:focus,\n.md-announce a:hover {\n color: currentColor;\n}\n.md-announce strong {\n white-space: nowrap;\n}\n.md-announce .twitter {\n margin-left: 0.2em;\n}\n\n.mdx-container {\n padding-top: 1rem;\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom, linear-gradient(to bottom, var(--md-primary-fg-color), #a63fd9 99%, var(--md-default-bg-color) 99%);\n}\n[data-md-color-scheme=slate] .mdx-container {\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom, linear-gradient(to bottom, var(--md-primary-fg-color), #a63fd9 99%, var(--md-default-bg-color) 99%);\n}\n\n.mdx-hero {\n margin: 0 0.8rem;\n color: var(--md-primary-bg-color);\n}\n.mdx-hero h1 {\n margin-bottom: 1rem;\n color: currentColor;\n font-weight: 700;\n}\n@media screen and (max-width: 29.9375em) {\n .mdx-hero h1 {\n font-size: 1.4rem;\n }\n}\n.mdx-hero__content {\n padding-bottom: 6rem;\n}\n@media screen and (min-width: 60em) {\n .mdx-hero {\n display: flex;\n align-items: stretch;\n }\n .mdx-hero__content {\n max-width: 19rem;\n margin-top: 3.5rem;\n padding-bottom: 14vw;\n }\n .mdx-hero__image {\n order: 1;\n width: 38rem;\n transform: translateX(4rem);\n }\n}\n@media screen and (min-width: 76.25em) {\n .mdx-hero__image {\n transform: translateX(8rem);\n }\n}\n.mdx-hero .md-button {\n margin-top: 0.5rem;\n margin-right: 0.5rem;\n color: var(--md-primary-bg-color);\n}\n.mdx-hero .md-button:focus, .mdx-hero .md-button:hover {\n color: var(--md-accent-bg-color);\n background-color: var(--md-accent-fg-color);\n border-color: var(--md-accent-fg-color);\n}\n.mdx-hero .md-button--primary {\n color: #894da8;\n background-color: var(--md-primary-bg-color);\n border-color: var(--md-primary-bg-color);\n}\n\n.md-typeset .mdx-iconsearch {\n position: relative;\n background-color: var(--md-default-bg-color);\n border-radius: 0.1rem;\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.1), 0 0.025rem 0.05rem rgba(0, 0, 0, 0.1);\n transition: box-shadow 125ms;\n}\n.md-typeset .mdx-iconsearch:focus-within, .md-typeset .mdx-iconsearch:hover {\n box-shadow: 0 0.4rem 1rem rgba(0, 0, 0, 0.15), 0 0.025rem 0.05rem rgba(0, 0, 0, 0.15);\n}\n.md-typeset .mdx-iconsearch .md-input {\n background: var(--md-default-bg-color);\n box-shadow: 0 0 0.6rem rgba(0, 0, 0, 0.07);\n}\n[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch .md-input {\n background: var(--md-code-bg-color);\n}\n.md-typeset .mdx-iconsearch-result {\n max-height: 50vh;\n overflow-y: auto;\n backface-visibility: hidden;\n touch-action: pan-y;\n scrollbar-width: thin;\n scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n}\n.md-typeset .mdx-iconsearch-result::-webkit-scrollbar {\n width: 0.2rem;\n height: 0.2rem;\n}\n.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb {\n background-color: var(--md-default-fg-color--lighter);\n}\n.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb:hover {\n background-color: var(--md-accent-fg-color);\n}\n.md-typeset .mdx-iconsearch-result__meta {\n position: absolute;\n top: 0.4rem;\n right: 0.6rem;\n color: var(--md-default-fg-color--lighter);\n font-size: 0.64rem;\n}\n.md-typeset .mdx-iconsearch-result__list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.md-typeset .mdx-iconsearch-result__item {\n margin: 0;\n padding: 0.2rem 0.6rem;\n border-bottom: 0.05rem solid var(--md-default-fg-color--lightest);\n}\n.md-typeset .mdx-iconsearch-result__item:last-child {\n border-bottom: none;\n}\n.md-typeset .mdx-iconsearch-result__item > * {\n margin-right: 0.6rem;\n}\n.md-typeset .mdx-iconsearch-result__item img {\n width: 0.9rem;\n height: 0.9rem;\n}\n[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch-result__item img[src*=squidfunk] {\n filter: invert(1);\n}\n\n.md-typeset .mdx-sponsorship__list {\n margin: 2em 0;\n overflow: auto;\n}\n.md-typeset .mdx-sponsorship__item {\n display: block;\n float: left;\n width: 3rem;\n height: 3rem;\n margin: 0.2rem;\n overflow: hidden;\n border-radius: 100%;\n transform: scale(1);\n transition: color 125ms, transform 125ms;\n}\n.md-typeset .mdx-sponsorship__item:focus, .md-typeset .mdx-sponsorship__item:hover {\n transform: scale(1.1);\n}\n.md-typeset .mdx-sponsorship__item:focus img, .md-typeset .mdx-sponsorship__item:hover img {\n filter: grayscale(0%);\n}\n.md-typeset .mdx-sponsorship__item--private {\n color: var(--md-default-fg-color--lighter);\n font-weight: 700;\n font-size: 1.2rem;\n line-height: 3rem;\n text-align: center;\n background: var(--md-default-fg-color--lightest);\n}\n.md-typeset .mdx-sponsorship__item img {\n display: block;\n width: 100%;\n height: auto;\n filter: grayscale(100%);\n transition: filter 125ms;\n}\n.md-typeset .mdx-sponsorship-button {\n font-weight: 400;\n}\n.md-typeset .mdx-sponsorship-count,\n.md-typeset .mdx-sponsorship-total {\n font-weight: 700;\n}\n\n/*# sourceMappingURL=main.css.map */","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Variables\n// ----------------------------------------------------------------------------\n\n///\n/// Device-specific breakpoints\n///\n/// @example\n/// $break-devices: (\n/// mobile: (\n/// portrait: 220px 479px,\n/// landscape: 480px 719px\n/// ),\n/// tablet: (\n/// portrait: 720px 959px,\n/// landscape: 960px 1219px\n/// ),\n/// screen: (\n/// small: 1220px 1599px,\n/// medium: 1600px 1999px,\n/// large: 2000px\n/// )\n/// );\n///\n$break-devices: () !default;\n\n// ----------------------------------------------------------------------------\n// Helpers\n// ----------------------------------------------------------------------------\n\n///\n/// Choose minimum and maximum device widths\n///\n@function break-select-min-max($devices) {\n $min: 1000000;\n $max: 0;\n @each $key, $value in $devices {\n @while type-of($value) == map {\n $value: break-select-min-max($value);\n }\n @if type-of($value) == list {\n @each $number in $value {\n @if type-of($number) == number {\n $min: min($number, $min);\n @if $max {\n $max: max($number, $max);\n }\n } @else {\n @error \"Invalid number: #{$number}\";\n }\n }\n } @else if type-of($value) == number {\n $min: min($value, $min);\n $max: null;\n } @else {\n @error \"Invalid value: #{$value}\";\n }\n }\n @return $min, $max;\n}\n\n///\n/// Select minimum and maximum widths for a device breakpoint\n///\n@function break-select-device($device) {\n $current: $break-devices;\n @for $n from 1 through length($device) {\n @if type-of($current) == map {\n $current: map-get($current, nth($device, $n));\n } @else {\n @error \"Invalid device map: #{$devices}\";\n }\n }\n @if type-of($current) == list or type-of($current) == number {\n $current: (default: $current);\n }\n @return break-select-min-max($current);\n}\n\n// ----------------------------------------------------------------------------\n// Mixins\n// ----------------------------------------------------------------------------\n\n///\n/// A minimum-maximum media query breakpoint\n///\n@mixin break-at($breakpoint) {\n @if type-of($breakpoint) == number {\n @media screen and (min-width: $breakpoint) {\n @content;\n }\n } @else if type-of($breakpoint) == list {\n $min: nth($breakpoint, 1);\n $max: nth($breakpoint, 2);\n @if type-of($min) == number and type-of($max) == number {\n @media screen and (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// An orientation media query breakpoint\n///\n@mixin break-at-orientation($breakpoint) {\n @if type-of($breakpoint) == string {\n @media screen and (orientation: $breakpoint) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// A maximum-aspect-ratio media query breakpoint\n///\n@mixin break-at-ratio($breakpoint) {\n @if type-of($breakpoint) == number {\n @media screen and (max-aspect-ratio: $breakpoint) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// A minimum-maximum media query device breakpoint\n///\n@mixin break-at-device($device) {\n @if type-of($device) == string {\n $device: $device,;\n }\n @if type-of($device) == list {\n $breakpoint: break-select-device($device);\n @if nth($breakpoint, 2) {\n $min: nth($breakpoint, 1);\n $max: nth($breakpoint, 2);\n\n @media screen and (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n\n///\n/// A minimum media query device breakpoint\n///\n@mixin break-from-device($device) {\n @if type-of($device) == string {\n $device: $device,;\n }\n @if type-of($device) == list {\n $breakpoint: break-select-device($device);\n $min: nth($breakpoint, 1);\n\n @media screen and (min-width: $min) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n\n///\n/// A maximum media query device breakpoint\n///\n@mixin break-to-device($device) {\n @if type-of($device) == string {\n $device: $device,;\n }\n @if type-of($device) == list {\n $breakpoint: break-select-device($device);\n $max: nth($breakpoint, 2);\n\n @media screen and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Announcement bar\n.md-announce {\n\n // Text link, also on focus/hover\n a,\n a:focus,\n a:hover {\n color: currentColor;\n }\n\n // Don't wrap name of blog article\n strong {\n white-space: nowrap;\n }\n\n // Twitter icon\n .twitter {\n margin-left: 0.2em;\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Landing page container\n.mdx-container {\n padding-top: px2rem(20px);\n background:\n url(\"data:image/svg+xml;utf8,\") no-repeat bottom,\n linear-gradient(\n to bottom,\n var(--md-primary-fg-color),\n hsla(280, 67%, 55%, 1) 99%,\n var(--md-default-bg-color) 99%\n );\n\n // Adjust background for slate theme\n [data-md-color-scheme=\"slate\"] & {\n background:\n url(\"data:image/svg+xml;utf8,\") no-repeat bottom,\n linear-gradient(\n to bottom,\n var(--md-primary-fg-color),\n hsla(280, 67%, 55%, 1) 99%,\n var(--md-default-bg-color) 99%\n );\n }\n}\n\n// Landing page hero\n.mdx-hero {\n margin: 0 px2rem(16px);\n color: var(--md-primary-bg-color);\n\n // Hero headline\n h1 {\n margin-bottom: px2rem(20px);\n color: currentColor;\n font-weight: 700;\n\n // [mobile portrait -]: Larger hero headline\n @include break-to-device(mobile portrait) {\n font-size: px2rem(28px);\n }\n }\n\n // Hero content\n &__content {\n padding-bottom: px2rem(120px);\n }\n\n // [tablet landscape +]: Columnar display\n @include break-from-device(tablet landscape) {\n display: flex;\n align-items: stretch;\n\n // Adjust spacing and set dimensions\n &__content {\n max-width: px2rem(380px);\n margin-top: px2rem(70px);\n padding-bottom: 14vw;\n }\n\n // Hero image\n &__image {\n order: 1;\n width: px2rem(760px);\n transform: translateX(#{px2rem(80px)});\n }\n }\n\n // [screen +]: Columnar display and adjusted spacing\n @include break-from-device(screen) {\n\n // Hero image\n &__image {\n transform: translateX(#{px2rem(160px)});\n }\n }\n\n // Button\n .md-button {\n margin-top: px2rem(10px);\n margin-right: px2rem(10px);\n color: var(--md-primary-bg-color);\n\n // Button on focus/hover\n &:focus,\n &:hover {\n color: var(--md-accent-bg-color);\n background-color: var(--md-accent-fg-color);\n border-color: var(--md-accent-fg-color);\n }\n\n // Primary button\n &--primary {\n color: hsla(280deg, 37%, 48%, 1);\n background-color: var(--md-primary-bg-color);\n border-color: var(--md-primary-bg-color);\n }\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Scoped in typesetted content to match specificity of regular content\n.md-typeset {\n\n // Icon search\n .mdx-iconsearch {\n position: relative;\n background-color: var(--md-default-bg-color);\n border-radius: px2rem(2px);\n box-shadow:\n 0 px2rem(4px) px2rem(10px) hsla(0, 0%, 0%, 0.1),\n 0 px2rem(0.5px) px2rem(1px) hsla(0, 0%, 0%, 0.1);\n transition: box-shadow 125ms;\n\n // Icon search on focus/hover\n &:focus-within,\n &:hover {\n box-shadow:\n 0 px2rem(8px) px2rem(20px) hsla(0, 0%, 0%, 0.15),\n 0 px2rem(0.5px) px2rem(1px) hsla(0, 0%, 0%, 0.15);\n }\n\n // Icon search input\n .md-input {\n background: var(--md-default-bg-color);\n box-shadow: 0 0 px2rem(12px) hsla(0, 0%, 0%, 0.07);\n\n // Slate theme, i.e. dark mode\n [data-md-color-scheme=\"slate\"] & {\n background: var(--md-code-bg-color);\n }\n }\n }\n\n // Icon search result\n .mdx-iconsearch-result {\n max-height: 50vh;\n overflow-y: auto;\n // Hack: promote to own layer to reduce jitter\n backface-visibility: hidden;\n touch-action: pan-y;\n scrollbar-width: thin;\n scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n\n // Webkit scrollbar\n &::-webkit-scrollbar {\n width: px2rem(4px);\n height: px2rem(4px);\n }\n\n // Webkit scrollbar thumb\n &::-webkit-scrollbar-thumb {\n background-color: var(--md-default-fg-color--lighter);\n\n // Webkit scrollbar thumb on hover\n &:hover {\n background-color: var(--md-accent-fg-color);\n }\n }\n\n // Icon search result metadata\n &__meta {\n position: absolute;\n top: px2rem(8px);\n right: px2rem(12px);\n color: var(--md-default-fg-color--lighter);\n font-size: px2rem(12.8px);\n }\n\n // Icon search result list\n &__list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n // Icon search result item\n &__item {\n margin: 0;\n padding: px2rem(4px) px2rem(12px);\n border-bottom: px2rem(1px) solid var(--md-default-fg-color--lightest);\n\n // Omit border on last child\n &:last-child {\n border-bottom: none;\n }\n\n // Item content\n > * {\n margin-right: px2rem(12px);\n }\n\n // Set icon dimensions to fit\n img {\n width: px2rem(18px);\n height: px2rem(18px);\n\n // Slate theme, i.e. dark mode\n [data-md-color-scheme=\"slate\"] &[src*=squidfunk] {\n filter: invert(1);\n }\n }\n }\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Scoped in typesetted content to match specificity of regular content\n.md-typeset {\n\n // Sponsorship\n .mdx-sponsorship {\n\n // Sponsorship list\n &__list {\n margin: 2em 0;\n overflow: auto;\n }\n\n // Sponsorship item\n &__item {\n display: block;\n float: left;\n width: px2rem(60px);\n height: px2rem(60px);\n margin: px2rem(4px);\n overflow: hidden;\n border-radius: 100%;\n transform: scale(1);\n transition:\n color 125ms,\n transform 125ms;\n\n // Sponsor item on focus/hover\n &:focus,\n &:hover {\n transform: scale(1.1);\n\n // Sponsor avatar\n img {\n filter: grayscale(0%);\n }\n }\n\n // Private sponsor\n &--private {\n color: var(--md-default-fg-color--lighter);\n font-weight: 700;\n font-size: px2rem(24px);\n line-height: px2rem(60px);\n text-align: center;\n background: var(--md-default-fg-color--lightest);\n }\n\n // Sponsor avatar\n img {\n display: block;\n width: 100%;\n height: auto;\n filter: grayscale(100%);\n transition: filter 125ms;\n }\n }\n }\n\n // Sponsorship button\n .mdx-sponsorship-button {\n font-weight: 400;\n }\n\n // Sponsorship count and total\n .mdx-sponsorship-count,\n .mdx-sponsorship-total {\n font-weight: 700;\n }\n}\n"]} \ No newline at end of file diff --git a/material/overrides/assets/stylesheets/main.90c53ea0.min.css b/material/overrides/assets/stylesheets/main.90c53ea0.min.css deleted file mode 100644 index d0390444f..000000000 --- a/material/overrides/assets/stylesheets/main.90c53ea0.min.css +++ /dev/null @@ -1,2 +0,0 @@ -@-webkit-keyframes mdx-heart{0%,40%,80%,to{transform:scale(1)}20%,60%{transform:scale(1.15)}}@keyframes mdx-heart{0%,40%,80%,to{transform:scale(1)}20%,60%{transform:scale(1.15)}}.md-typeset figure>p+figcaption{margin-top:-1.2rem}.md-typeset .twitter{color:#00acee}.md-typeset .mdx-video{width:auto}.md-typeset .mdx-video__inner{height:0;padding-bottom:56.138%;position:relative;width:100%}.md-typeset .mdx-video iframe{border:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.md-typeset .mdx-heart{-webkit-animation:mdx-heart 1s infinite;animation:mdx-heart 1s infinite}.md-typeset .mdx-insiders{color:#e91e63}.md-typeset .mdx-switch button{cursor:pointer;transition:opacity .25s}.md-typeset .mdx-switch button:focus,.md-typeset .mdx-switch button:hover{opacity:.75}.md-typeset .mdx-switch button>code{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block}.md-typeset .mdx-columns ol,.md-typeset .mdx-columns ul{-moz-columns:2;column-count:2}@media screen and (max-width:29.9375em){.md-typeset .mdx-columns ol,.md-typeset .mdx-columns ul{-moz-columns:initial;columns:initial}}.md-typeset .mdx-columns li{-moz-column-break-inside:avoid;break-inside:avoid}.md-announce a,.md-announce a:focus,.md-announce a:hover{color:currentColor}.md-announce strong{white-space:nowrap}.md-announce .twitter{margin-left:.2em}.mdx-container{background:url("data:image/svg+xml;utf8,") no-repeat bottom,linear-gradient(to bottom,var(--md-primary-fg-color),#a63fd9 99%,var(--md-default-bg-color) 99%);padding-top:1rem}[data-md-color-scheme=slate] .mdx-container{background:url("data:image/svg+xml;utf8,") no-repeat bottom,linear-gradient(to bottom,var(--md-primary-fg-color),#a63fd9 99%,var(--md-default-bg-color) 99%)}.mdx-hero{color:var(--md-primary-bg-color);margin:0 .8rem}.mdx-hero h1{color:currentColor;font-weight:700;margin-bottom:1rem}@media screen and (max-width:29.9375em){.mdx-hero h1{font-size:1.4rem}}.mdx-hero__content{padding-bottom:6rem}@media screen and (min-width:60em){.mdx-hero{align-items:stretch;display:flex}.mdx-hero__content{margin-top:3.5rem;max-width:19rem;padding-bottom:14vw}.mdx-hero__image{order:1;transform:translateX(4rem);width:38rem}}@media screen and (min-width:76.25em){.mdx-hero__image{transform:translateX(8rem)}}.mdx-hero .md-button{color:var(--md-primary-bg-color);margin-right:.5rem;margin-top:.5rem}.mdx-hero .md-button:focus,.mdx-hero .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.mdx-hero .md-button--primary{background-color:var(--md-primary-bg-color);border-color:var(--md-primary-bg-color);color:#894da8}.md-typeset .mdx-iconsearch{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.1),0 .025rem .05rem rgba(0,0,0,.1);position:relative;transition:box-shadow 125ms}.md-typeset .mdx-iconsearch:focus-within,.md-typeset .mdx-iconsearch:hover{box-shadow:0 .4rem 1rem rgba(0,0,0,.15),0 .025rem .05rem rgba(0,0,0,.15)}.md-typeset .mdx-iconsearch .md-input{background:var(--md-default-bg-color);box-shadow:0 0 .6rem rgba(0,0,0,.07)}[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch .md-input{background:var(--md-code-bg-color)}.md-typeset .mdx-iconsearch-result{-webkit-backface-visibility:hidden;backface-visibility:hidden;max-height:50vh;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:pan-y}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset .mdx-iconsearch-result__meta{color:var(--md-default-fg-color--lighter);font-size:.64rem;position:absolute;right:.6rem;top:.4rem}.md-typeset .mdx-iconsearch-result__list{list-style:none;margin:0;padding:0}.md-typeset .mdx-iconsearch-result__item{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin:0;padding:.2rem .6rem}.md-typeset .mdx-iconsearch-result__item:last-child{border-bottom:none}.md-typeset .mdx-iconsearch-result__item>*{margin-right:.6rem}.md-typeset .mdx-iconsearch-result__item img{height:.9rem;width:.9rem}[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch-result__item img[src*=squidfunk]{-webkit-filter:invert(1);filter:invert(1)}.md-typeset .mdx-sponsorship__list{margin:2em 0;overflow:auto}.md-typeset .mdx-sponsorship__item{border-radius:100%;display:block;float:left;height:3rem;margin:.2rem;overflow:hidden;transform:scale(1);transition:color 125ms,transform 125ms;width:3rem}.md-typeset .mdx-sponsorship__item:focus,.md-typeset .mdx-sponsorship__item:hover{transform:scale(1.1)}.md-typeset .mdx-sponsorship__item:focus img,.md-typeset .mdx-sponsorship__item:hover img{-webkit-filter:grayscale(0);filter:grayscale(0)}.md-typeset .mdx-sponsorship__item--private{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:1.2rem;font-weight:700;line-height:3rem;text-align:center}.md-typeset .mdx-sponsorship__item img{display:block;-webkit-filter:grayscale(100%);filter:grayscale(100%);height:auto;transition:-webkit-filter 125ms;transition:filter 125ms;transition:filter 125ms,-webkit-filter 125ms;width:100%}.md-typeset .mdx-sponsorship-button{font-weight:400}.md-typeset .mdx-sponsorship-count,.md-typeset .mdx-sponsorship-total{font-weight:700} -/*# sourceMappingURL=main.90c53ea0.min.css.map */ \ No newline at end of file diff --git a/material/overrides/assets/stylesheets/main.90c53ea0.min.css.map b/material/overrides/assets/stylesheets/main.90c53ea0.min.css.map deleted file mode 100644 index 8518fba24..000000000 --- a/material/overrides/assets/stylesheets/main.90c53ea0.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/overrides/assets/stylesheets/main/_typeset.scss","src/overrides/assets/stylesheets/main.scss","src/assets/stylesheets/utilities/_break.scss","src/overrides/assets/stylesheets/main/layout/_announce.scss","src/overrides/assets/stylesheets/main/layout/_hero.scss","src/overrides/assets/stylesheets/main/layout/_iconsearch.scss","src/overrides/assets/stylesheets/main/layout/_sponsorship.scss"],"names":[],"mappings":"AA2BA,6BACE,cAIE,kBC7BF,CDgCA,QAEE,qBC/BF,CACF,CDoBA,qBACE,cAIE,kBC7BF,CDgCA,QAEE,qBC/BF,CACF,CD0CE,gCACE,kBCxCJ,CD4CE,qBACE,aC1CJ,CD8CE,uBACE,UC5CJ,CD+CI,8BAGE,QAAA,CACA,sBAAA,CAHA,iBAAA,CACA,UC3CN,CDiDI,8BAOE,WAAA,CAFA,WAAA,CAFA,MAAA,CAGA,eAAA,CALA,iBAAA,CACA,KAAA,CAEA,UC5CN,CDoDE,uBACE,uCAAA,CAAA,+BClDJ,CDsDE,0BACE,aCpDJ,CDwDE,+BACE,cAAA,CACA,uBCtDJ,CDyDI,0EAEE,WCxDN,CD4DI,oCAGE,2CAAA,CADA,gCAAA,CADA,aCxDN,CDkEI,wDAEE,cAAA,CAAA,cChEN,CC2JI,wCF7FA,wDAMI,oBAAA,CAAA,eC/DN,CACF,CDmEI,4BACE,8BAAA,CAAA,kBCjEN,CEhCE,yDAGE,kBFmCJ,CE/BE,oBACE,kBFiCJ,CE7BE,sBACE,gBF+BJ,CG/CA,eAEE,uYACE,CAFF,gBHmDF,CGxCE,4CACE,yYH0CJ,CG9BA,UAEE,gCAAA,CADA,cHkCF,CG9BE,aAEE,kBAAA,CACA,eAAA,CAFA,kBHkCJ,CCoHI,wCEvJF,aAOI,gBHgCJ,CACF,CG5BE,mBACE,mBH8BJ,CCyFI,mCEzIJ,UAwBI,mBAAA,CADA,YH8BF,CG1BE,mBAEE,iBAAA,CADA,eAAA,CAEA,mBH4BJ,CGxBE,iBACE,OAAA,CAEA,0BAAA,CADA,WH2BJ,CACF,CCyEI,sCE5FA,iBACE,0BHsBJ,CACF,CGlBE,qBAGE,gCAAA,CADA,kBAAA,CADA,gBHsBJ,CGjBI,sDAGE,0CAAA,CACA,sCAAA,CAFA,+BHoBN,CGdI,8BAEE,2CAAA,CACA,uCAAA,CAFA,aHkBN,CI1GE,4BAEE,2CAAA,CACA,mBAAA,CACA,uEACE,CAJF,iBAAA,CAMA,2BJ2GJ,CIxGI,2EAEE,wEJyGN,CInGI,sCACE,qCAAA,CACA,oCJqGN,CIlGM,mEACE,kCJoGR,CI9FE,mCAIE,kCAAA,CAAA,0BAAA,CAHA,eAAA,CACA,eAAA,CAKA,+DAAA,CADA,oBAAA,CADA,kBJiGJ,CI5FI,sDAEE,YAAA,CADA,WJ+FN,CI1FI,4DACE,oDJ4FN,CIzFM,kEACE,0CJ2FR,CItFI,yCAIE,yCAAA,CACA,gBAAA,CAJA,iBAAA,CAEA,WAAA,CADA,SJ2FN,CIpFI,yCAGE,eAAA,CAFA,QAAA,CACA,SJuFN,CIlFI,yCAGE,+DAAA,CAFA,QAAA,CACA,mBJqFN,CIjFM,oDACE,kBJmFR,CI/EM,2CACE,kBJiFR,CI7EM,6CAEE,YAAA,CADA,WJgFR,CI5EQ,0FACE,wBAAA,CAAA,gBJ8EV,CKzKI,mCACE,YAAA,CACA,aL4KN,CKxKI,mCAOE,kBAAA,CANA,aAAA,CACA,UAAA,CAEA,WAAA,CACA,YAAA,CACA,eAAA,CAEA,kBAAA,CACA,sCACE,CAPF,ULgLN,CKrKM,kFAEE,oBLsKR,CKnKQ,0FACE,2BAAA,CAAA,mBLqKV,CKhKM,4CAME,+CAAA,CALA,yCAAA,CAEA,gBAAA,CADA,eAAA,CAEA,gBAAA,CACA,iBLmKR,CK9JM,uCACE,aAAA,CAGA,8BAAA,CAAA,sBAAA,CADA,WAAA,CAEA,+BAAA,CAAA,uBAAA,CAAA,4CAAA,CAHA,ULmKR,CK1JE,oCACE,eL4JJ,CKxJE,sEAEE,eL0JJ","file":"src/overrides/assets/stylesheets/main.scss","sourcesContent":["////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Keyframes\n// ----------------------------------------------------------------------------\n\n// Pumping heart animation\n@keyframes mdx-heart {\n 0%,\n 40%,\n 80%,\n 100% {\n transform: scale(1);\n }\n\n 20%,\n 60% {\n transform: scale(1.15);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Scoped in typesetted content to match specificity of regular content\n.md-typeset {\n\n // Screenshot caption\n figure > p + figcaption {\n margin-top: px2rem(-24px);\n }\n\n // Twitter icon\n .twitter {\n color: #00acee;\n }\n\n // Insiders video\n .mdx-video {\n width: auto;\n\n // Insiders video container\n &__inner {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 56.138%;\n }\n\n // Insiders video iframe\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border: none;\n }\n }\n\n // Pumping heart\n .mdx-heart {\n animation: mdx-heart 1000ms infinite;\n }\n\n // Insiders color (for links, etc.)\n .mdx-insiders {\n color: $clr-pink-500;\n }\n\n // Switch buttons\n .mdx-switch button {\n cursor: pointer;\n transition: opacity 250ms;\n\n // Button on focus/hover\n &:focus,\n &:hover {\n opacity: 0.75;\n }\n\n // Code block\n > code {\n display: block;\n color: var(--md-primary-bg-color);\n background-color: var(--md-primary-fg-color);\n }\n }\n\n // Two-column layout\n .mdx-columns {\n\n // Column\n ol,\n ul {\n columns: 2;\n\n // [mobile portrait -]: Reset columns on mobile\n @include break-to-device(mobile portrait) {\n columns: initial;\n }\n }\n\n // Column item\n li {\n break-inside: avoid;\n }\n }\n}\n","@keyframes mdx-heart {\n 0%, 40%, 80%, 100% {\n transform: scale(1);\n }\n 20%, 60% {\n transform: scale(1.15);\n }\n}\n.md-typeset figure > p + figcaption {\n margin-top: -1.2rem;\n}\n.md-typeset .twitter {\n color: #00acee;\n}\n.md-typeset .mdx-video {\n width: auto;\n}\n.md-typeset .mdx-video__inner {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 56.138%;\n}\n.md-typeset .mdx-video iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border: none;\n}\n.md-typeset .mdx-heart {\n animation: mdx-heart 1000ms infinite;\n}\n.md-typeset .mdx-insiders {\n color: #e91e63;\n}\n.md-typeset .mdx-switch button {\n cursor: pointer;\n transition: opacity 250ms;\n}\n.md-typeset .mdx-switch button:focus, .md-typeset .mdx-switch button:hover {\n opacity: 0.75;\n}\n.md-typeset .mdx-switch button > code {\n display: block;\n color: var(--md-primary-bg-color);\n background-color: var(--md-primary-fg-color);\n}\n.md-typeset .mdx-columns ol,\n.md-typeset .mdx-columns ul {\n columns: 2;\n}\n@media screen and (max-width: 29.9375em) {\n .md-typeset .mdx-columns ol,\n.md-typeset .mdx-columns ul {\n columns: initial;\n }\n}\n.md-typeset .mdx-columns li {\n break-inside: avoid;\n}\n\n.md-announce a,\n.md-announce a:focus,\n.md-announce a:hover {\n color: currentColor;\n}\n.md-announce strong {\n white-space: nowrap;\n}\n.md-announce .twitter {\n margin-left: 0.2em;\n}\n\n.mdx-container {\n padding-top: 1rem;\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom, linear-gradient(to bottom, var(--md-primary-fg-color), #a63fd9 99%, var(--md-default-bg-color) 99%);\n}\n[data-md-color-scheme=slate] .mdx-container {\n background: url(\"data:image/svg+xml;utf8,\") no-repeat bottom, linear-gradient(to bottom, var(--md-primary-fg-color), #a63fd9 99%, var(--md-default-bg-color) 99%);\n}\n\n.mdx-hero {\n margin: 0 0.8rem;\n color: var(--md-primary-bg-color);\n}\n.mdx-hero h1 {\n margin-bottom: 1rem;\n color: currentColor;\n font-weight: 700;\n}\n@media screen and (max-width: 29.9375em) {\n .mdx-hero h1 {\n font-size: 1.4rem;\n }\n}\n.mdx-hero__content {\n padding-bottom: 6rem;\n}\n@media screen and (min-width: 60em) {\n .mdx-hero {\n display: flex;\n align-items: stretch;\n }\n .mdx-hero__content {\n max-width: 19rem;\n margin-top: 3.5rem;\n padding-bottom: 14vw;\n }\n .mdx-hero__image {\n order: 1;\n width: 38rem;\n transform: translateX(4rem);\n }\n}\n@media screen and (min-width: 76.25em) {\n .mdx-hero__image {\n transform: translateX(8rem);\n }\n}\n.mdx-hero .md-button {\n margin-top: 0.5rem;\n margin-right: 0.5rem;\n color: var(--md-primary-bg-color);\n}\n.mdx-hero .md-button:focus, .mdx-hero .md-button:hover {\n color: var(--md-accent-bg-color);\n background-color: var(--md-accent-fg-color);\n border-color: var(--md-accent-fg-color);\n}\n.mdx-hero .md-button--primary {\n color: #894da8;\n background-color: var(--md-primary-bg-color);\n border-color: var(--md-primary-bg-color);\n}\n\n.md-typeset .mdx-iconsearch {\n position: relative;\n background-color: var(--md-default-bg-color);\n border-radius: 0.1rem;\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.1), 0 0.025rem 0.05rem rgba(0, 0, 0, 0.1);\n transition: box-shadow 125ms;\n}\n.md-typeset .mdx-iconsearch:focus-within, .md-typeset .mdx-iconsearch:hover {\n box-shadow: 0 0.4rem 1rem rgba(0, 0, 0, 0.15), 0 0.025rem 0.05rem rgba(0, 0, 0, 0.15);\n}\n.md-typeset .mdx-iconsearch .md-input {\n background: var(--md-default-bg-color);\n box-shadow: 0 0 0.6rem rgba(0, 0, 0, 0.07);\n}\n[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch .md-input {\n background: var(--md-code-bg-color);\n}\n.md-typeset .mdx-iconsearch-result {\n max-height: 50vh;\n overflow-y: auto;\n backface-visibility: hidden;\n touch-action: pan-y;\n scrollbar-width: thin;\n scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n}\n.md-typeset .mdx-iconsearch-result::-webkit-scrollbar {\n width: 0.2rem;\n height: 0.2rem;\n}\n.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb {\n background-color: var(--md-default-fg-color--lighter);\n}\n.md-typeset .mdx-iconsearch-result::-webkit-scrollbar-thumb:hover {\n background-color: var(--md-accent-fg-color);\n}\n.md-typeset .mdx-iconsearch-result__meta {\n position: absolute;\n top: 0.4rem;\n right: 0.6rem;\n color: var(--md-default-fg-color--lighter);\n font-size: 0.64rem;\n}\n.md-typeset .mdx-iconsearch-result__list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.md-typeset .mdx-iconsearch-result__item {\n margin: 0;\n padding: 0.2rem 0.6rem;\n border-bottom: 0.05rem solid var(--md-default-fg-color--lightest);\n}\n.md-typeset .mdx-iconsearch-result__item:last-child {\n border-bottom: none;\n}\n.md-typeset .mdx-iconsearch-result__item > * {\n margin-right: 0.6rem;\n}\n.md-typeset .mdx-iconsearch-result__item img {\n width: 0.9rem;\n height: 0.9rem;\n}\n[data-md-color-scheme=slate] .md-typeset .mdx-iconsearch-result__item img[src*=squidfunk] {\n filter: invert(1);\n}\n\n.md-typeset .mdx-sponsorship__list {\n margin: 2em 0;\n overflow: auto;\n}\n.md-typeset .mdx-sponsorship__item {\n display: block;\n float: left;\n width: 3rem;\n height: 3rem;\n margin: 0.2rem;\n overflow: hidden;\n border-radius: 100%;\n transform: scale(1);\n transition: color 125ms, transform 125ms;\n}\n.md-typeset .mdx-sponsorship__item:focus, .md-typeset .mdx-sponsorship__item:hover {\n transform: scale(1.1);\n}\n.md-typeset .mdx-sponsorship__item:focus img, .md-typeset .mdx-sponsorship__item:hover img {\n filter: grayscale(0%);\n}\n.md-typeset .mdx-sponsorship__item--private {\n color: var(--md-default-fg-color--lighter);\n font-weight: 700;\n font-size: 1.2rem;\n line-height: 3rem;\n text-align: center;\n background: var(--md-default-fg-color--lightest);\n}\n.md-typeset .mdx-sponsorship__item img {\n display: block;\n width: 100%;\n height: auto;\n filter: grayscale(100%);\n transition: filter 125ms;\n}\n.md-typeset .mdx-sponsorship-button {\n font-weight: 400;\n}\n.md-typeset .mdx-sponsorship-count,\n.md-typeset .mdx-sponsorship-total {\n font-weight: 700;\n}\n\n/*# sourceMappingURL=main.css.map */","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Variables\n// ----------------------------------------------------------------------------\n\n///\n/// Device-specific breakpoints\n///\n/// @example\n/// $break-devices: (\n/// mobile: (\n/// portrait: 220px 479px,\n/// landscape: 480px 719px\n/// ),\n/// tablet: (\n/// portrait: 720px 959px,\n/// landscape: 960px 1219px\n/// ),\n/// screen: (\n/// small: 1220px 1599px,\n/// medium: 1600px 1999px,\n/// large: 2000px\n/// )\n/// );\n///\n$break-devices: () !default;\n\n// ----------------------------------------------------------------------------\n// Helpers\n// ----------------------------------------------------------------------------\n\n///\n/// Choose minimum and maximum device widths\n///\n@function break-select-min-max($devices) {\n $min: 1000000;\n $max: 0;\n @each $key, $value in $devices {\n @while type-of($value) == map {\n $value: break-select-min-max($value);\n }\n @if type-of($value) == list {\n @each $number in $value {\n @if type-of($number) == number {\n $min: min($number, $min);\n @if $max {\n $max: max($number, $max);\n }\n } @else {\n @error \"Invalid number: #{$number}\";\n }\n }\n } @else if type-of($value) == number {\n $min: min($value, $min);\n $max: null;\n } @else {\n @error \"Invalid value: #{$value}\";\n }\n }\n @return $min, $max;\n}\n\n///\n/// Select minimum and maximum widths for a device breakpoint\n///\n@function break-select-device($device) {\n $current: $break-devices;\n @for $n from 1 through length($device) {\n @if type-of($current) == map {\n $current: map-get($current, nth($device, $n));\n } @else {\n @error \"Invalid device map: #{$devices}\";\n }\n }\n @if type-of($current) == list or type-of($current) == number {\n $current: (default: $current);\n }\n @return break-select-min-max($current);\n}\n\n// ----------------------------------------------------------------------------\n// Mixins\n// ----------------------------------------------------------------------------\n\n///\n/// A minimum-maximum media query breakpoint\n///\n@mixin break-at($breakpoint) {\n @if type-of($breakpoint) == number {\n @media screen and (min-width: $breakpoint) {\n @content;\n }\n } @else if type-of($breakpoint) == list {\n $min: nth($breakpoint, 1);\n $max: nth($breakpoint, 2);\n @if type-of($min) == number and type-of($max) == number {\n @media screen and (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// An orientation media query breakpoint\n///\n@mixin break-at-orientation($breakpoint) {\n @if type-of($breakpoint) == string {\n @media screen and (orientation: $breakpoint) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// A maximum-aspect-ratio media query breakpoint\n///\n@mixin break-at-ratio($breakpoint) {\n @if type-of($breakpoint) == number {\n @media screen and (max-aspect-ratio: $breakpoint) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// A minimum-maximum media query device breakpoint\n///\n@mixin break-at-device($device) {\n @if type-of($device) == string {\n $device: $device,;\n }\n @if type-of($device) == list {\n $breakpoint: break-select-device($device);\n @if nth($breakpoint, 2) {\n $min: nth($breakpoint, 1);\n $max: nth($breakpoint, 2);\n\n @media screen and (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n\n///\n/// A minimum media query device breakpoint\n///\n@mixin break-from-device($device) {\n @if type-of($device) == string {\n $device: $device,;\n }\n @if type-of($device) == list {\n $breakpoint: break-select-device($device);\n $min: nth($breakpoint, 1);\n\n @media screen and (min-width: $min) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n\n///\n/// A maximum media query device breakpoint\n///\n@mixin break-to-device($device) {\n @if type-of($device) == string {\n $device: $device,;\n }\n @if type-of($device) == list {\n $breakpoint: break-select-device($device);\n $max: nth($breakpoint, 2);\n\n @media screen and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Announcement bar\n.md-announce {\n\n // Text link, also on focus/hover\n a,\n a:focus,\n a:hover {\n color: currentColor;\n }\n\n // Don't wrap name of blog article\n strong {\n white-space: nowrap;\n }\n\n // Twitter icon\n .twitter {\n margin-left: 0.2em;\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Landing page container\n.mdx-container {\n padding-top: px2rem(20px);\n background:\n url(\"data:image/svg+xml;utf8,\") no-repeat bottom,\n linear-gradient(\n to bottom,\n var(--md-primary-fg-color),\n hsla(280, 67%, 55%, 1) 99%,\n var(--md-default-bg-color) 99%\n );\n\n // Adjust background for slate theme\n [data-md-color-scheme=\"slate\"] & {\n background:\n url(\"data:image/svg+xml;utf8,\") no-repeat bottom,\n linear-gradient(\n to bottom,\n var(--md-primary-fg-color),\n hsla(280, 67%, 55%, 1) 99%,\n var(--md-default-bg-color) 99%\n );\n }\n}\n\n// Landing page hero\n.mdx-hero {\n margin: 0 px2rem(16px);\n color: var(--md-primary-bg-color);\n\n // Hero headline\n h1 {\n margin-bottom: px2rem(20px);\n color: currentColor;\n font-weight: 700;\n\n // [mobile portrait -]: Larger hero headline\n @include break-to-device(mobile portrait) {\n font-size: px2rem(28px);\n }\n }\n\n // Hero content\n &__content {\n padding-bottom: px2rem(120px);\n }\n\n // [tablet landscape +]: Columnar display\n @include break-from-device(tablet landscape) {\n display: flex;\n align-items: stretch;\n\n // Adjust spacing and set dimensions\n &__content {\n max-width: px2rem(380px);\n margin-top: px2rem(70px);\n padding-bottom: 14vw;\n }\n\n // Hero image\n &__image {\n order: 1;\n width: px2rem(760px);\n transform: translateX(#{px2rem(80px)});\n }\n }\n\n // [screen +]: Columnar display and adjusted spacing\n @include break-from-device(screen) {\n\n // Hero image\n &__image {\n transform: translateX(#{px2rem(160px)});\n }\n }\n\n // Button\n .md-button {\n margin-top: px2rem(10px);\n margin-right: px2rem(10px);\n color: var(--md-primary-bg-color);\n\n // Button on focus/hover\n &:focus,\n &:hover {\n color: var(--md-accent-bg-color);\n background-color: var(--md-accent-fg-color);\n border-color: var(--md-accent-fg-color);\n }\n\n // Primary button\n &--primary {\n color: hsla(280deg, 37%, 48%, 1);\n background-color: var(--md-primary-bg-color);\n border-color: var(--md-primary-bg-color);\n }\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Scoped in typesetted content to match specificity of regular content\n.md-typeset {\n\n // Icon search\n .mdx-iconsearch {\n position: relative;\n background-color: var(--md-default-bg-color);\n border-radius: px2rem(2px);\n box-shadow:\n 0 px2rem(4px) px2rem(10px) hsla(0, 0%, 0%, 0.1),\n 0 px2rem(0.5px) px2rem(1px) hsla(0, 0%, 0%, 0.1);\n transition: box-shadow 125ms;\n\n // Icon search on focus/hover\n &:focus-within,\n &:hover {\n box-shadow:\n 0 px2rem(8px) px2rem(20px) hsla(0, 0%, 0%, 0.15),\n 0 px2rem(0.5px) px2rem(1px) hsla(0, 0%, 0%, 0.15);\n }\n\n // Icon search input\n .md-input {\n background: var(--md-default-bg-color);\n box-shadow: 0 0 px2rem(12px) hsla(0, 0%, 0%, 0.07);\n\n // Slate theme, i.e. dark mode\n [data-md-color-scheme=\"slate\"] & {\n background: var(--md-code-bg-color);\n }\n }\n }\n\n // Icon search result\n .mdx-iconsearch-result {\n max-height: 50vh;\n overflow-y: auto;\n // Hack: promote to own layer to reduce jitter\n backface-visibility: hidden;\n touch-action: pan-y;\n scrollbar-width: thin;\n scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n\n // Webkit scrollbar\n &::-webkit-scrollbar {\n width: px2rem(4px);\n height: px2rem(4px);\n }\n\n // Webkit scrollbar thumb\n &::-webkit-scrollbar-thumb {\n background-color: var(--md-default-fg-color--lighter);\n\n // Webkit scrollbar thumb on hover\n &:hover {\n background-color: var(--md-accent-fg-color);\n }\n }\n\n // Icon search result metadata\n &__meta {\n position: absolute;\n top: px2rem(8px);\n right: px2rem(12px);\n color: var(--md-default-fg-color--lighter);\n font-size: px2rem(12.8px);\n }\n\n // Icon search result list\n &__list {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n // Icon search result item\n &__item {\n margin: 0;\n padding: px2rem(4px) px2rem(12px);\n border-bottom: px2rem(1px) solid var(--md-default-fg-color--lightest);\n\n // Omit border on last child\n &:last-child {\n border-bottom: none;\n }\n\n // Item content\n > * {\n margin-right: px2rem(12px);\n }\n\n // Set icon dimensions to fit\n img {\n width: px2rem(18px);\n height: px2rem(18px);\n\n // Slate theme, i.e. dark mode\n [data-md-color-scheme=\"slate\"] &[src*=squidfunk] {\n filter: invert(1);\n }\n }\n }\n }\n}\n","////\n/// Copyright (c) 2016-2021 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Rules\n// ----------------------------------------------------------------------------\n\n// Scoped in typesetted content to match specificity of regular content\n.md-typeset {\n\n // Sponsorship\n .mdx-sponsorship {\n\n // Sponsorship list\n &__list {\n margin: 2em 0;\n overflow: auto;\n }\n\n // Sponsorship item\n &__item {\n display: block;\n float: left;\n width: px2rem(60px);\n height: px2rem(60px);\n margin: px2rem(4px);\n overflow: hidden;\n border-radius: 100%;\n transform: scale(1);\n transition:\n color 125ms,\n transform 125ms;\n\n // Sponsor item on focus/hover\n &:focus,\n &:hover {\n transform: scale(1.1);\n\n // Sponsor avatar\n img {\n filter: grayscale(0%);\n }\n }\n\n // Private sponsor\n &--private {\n color: var(--md-default-fg-color--lighter);\n font-weight: 700;\n font-size: px2rem(24px);\n line-height: px2rem(60px);\n text-align: center;\n background: var(--md-default-fg-color--lightest);\n }\n\n // Sponsor avatar\n img {\n display: block;\n width: 100%;\n height: auto;\n filter: grayscale(100%);\n transition: filter 125ms;\n }\n }\n }\n\n // Sponsorship button\n .mdx-sponsorship-button {\n font-weight: 400;\n }\n\n // Sponsorship count and total\n .mdx-sponsorship-count,\n .mdx-sponsorship-total {\n font-weight: 700;\n }\n}\n"]} \ No newline at end of file diff --git a/material/overrides/main.html b/material/overrides/main.html index 0cd0fd83e..74741a5cf 100644 --- a/material/overrides/main.html +++ b/material/overrides/main.html @@ -3,26 +3,7 @@ -#} {% extends "base.html" %} {% block extrahead %} - {% set title = config.site_name %} - {% if page and page.title and not page.is_homepage %} - {% set title = config.site_name ~ " - " ~ page.title | striptags %} - {% endif %} - {% set image = config.site_url ~ 'assets/images/banner.png' %} - - - - - - - - - - - - - - - + {% endblock %} {% block announce %} diff --git a/mkdocs.yml b/mkdocs.yml index c6b74c4d1..c2afba4e9 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -189,6 +189,7 @@ nav: - Setting up navigation: setup/setting-up-navigation.md - Setting up site search: setup/setting-up-site-search.md - Setting up site analytics: setup/setting-up-site-analytics.md + - Setting up social cards: setup/setting-up-social-cards.md - Setting up tags: setup/setting-up-tags.md - Setting up versioning: setup/setting-up-versioning.md - Setting up the header: setup/setting-up-the-header.md diff --git a/package-lock.json b/package-lock.json index 39a2a246f..bab5b3f23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "mkdocs-material", - "version": "7.2.0", + "version": "7.2.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9216971e9..331aeff44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mkdocs-material", - "version": "7.2.0", + "version": "7.2.1", "description": "A Material Design theme for MkDocs", "keywords": [ "mkdocs", diff --git a/src/overrides/assets/stylesheets/main/_typeset.scss b/src/overrides/assets/stylesheets/main/_typeset.scss index c6885d6b7..fc938604c 100644 --- a/src/overrides/assets/stylesheets/main/_typeset.scss +++ b/src/overrides/assets/stylesheets/main/_typeset.scss @@ -46,11 +46,6 @@ // Scoped in typesetted content to match specificity of regular content .md-typeset { - // Screenshot caption - figure > p + figcaption { - margin-top: px2rem(-24px); - } - // Twitter icon .twitter { color: #00acee;