1
0
mirror of https://github.com/squidfunk/mkdocs-material.git synced 2024-12-18 02:15:56 +01:00

Merge branch 'master' into refactor/polyfills

This commit is contained in:
squidfunk 2023-07-06 13:28:16 +02:00
commit 0f1e2de072
No known key found for this signature in database
GPG Key ID: 5ED40BC4F9C436DF
2510 changed files with 10115 additions and 11988 deletions

View File

@ -0,0 +1,11 @@
{
"name": "Material for MkDocs - VS Code dev container",
"image": "mcr.microsoft.com/devcontainers/typescript-node:0-18",
"features": {
"ghcr.io/devcontainers/features/python:1": {
"installTools": true,
"version": "3.11"
}
},
"postCreateCommand": "pip install -e . && pip install mkdocs-minify-plugin mkdocs-redirects && npm install && npm run build"
}

View File

@ -320,7 +320,6 @@
} }
], ],
"jsdoc/empty-tags": "warn", "jsdoc/empty-tags": "warn",
"jsdoc/newline-after-description": "warn",
"jsdoc/no-bad-blocks": "warn", "jsdoc/no-bad-blocks": "warn",
"jsdoc/no-defaults": "warn", "jsdoc/no-defaults": "warn",
"jsdoc/no-types": "warn", "jsdoc/no-types": "warn",

View File

@ -31,7 +31,7 @@ body:
description: >- description: >-
Please list all links to the sections of Please list all links to the sections of
[our documentation](https://squidfunk.github.io/mkdocs-material) that [our documentation](https://squidfunk.github.io/mkdocs-material) that
are relevant to the bug, in order to show that you have consulted and are relevant to the bug in order to show that you have consulted and
thoroughly read it. Additionally, list links to possibly related open thoroughly read it. Additionally, list links to possibly related open
and closed [issues](https://github.com/squidfunk/mkdocs-material/issues) and closed [issues](https://github.com/squidfunk/mkdocs-material/issues)
and [discussions](https://github.com/squidfunk/mkdocs-material/discussions) and [discussions](https://github.com/squidfunk/mkdocs-material/discussions)
@ -54,7 +54,7 @@ body:
.zip file with the reproduction. We reserve the right to close issues .zip file with the reproduction. We reserve the right to close issues
without .zip files. [More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#reproduction) without .zip files. [More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#reproduction)
placeholder: |- placeholder: |-
Drag and drop .zip file with minimal reproduction here. Drag and drop the .zip file with minimal reproduction here.
validations: validations:
required: true required: true

View File

@ -12,7 +12,7 @@ body:
Please describe the inconsistency or issue you have found in Please describe the inconsistency or issue you have found in
[our documentation](https://squidfunk.github.io/mkdocs-material) [our documentation](https://squidfunk.github.io/mkdocs-material)
or indicate where you feel there is a need for improvement. Furthermore, or indicate where you feel there is a need for improvement. Furthermore,
explain the severity of the issue, i.e., it's impact on you and potentially explain the severity of the issue, i.e., its impact on you and potentially
other users. other users.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/#description) [More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/#description)
validations: validations:

View File

@ -17,8 +17,8 @@ body:
attributes: attributes:
label: Description label: Description
description: >- description: >-
Please provide a detailed description of your idea in 2-3 sentences, so Please provide a detailed description of your idea in 2-3 sentences so
that we maintainers can fully understand what change, feature, or that we maintainers can fully understand what change, feature, or the
improvement you are proposing. Don't yet explain the benefits of your improvement you are proposing. Don't yet explain the benefits of your
idea, we'll come to that. Focus on functionality. idea, we'll come to that. Focus on functionality.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#description) [More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#description)
@ -31,7 +31,7 @@ body:
label: Related links label: Related links
description: >- description: >-
Please list all links to open and closed [issues](https://github.com/squidfunk/mkdocs-material/issues), Please list all links to open and closed [issues](https://github.com/squidfunk/mkdocs-material/issues),
[discussions](https://github.com/squidfunk/mkdocs-material/discussions) [discussions](https://github.com/squidfunk/mkdocs-material/discussions),
or to [documentation sections](https://squidfunk.github.io/mkdocs-material) or to [documentation sections](https://squidfunk.github.io/mkdocs-material)
that are relevant to your idea. that are relevant to your idea.
If you discussed your idea with the community on our If you discussed your idea with the community on our
@ -50,8 +50,8 @@ body:
label: Use Cases label: Use Cases
description: >- description: >-
Please explain how your idea will work from an author's and user's Please explain how your idea will work from an author's and user's
perspective. Elaborate how the change would positively impact not only perspective. Elaborate on how the change would positively impact not only
you, but the community, and how it aligns with the goals and [philopsophy](https://squidfunk.github.io/mkdocs-material/philosophy/) you but the community and how it aligns with the goals and [philosophy](https://squidfunk.github.io/mkdocs-material/philosophy/)
of the project. of the project.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#use-cases) [More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#use-cases)
validations: validations:
@ -87,9 +87,9 @@ body:
I have verified that [my idea is a change request and not a bug report](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#its-not-a-bug-its-a-feature). I have verified that [my idea is a change request and not a bug report](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#its-not-a-bug-its-a-feature).
required: true required: true
- label: >- - label: >-
I have ensured that, to the best knowledge, [my idea will benefit the entire community](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#benefit-for-the-community). I have ensured that, to the best of my knowledge, [my idea will benefit the entire community](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#benefit-for-the-community).
required: true required: true
- label: >- - label: >-
I have included relevant links to [the documentation](https://squidfunk.github.io/mkdocs-material), related [issues](https://github.com/squidfunk/mkdocs-material/issues) I have included relevant links to [the documentation](https://squidfunk.github.io/mkdocs-material), related [issues](https://github.com/squidfunk/mkdocs-material/issues),
and [discussions](https://github.com/squidfunk/mkdocs-material/discussions) to underline the need for my idea. and [discussions](https://github.com/squidfunk/mkdocs-material/discussions) to underline the need for my idea.
required: true required: true

View File

@ -17,7 +17,7 @@ body:
id: translations id: translations
attributes: attributes:
label: Translations label: Translations
description: Please translate the labels on the right, e.g. "Copy to clipboard", etc. description: Please translate the labels on the right, e.g., "Copy to clipboard", etc.
value: |- value: |-
{% macro t(key) %}{{ { {% macro t(key) %}{{ {
"language": "en", "language": "en",
@ -26,6 +26,14 @@ body:
"action.skip": "Skip to content", "action.skip": "Skip to content",
"action.view": "View source of this page", "action.view": "View source of this page",
"announce.dismiss": "Don't show this again", "announce.dismiss": "Don't show this again",
"blog.archive": "Archive",
"blog.categories": "Categories",
"blog.categories.in": "in",
"blog.continue": "Continue reading",
"blog.draft": "Draft",
"blog.index": "Back to index",
"blog.meta": "Metadata",
"blog.references": "Related links",
"clipboard.copy": "Copy to clipboard", "clipboard.copy": "Copy to clipboard",
"clipboard.copied": "Copied to clipboard", "clipboard.copied": "Copied to clipboard",
"consent.accept": "Accept", "consent.accept": "Accept",
@ -38,6 +46,10 @@ body:
"meta.comments": "Comments", "meta.comments": "Comments",
"meta.source": "Source", "meta.source": "Source",
"nav": "Navigation", "nav": "Navigation",
"readtime.one": "1 min read",
"readtime.other": "# min read",
"rss.created": "RSS feed",
"rss.updated": "RSS feed of updated content",
"search": "Search", "search": "Search",
"search.placeholder": "Search", "search.placeholder": "Search",
"search.share": "Share", "search.share": "Share",
@ -53,6 +65,7 @@ body:
"select.language": "Select language", "select.language": "Select language",
"select.version": "Select version", "select.version": "Select version",
"source": "Go to repository", "source": "Go to repository",
"source.file.contributors": "Contributors",
"source.file.date.created": "Created", "source.file.date.created": "Created",
"source.file.date.updated": "Last update", "source.file.date.updated": "Last update",
"tabs": "Tabs", "tabs": "Tabs",
@ -73,7 +86,7 @@ body:
options: options:
- label: I've checked the list of [available languages](https://squidfunk.github.io/mkdocs-material/setup/changing-the-language/#site-language) for existing translations. - label: I've checked the list of [available languages](https://squidfunk.github.io/mkdocs-material/setup/changing-the-language/#site-language) for existing translations.
required: true required: true
- label: I assure that the translations are accurate to my best knowledge. - label: I assure that the translations are accurate to the best of my knowledge.
required: true required: true
- label: >- - label: >-
__Optional__: I want to integrate this translation myself and create a __Optional__: I want to integrate this translation myself and create a

View File

@ -1,236 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320">
<foreignObject width="100%" height="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
<style>
@keyframes backdrop {
0% {
transform: scale(0.9) rotateZ(45deg);
opacity: 0.25;
}
10% {
opacity: 1;
}
15% {
transform: scale(1.1) rotateZ(35deg);
}
50% {
transform: scale(1) rotateZ(0deg);
}
75% {
transform: scale(1.1) rotateZ(-35deg);
opacity: 1;
}
100% {
transform: scale(0.9) rotateZ(-45deg);
opacity: 0.25;
}
}
.container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 320px;
height: 320px;
font-family:
system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial,
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
letter-spacing: -1px;
border-radius: 2px;
}
.logo {
position: relative;
width: 40%;
}
.logo svg {
position: relative;
display: block;
margin: 20%;
fill: #FFFFFF;
}
.backdrop {
position: absolute;
width: 100%;
height: 100%;
background-image: linear-gradient(#1A1A1A, #5E5E5E);
border-radius: 100%;
animation: backdrop infinite both 10s 1s cubic-bezier(0.7, 0, 0.3, 1);
}
h1 {
margin: 24px 0 4px;
color: #FFFFFF;
font-weight: bold;
font-size: 24px;
}
h2 {
margin: 4px 0;
color: #7E7E7E;
font-size: 14px;
}
</style>
<div class="container">
<div class="logo">
<div class="backdrop"></div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89">
<polygon id="p1">
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="1s;p1o.end+1s" id="p1i"
keyTimes="0;1" keySplines="0.16 1 0.3 1"
values="
3.136 17.387, 3.136 60.319, 3.136 60.319, 3.136 60.319;
3.136 17.387, 3.136 60.319, 46.068 81.786, 3.136 17.387
"
/>
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="p1i.end+5s" id="p1o"
keyTimes="0;1" keySplines="0.7 0 0.84 0"
values="
3.136 17.387, 3.136 60.319, 46.068 81.786, 3.136 17.387;
3.136 17.387, 3.136 60.319, 3.136 60.319, 3.136 60.319
"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="5s" begin="p1i.end"
from="1" to="0.5"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="0.1s" begin="p1o.end"
from="0.5" to="1"
/>
</polygon>
<polygon id="p2" style="fill-opacity: 0.5;">
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="1s;p2o.end+1s" id="p2i"
keyTimes="0;1" keySplines="0.16 1 0.3 1"
values="
21.910 50.932, 21.910 50.932, 3.136 60.319, 3.136 60.319;
21.910 8.000, 64.843 72.398, 46.068 81.786, 3.136 17.387
"
/>
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="p2i.end+5s" id="p2o"
keyTimes="0;1" keySplines="0.7 0 0.84 0"
values="
21.910 8.000, 64.843 72.398, 46.068 81.786, 3.136 17.387;
21.910 50.932, 21.910 50.932, 3.136 60.319, 3.136 60.319
"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="5s" begin="p1i.end"
from="0.5" to="1"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="0.1s" begin="p2o.end"
from="1" to="0.5"
/>
</polygon>
<clipPath id="clip">
<polygon id="p3">
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="1s;p3o.end+1s" id="p3i"
keyTimes="0;1" keySplines="0.16 1 0.3 1"
values="
21.910 50.932, 21.910 50.932, 89 89, 89 0;
21.910 8.000, 64.843 72.398, 89 89, 89 0
"
/>
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="p3i.end+5s" id="p3o"
keyTimes="0;1" keySplines="0.7 0 0.84 0"
values="
21.910 8.000, 64.843 72.398, 89 89, 89 0;
21.910 50.932, 21.910 50.932, 89 89, 89 0
"
/>
</polygon>
</clipPath>
<polygon id="p4" clip-path="url(#clip)">
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="1.25s;p4o.end+1s" id="p4i"
keyTimes="0;1" keySplines="0.16 1 0.3 1"
values="
67.535 71.052, 67.535 71.052, 62.151 68.361, 67.535 71.052;
67.535 17.387, 21.509 48.04, 62.151 68.361, 67.535 71.052
"
/>
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="p4i.end+5s" id="p4o"
keyTimes="0;1" keySplines="0.7 0 0.84 0"
values="
67.535 17.387, 21.509 48.04, 62.151 68.361, 67.535 71.052;
67.535 71.052, 67.535 71.052, 62.151 68.361, 67.535 71.052
"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="5s" begin="p1i.end"
from="1" to="0.5"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="0.1s" begin="p4o.end"
from="0.5" to="1"
/>
</polygon>
<polygon id="p5" clip-path="url(#clip)" style="fill-opacity: 0.25;">
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="1.25s;p5o.end+1s" id="p5i"
keyTimes="0;1" keySplines="0.16 1 0.3 1"
values="
67.535 71.053, 86.309 61.665, 86.309 61.665, 67.535 71.053;
67.535 71.053, 86.309 61.665, 86.309 8.000, 67.535 17.387
"
/>
<animate
attributeName="points" calcMode="spline" fill="freeze"
dur="2s" begin="p5i.end+5s" id="p5o"
keyTimes="0;1" keySplines="0.7 0 0.84 0"
values="
67.535 71.053, 86.309 61.665, 86.309 8.000, 67.535 17.387;
67.535 71.053, 86.309 61.665, 86.309 61.665, 67.535 71.053
"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="5s" begin="p1i.end"
from="0.25" to="1"
/>
<animate
attributeName="fill-opacity" fill="freeze"
dur="0.1s" begin="p5o.end"
from="1" to="0.25"
/>
</polygon>
</svg>
</div>
<h1>Material for MkDocs</h1>
<h2>Documentation that simply works</h2>
</div>
</div>
</foreignObject>
</svg>

Before

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -42,7 +42,6 @@
system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial,
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
letter-spacing: -1px; letter-spacing: -1px;
background: #FFFFFF;
border-radius: 2px; border-radius: 2px;
} }
@ -62,14 +61,14 @@
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-image: linear-gradient(#1A1A1A, #5E5E5E); background-image: linear-gradient(#22272e, #526cfe);
border-radius: 100%; border-radius: 100%;
animation: backdrop infinite both 10s 1s cubic-bezier(0.7, 0, 0.3, 1); animation: backdrop infinite both 10s 1s cubic-bezier(0.7, 0, 0.3, 1);
} }
h1 { h1 {
margin: 24px 0 4px; margin: 24px 0 4px;
color: #1A1A1A; color: #526cfe;
font-weight: bold; font-weight: bold;
font-size: 24px; font-size: 24px;
} }

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
.github/assets/sponsors/sponsor-koor.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@ -20,18 +20,23 @@
name: build name: build
on: on:
- push push:
- pull_request branches:
- master
pull_request:
release:
types:
- published
env: env:
NODE_VERSION: 14.x NODE_VERSION: 18.x
PYTHON_VERSION: 3.x
permissions: permissions:
contents: read contents: read
jobs: jobs:
build: npm:
name: Build project
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -61,3 +66,113 @@ jobs:
run: | run: |
npm run build npm run build
git diff --name-only git diff --name-only
pypi:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python runtime
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Set up Python dependencies
run: pip install --upgrade build twine
- name: Build Python package
run: python -m build
- name: Publish Python package
if: github.event_name == 'release'
env:
PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }}
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: twine upload --disable-progress-bar -u ${PYPI_USERNAME} -p ${PYPI_PASSWORD} dist/*
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
if: github.event_name == 'release'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
if: github.event_name == 'release'
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Generate Docker tags and labels
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ github.event.repository.full_name }}
ghcr.io/${{ github.event.repository.full_name }}
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=ref,event=branch
type=ref,event=pr
flavor: |
latest=${{ github.event.release.prerelease == false }}
- name: Build Docker image
uses: docker/build-push-action@v4
with:
context: .
load: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Check Docker image
working-directory: /tmp
env:
REPO_FULL_NAME: '${{ github.event.repository.full_name }}'
run: |
docker run --rm -i -v ${PWD}:/docs ${REPO_FULL_NAME,,}:${{ steps.meta.outputs.version }} new .
docker run --rm -i -v ${PWD}:/docs ${REPO_FULL_NAME,,}:${{ steps.meta.outputs.version }} build
- name: Set platforms
if: github.event_name == 'release'
run: |
echo "PLATFORMS=linux/amd64,linux/arm64,linux/arm/v7" >> $GITHUB_ENV
- name: Publish Docker image
uses: docker/build-push-action@v4
with:
context: .
platforms: ${{ env.PLATFORMS }}
push: ${{ github.event_name == 'release' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Check manifest
if: github.event_name == 'release'
run: |
docker buildx imagetools inspect ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }}
- name: Inspect image
if: github.event_name == 'release'
run: |
docker pull ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }}
docker image inspect ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }}

View File

@ -46,12 +46,17 @@ jobs:
with: with:
python-version: ${{ env.PYTHON_VERSION }} python-version: ${{ env.PYTHON_VERSION }}
- name: Set the date environmental variable
run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- name: Set up build cache - name: Set up build cache
uses: actions/cache@v3 uses: actions/cache@v3
id: cache id: cache
with: with:
key: ${{ runner.os }}-${{ hashFiles('.cache/**') }} key: mkdocs-material-${{ env.cache_id }}
path: .cache path: .cache
restore-keys: |
mkdocs-material-
- name: Install dependencies - name: Install dependencies
run: sudo apt-get install pngquant run: sudo apt-get install pngquant

View File

@ -1,105 +0,0 @@
# Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
# 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 NON-INFRINGEMENT. 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.
name: publish
on:
release:
types:
- published
env:
PYTHON_VERSION: 3.x
permissions:
contents: read
jobs:
publish_pypi:
name: Build and push Python package
if: github.event.repository.fork == false
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python runtime
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Set up Python dependencies
run: pip install --upgrade build twine
- name: Build Python package
run: python -m build
- name: Publish Python package
env:
PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }}
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: twine upload --disable-progress-bar -u ${PYPI_USERNAME} -p ${PYPI_PASSWORD} dist/*
publish_docker:
name: Build and push Docker image
if: github.event.repository.fork == false
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@v3
with:
context: .
# platforms: linux/amd64,linux/arm64
tags: |
${{ github.event.repository.full_name }}:latest
${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }}
ghcr.io/${{ github.event.repository.full_name }}:latest
ghcr.io/${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }}
- name: Check Docker image
working-directory: /tmp
run: |
docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} new .
docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} build
- name: Publish Docker image
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
docker push --all-tags ${{ github.event.repository.full_name }}
docker push --all-tags ghcr.io/${{ github.event.repository.full_name }}

View File

@ -1,6 +1,6 @@
{ {
"extends": [ "extends": [
"stylelint-config-rational-order", "stylelint-config-recess-order",
"stylelint-config-recommended", "stylelint-config-recommended",
"stylelint-config-standard-scss" "stylelint-config-standard-scss"
], ],
@ -73,6 +73,7 @@
], ],
"linebreaks": "unix", "linebreaks": "unix",
"media-feature-name-no-unknown": null, "media-feature-name-no-unknown": null,
"media-feature-range-notation": null,
"no-descending-specificity": null, "no-descending-specificity": null,
"no-empty-first-line": true, "no-empty-first-line": true,
"no-unknown-animations": true, "no-unknown-animations": true,

View File

@ -17,8 +17,5 @@
"tag:yaml.org,2002:python/name:materialx.emoji.to_svg", "tag:yaml.org,2002:python/name:materialx.emoji.to_svg",
"tag:yaml.org,2002:python/name:materialx.emoji.twemoji", "tag:yaml.org,2002:python/name:materialx.emoji.twemoji",
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format" "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format"
],
"cSpell.words": [
"mkdocs"
] ]
} }

225
CHANGELOG
View File

@ -1,3 +1,228 @@
mkdocs-material-9.1.18 (2023-07-03)
* Updated Danish translations
* Added support for installing user requirements in Docker image
* Fixed #5655: Search separator with lookbehind breaks highlighting
mkdocs-material-9.1.17+insiders-4.36.1 (2023-06-23)
* Fixed #5618: Date comparison breaking for drafts in blog plugin
mkdocs-material-9.1.17 (2023-06-23)
* Fixed #5633: Code annotations with nested lists incorrectly mounted
* Fixed #5628: Regression in new social plugin configuration scheme
mkdocs-material-9.1.16+insiders-4.36.0 (2023-06-15)
* Added support for instant prefetching to speed up slow connections
* Improved stability of anchor link removal in built-in typeset plugin
* Improved performance of regular expressions in typeset plugin
* Removed unnecessary import test for cairosvg in optimize plugin
* Fixed #5590: regular expression for anchor link removal too greedy
mkdocs-material-9.1.16 (2023-06-15)
* Updated Indonesian translations
* Ensure scroll bar follows color scheme of operating system
mkdocs-material-9.1.15+insiders-4.35.3 (2023-06-01)
* Fixed #5579: Abbreviations in headlines filtered by typeset plugin
mkdocs-material-9.1.15+insiders-4.35.2 (2023-05-29)
* Fixed #5555: Blog plugin crashes when computing readtime for emojis
mkdocs-material-9.1.15 (2023-05-29)
* Fixed #5566: Indicate color scheme to operating system
* Fixed #5565: Update Dockerfile to latest version of base image
* Fixed #5554: Add additional version tags (9, 9.1) to Docker image
* Fixed #5536: Strip tags of ARIA labels in table of contents
mkdocs-material-9.1.14+insiders-4.35.1 (2023-05-20)
* Fixed internal handling of errors in social plugin
mkdocs-material-9.1.14+insiders-4.35.0 (2023-05-20)
* Improve editing experience and stability of social plugin
* Added support for custom layout syntax validation in social plugin
* Added support for layer origin for easier placement in social plugin
* Added support for in- and exclusion patterns in social plugin
* Catch and print syntax errors in custom layouts
mkdocs-material-9.1.14 (2023-05-20)
* Updated Armenian and Greek translations
mkdocs-material-9.1.13+insiders-4.34.1 (2023-05-16)
* Disable social plugin debug mode by default on mkdocs build
* Added warning in social plugin debug mode when font style couldn't be found
* Set default concurrency of built-in multi-threaded plugins to CPUs - 1
* Fixed #5521: Social plugin triggers race condition when downloading fonts
* Fixed #5515: Social plugin crashes when concurrency is set to 1
mkdocs-material-9.1.13 (2023-05-16)
* Fixed #5517: Social plugin crashes for some fonts (e.g. Open Sans)
mkdocs-material-9.1.12+insiders-4.34.0 (2023-05-14)
* Added support for new overflow mode to auto-fit text in social plugin
* Reduced subtle rendering bugs in (code) annotations due to subpixel rounding
* Improved print styles for (code) annotation lists
* Improved performance of social plugin, now 3x as fast
* Improved interop of typeset plugin with MkDocstrings
* Fixed logo location for variants of default template in social plugin
* Fixed #5446: Built-in typeset plugin picks up headings in code blocks
mkdocs-material-9.1.12+insiders-4.33.2 (2023-05-12)
* Fixed #5508: Social plugin crashes trying to copy cards on Docker/Windows
* Fixed #5507: Social plugin crashes on serve when layouts folder doesn't exist
* Fixed #5505: Social plugin trying to resolve logo in wrong location
* Fixed #5496: Annotations with nested lists incorrectly mounted
* Fixed #5493: Social plugin crashes on Python 3.8
mkdocs-material-9.1.12 (2023-05-12)
* Updated Bengali (Bangla) translations
* Fixed #5503: Docker image publish errors on uppercase characters
* Fixed #5407: Auto-pause media when in hidden content tabs
mkdocs-material-9.1.11+insiders-4.33.1 (2023-05-09)
* Added support for SVG background images in social plugin
mkdocs-material-9.1.11 (2023-05-08)
* Fixed #5487: Social plugin crashes without options (9.1.10 regression)
mkdocs-material-9.1.10+insiders-4.33.0 (2023-05-08)
* Added support for custom layouts for social plugin
* Added support for background images for social cards
mkdocs-material-9.1.10 (2023-05-08)
* Added cards_layout_options setting for social cards
* Deprecated cards_color and cards_font setting for social cards
mkdocs-material-9.1.9 (2023-05-02)
* Added Telugu, Kannada and Sanskrit translations
* Fixed #5428: Fixed margins for light/dark mode images in figures
* Fixed #5420: Social plugin crashing for some specific Google Fonts
* Fixed #5160: Instant loading makes code annotations jump (9.1.1 regression)
* Fixed #4920: Social plugin not loading logo from custom icon set
* Fixed social plugin crashing when only code font is specified
mkdocs-material-9.1.8 (2023-04-24)
* Fixed #5417: Theme breaks when palette is not defined (9.1.7 regression)
mkdocs-material-9.1.7+insiders-4.32.6 (2023-04-22)
* Fixed #5336: Interplay of blog plugin with git-revision-date-localized
mkdocs-material-9.1.7 (2023-04-22)
* Updated Persian (Farsi) and Turkish translations
* Fixed #5401: Added missing flag to disable built-in tags plugin
* Fixed #5206: Ensure defaults are set for primary and accent colors
* Fixed unnecessary inclusion of palette CSS when unused
mkdocs-material-9.1.6+insiders-4.32.5 (2023-04-07)
* Fixed #5322: Navigation tabs hoist nested page icons
mkdocs-material-9.1.6 (2023-04-07)
* Updated Persian (Farsi) translations
* Fixed #5300: Boxes in Mermaid sequence diagrams not color-abiding
mkdocs-material-9.1.5 (2023-03-31)
* Updated Lithuanian and Japanese translations
* Updated Mermaid.js to version 9.4.3
* Fixed #5290: Footer previous/next labels cut-off for short page titles
mkdocs-material-9.1.4+insiders-4.32.4 (2023-03-24)
* Fixed #5241: Built-in typeset plugin jams navigation for anchors in headings
mkdocs-material-9.1.4 (2023-03-24)
* Fixed #5239: Instant loading breaks anchors in details (9.1.1 regression)
* Fixed #5211: Anchor following not working for Chinese (9.1.2 regression)
mkdocs-material-9.1.3 (2023-03-14)
* Added Kurdish (Soranî) translations
* Updated Norwegian (Bokmål), Portuguese and Romanian translations
* Improved compatibility with mkdocs-jupyter plugin
* Fixed #5198: Built-in search plugin not filtering script and style tags
* Fixed #5176: Back-to-top + instant loading not working (9.1.1 regression)
mkdocs-material-9.1.2+insiders-4.32.3 (2023-03-09)
* Fixed Docker image release workflow (9.1.0 regression)
* Fixed #5159: Missing underline for abbreviations (9.1.0 regression)
mkdocs-material-9.1.2 (2023-03-09)
* Updated Icelandic, Korean and Swedish translations
* Fixed #5168: Mermaid text boxes overflow (9.0.13 regression)
* Fixed #5155: Table of contents not highlighting percent-encoded URLs
mkdocs-material-9.1.1 (2023-03-05)
* Updated Czech and Thai translations
* Improved instant loading (scroll restoration, slow connections)
* Fixed #5023: Instant loading not allowing to go back to initial page
* Fixed #3797: Instant loading does not work with section anchors in Safari
mkdocs-material-9.1.0+insiders-4.32.2 (2023-03-02)
* Fixed #5127: Privacy plugin not handling large number of occurrences
* Fixed #5126: Privacy plugin breaks when replacing specific emojis
mkdocs-material-9.1.0 (2023-03-02)
* Docker image now available for amd64, arm64 and arm/v7
* Updated Chinese (Taiwanese) translations
* Generalized tag identifier implementation
* Fixed flickering of header shadow on load
* Fixed occasional flickering of announcement bar
mkdocs-material-9.0.15 (2023-02-26)
* Updated Chinese (Traditional) translations
* Updated Hebrew translations
mkdocs-material-9.0.14+insiders-4.32.1 (2023-02-23)
* Fixed code block spans interfering with copying
* Fixed #5077: Privacy plugin breaks image alt text encoding
* Fixed #5079: Privacy plugin removing rel=me on external links
mkdocs-material-9.0.14 (2023-02-23)
* Fixed #5072: Rendering bug on navigation expand button in Firefox
mkdocs-material-9.0.13+insiders-4.32.0 (2023-02-19)
* Added support for custom selectors for code annotations
* Added support for code line range selection for better sharing
mkdocs-material-9.0.13+insiders-4.31.0 (2023-02-18)
* Added support for table of contents on blog index and archive pages
* Fixed #4512: Allow custom search field boosts (experimental)
mkdocs-material-9.0.13 (2023-02-18) mkdocs-material-9.0.13 (2023-02-18)
* Updated Uzbek translations * Updated Uzbek translations

View File

@ -42,10 +42,10 @@ it is:
### Missing translations? ### Missing translations?
Material for MkDocs supports 50+ languages with the help of community Material for MkDocs supports 60+ languages with the help of community
contributions. When new features are added, sometimes, new translations are contributions. When new features are added, sometimes, new translations are
necessary as well. It's impossible for the maintainers of the project to update necessary as well. It's impossible for the maintainers of the project to update
all translations (we just don't speak 50+ languages), so we have to rely on all translations (we just don't speak 60+ languages), so we have to rely on
our contributors to update translations incrementally. This process is pretty our contributors to update translations incrementally. This process is pretty
simple, so if you find a translation missing in your language, follow these simple, so if you find a translation missing in your language, follow these
guidelines: guidelines:

View File

@ -18,7 +18,7 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE. # IN THE SOFTWARE.
FROM python:3.11.0-alpine3.17 FROM python:3.11-alpine3.18
# Build-time flags # Build-time flags
ARG WITH_PLUGINS=true ARG WITH_PLUGINS=true
@ -34,7 +34,7 @@ WORKDIR /tmp
COPY material material COPY material material
COPY package.json package.json COPY package.json package.json
COPY README.md README.md COPY README.md README.md
COPY requirements.txt requirements.txt COPY *requirements.txt ./
COPY pyproject.toml pyproject.toml COPY pyproject.toml pyproject.toml
# Perform build and cleanup artifacts and caches # Perform build and cleanup artifacts and caches
@ -54,6 +54,8 @@ RUN \
gcc \ gcc \
libffi-dev \ libffi-dev \
musl-dev \ musl-dev \
&& \
pip install --no-cache-dir --upgrade pip \
&& \ && \
pip install --no-cache-dir . \ pip install --no-cache-dir . \
&& \ && \
@ -64,6 +66,10 @@ RUN \
"pillow>=9.0" \ "pillow>=9.0" \
"cairosvg>=2.5"; \ "cairosvg>=2.5"; \
fi \ fi \
&& \
if [ -e user-requirements.txt ]; then \
pip install -U -r user-requirements.txt; \
fi \
&& \ && \
apk del .build \ apk del .build \
&& \ && \

View File

@ -1,10 +1,7 @@
<p align="center"> <p align="center">
<a href="https://squidfunk.github.io/mkdocs-material/#gh-light-mode-only"> <a href="https://squidfunk.github.io/mkdocs-material/">
<img src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/logo.svg" width="320" alt="Material for MkDocs"> <img src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/logo.svg" width="320" alt="Material for MkDocs">
</a> </a>
<a href="https://squidfunk.github.io/mkdocs-material/#gh-dark-mode-only">
<img src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/logo-dark.svg" width="320" alt="Material for MkDocs">
</a>
</p> </p>
<p align="center"> <p align="center">
@ -42,7 +39,7 @@
<p align="center"> <p align="center">
Write your documentation in Markdown and create a professional static site for Write your documentation in Markdown and create a professional static site for
your Open Source or commercial project in minutes searchable, customizable, your Open Source or commercial project in minutes searchable, customizable,
more than 50 languages, for all devices. more than 60 languages, for all devices.
</p> </p>
<p align="center"> <p align="center">
@ -61,9 +58,15 @@
</p> </p>
<h2></h2> <h2></h2>
<p id="premium-sponsors">&nbsp;</p>
<p align="center"><strong>Silver sponsors</strong></p>
<p align="center">
<a href="https://fastapi.tiangolo.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-fastapi.png" height="120"
/></a>
</p>
<p>&nbsp;</p> <p>&nbsp;</p>
<p id="premium-sponsors" align="center"><strong>Special thanks</strong> to our <strong>premium sponsors</strong>:</p> <p align="center"><strong>Bronze sponsors</strong></p>
<p>&nbsp;</p>
<p align="center"> <p align="center">
<a href="https://cirrus-ci.org/" target=_blank><img <a href="https://cirrus-ci.org/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cirrus-ci.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cirrus-ci.png" height="58"
@ -71,9 +74,6 @@
<a href="https://docs.baslerweb.com/" target=_blank><img <a href="https://docs.baslerweb.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-basler.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-basler.png" height="58"
/></a> /></a>
<a href="https://hummingbot.io/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-hummingbot.png" height="58"
/></a>
<a href="https://kx.com/" target=_blank><img <a href="https://kx.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-kx.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-kx.png" height="58"
/></a> /></a>
@ -89,11 +89,8 @@
<a href="https://www.zenoss.com/" target=_blank><img <a href="https://www.zenoss.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-zenoss.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-zenoss.png" height="58"
/></a> /></a>
<a href="https://www.elli.eco/en/home" target=_blank><img <a href="https://docs.posit.co" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-elli.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-posit.png" height="58"
/></a>
<a href="https://solutions.rstudio.com" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-rstudio.png" height="58"
/></a> /></a>
<a href="https://n8n.io" target=_blank><img <a href="https://n8n.io" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-n8n.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-n8n.png" height="58"
@ -125,15 +122,9 @@
<a href="https://sparkfun.com/" target=_blank><img <a href="https://sparkfun.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sparkfun.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sparkfun.png" height="58"
/></a> /></a>
<a href="https://automationtechnology.de/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-automation-technology.png" height="58"
/></a>
<a href="https://eccenca.com/" target=_blank><img <a href="https://eccenca.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-eccenca.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-eccenca.png" height="58"
/></a> /></a>
<a href="https://sealvault.org/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sealvault.png" height="58"
/></a>
<a href="https://neptune.ai/" target=_blank><img <a href="https://neptune.ai/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-neptune-ai.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-neptune-ai.png" height="58"
/></a> /></a>
@ -146,6 +137,27 @@
<a href="https://civicactions.com/" target=_blank><img <a href="https://civicactions.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-civic-actions.png" height="58" src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-civic-actions.png" height="58"
/></a> /></a>
<a href="https://bitcrowd.net/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-bitcrowd.png" height="58"
/></a>
<a href="https://getscreen.me/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-getscreenme.png" height="58"
/></a>
<a href="https://botcity.dev/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-botcity.png" height="58"
/></a>
<a href="https://www.springernature.com/gp" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sn-technology.png" height="58"
/></a>
<a href="https://kolena.io/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-kolena.png" height="58"
/></a>
<a href="https://www.evergiving.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-evergiving.png" height="58"
/></a>
<a href="https://koor.tech/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-koor.png" height="58"
/></a>
</p> </p>
<p>&nbsp;</p> <p>&nbsp;</p>
@ -251,8 +263,10 @@ For detailed installation instructions, configuration options, and a demo, visit
[Pydantic](https://pydantic-docs.helpmanual.io/), [Pydantic](https://pydantic-docs.helpmanual.io/),
[Renovate](https://docs.renovatebot.com/), [Renovate](https://docs.renovatebot.com/),
[Traefik](https://docs.traefik.io/), [Traefik](https://docs.traefik.io/),
[Trivy](https://github.com/aquasecurity/trivy)
[Vapor](https://docs.vapor.codes/), [Vapor](https://docs.vapor.codes/),
[ZeroNet](https://zeronet.io/docs/), [ZeroNet](https://zeronet.io/docs/),
[WebKit](https://docs.webkit.org/),
[WTF](https://wtfutil.com/) [WTF](https://wtfutil.com/)
## License ## License

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -119,7 +119,7 @@ are still exclusively available to sponsors as part of [Insiders]:
- [Boosting pages in search] - [Boosting pages in search]
- [Brand new search plugin] - [Brand new search plugin]
- [Code annotations] - [Code annotations]
- [Code annotations: anchor links] - Code annotations: anchor links
- [Code annotations: strip comments] - [Code annotations: strip comments]
- [Code block titles] - [Code block titles]
- [Code block line anchors] - [Code block line anchors]
@ -167,7 +167,6 @@ __55__ times, `mkdocs-material-insiders` was shipped __72__ times.
[Boosting pages in search]: ../../setup/setting-up-site-search.md#search-boosting [Boosting pages in search]: ../../setup/setting-up-site-search.md#search-boosting
[Brand new search plugin]: search-better-faster-smaller.md [Brand new search plugin]: search-better-faster-smaller.md
[Code annotations]: ../../reference/code-blocks.md#adding-annotations [Code annotations]: ../../reference/code-blocks.md#adding-annotations
[Code annotations: anchor links]: ../../reference/code-blocks.md#anchor-links
[Code annotations: strip comments]: ../../reference/code-blocks.md#stripping-comments [Code annotations: strip comments]: ../../reference/code-blocks.md#stripping-comments
[Code block titles]: ../../reference/code-blocks.md#adding-a-title [Code block titles]: ../../reference/code-blocks.md#adding-a-title
[Code block line anchors]: ../../setup/extensions/python-markdown-extensions.md#anchor-linenums [Code block line anchors]: ../../setup/extensions/python-markdown-extensions.md#anchor-linenums

View File

@ -2,6 +2,126 @@
## Material for MkDocs ## Material for MkDocs
### 9.1.18 <small>July 3, 2023</small> { id="9.1.18" }
- Updated Danish translations
- Added support for installing user requirements in Docker image
- Fixed #5655: Search separator with lookbehind breaks highlighting
### 9.1.17 <small>June 23, 2023</small> { id="9.1.17" }
- Fixed #5633: Code annotations with nested lists incorrectly mounted
- Fixed #5628: Regression in new social plugin configuration scheme
### 9.1.16 <small>June 15, 2023</small> { id="9.1.16" }
- Updated Indonesian translations
- Ensure scroll bar follows color scheme of operating system
### 9.1.15 <small>May 29, 2023</small> { id="9.1.15" }
- Fixed #5566: Indicate color scheme to operating system
- Fixed #5565: Update `Dockerfile` to latest version of base image
- Fixed #5554: Add additional version tags (`9`, `9.1`) to Docker image
- Fixed #5536: Strip tags of ARIA labels in table of contents
### 9.1.14 <small>May 20, 2023</small> { id="9.1.14" }
- Updated Armenian and Greek translations
### 9.1.13 <small>May 16, 2023</small> { id="9.1.13" }
- Fixed #5517: Social plugin crashes for some fonts (e.g. Open Sans)
### 9.1.12 <small>May 12, 2023</small> { id="9.1.12" }
- Updated Bengali (Bangla) translations
- Fixed #5503: Docker image publish errors on uppercase characters
- Fixed #5407: Auto-pause media when in hidden content tabs
### 9.1.11 <small>May 8, 2023</small> { id="9.1.11" }
- Fixed #5487: Social plugin crashes without options (9.1.10 regression)
### 9.1.10 <small>May 8, 2023</small> { id="9.1.10" }
- Added `cards_layout_options` setting for social cards
- Deprecated `cards_color` and `cards_font` setting for social cards
### 9.1.9 <small>May 2, 2023</small> { id="9.1.9" }
- Added Telugu, Kannada and Sanskrit translations
- Fixed #5428: Fixed margins for light/dark mode images in figures
- Fixed #5420: Social plugin crashing for some specific Google Fonts
- Fixed #5160: Instant loading makes code annotations jump (9.1.1 regression)
- Fixed #4920: Social plugin not loading logo from custom icon set
- Fixed social plugin crashing when only code font is specified
### 9.1.8 <small>April 24, 2023</small> { id="9.1.8" }
- Fixed #5417: Theme breaks when `palette` is not defined (9.1.7 regression)
### 9.1.7 <small>April 22, 2023</small> { id="9.1.7" }
- Updated Persian (Farsi) and Turkish translations
- Fixed #5401: Added missing flag to disable built-in tags plugin
- Fixed #5206: Ensure defaults are set for primary and accent colors
- Fixed unnecessary inclusion of palette CSS when unused
### 9.1.6 <small>April 7, 2023</small> { id="9.1.6" }
- Updated Persian (Farsi) translations
- Fixed #5300: Boxes in Mermaid sequence diagrams not color-abiding
### 9.1.5 <small>March 31, 2023</small> { id="9.1.5" }
- Updated Lithuanian and Japanese translations
- Updated Mermaid.js to version 9.4.3
- Fixed #5290: Footer previous/next labels cut-off for short page titles
### 9.1.4 <small>March 24, 2023</small> { id="9.1.4" }
- Fixed #5239: Instant loading breaks anchors in details (9.1.1 regression)
- Fixed #5211: Anchor following not working for Chinese (9.1.2 regression)
### 9.1.3 <small>March 14, 2023</small> { id="9.1.3" }
- Added Kurdish (Soranî) translations
- Updated Norwegian (Bokmål), Portuguese and Romanian translations
- Improved compatibility with `mkdocs-jupyter` plugin
- Fixed #5198: Built-in search plugin not filtering `script` and `style` tags
- Fixed #5176: Back-to-top + instant loading not working (9.1.1 regression)
### 9.1.2 <small>March 9, 2023</small> { id="9.1.2" }
- Updated Icelandic, Korean and Swedish translations
- Fixed #5168: Mermaid text boxes overflow (9.0.13 regression)
- Fixed #5155: Table of contents not highlighting percent-encoded URLs
### 9.1.1 <small>March 5, 2023</small> { id="9.1.1" }
- Updated Czech and Thai translations
- Improved instant loading (scroll restoration, slow connections)
- Fixed #5023: Instant loading not allowing to go back to initial page
- Fixed #3797: Instant loading does not work with section anchors in Safari
### 9.1.0 <small>March 2, 2023</small> { id="9.1.0" }
- Docker image now available for `amd64`, `arm64` and `arm/v7`
- Updated Chinese (Taiwanese) translations
- Generalized tag identifier implementation
- Fixed flickering of header shadow on load
- Fixed occasional flickering of announcement bar
### 9.0.15 <small>February 26, 2023</small> { id="9.0.15" }
- Updated Chinese (Traditional) translations
- Updated Hebrew translations
### 9.0.14 <small>February 23, 2023</small> { id="9.0.14" }
- Fixed #5072: Rendering bug on navigation expand button in Firefox
### 9.0.13 <small>February 18, 2023</small> { id="9.0.13" } ### 9.0.13 <small>February 18, 2023</small> { id="9.0.13" }
- Updated Uzbek translations - Updated Uzbek translations

View File

@ -9,8 +9,8 @@ bugs, a lot of work from us maintainers is required.
We have invested quite a lot of time in creating better templates for our We have invested quite a lot of time in creating better templates for our
[issue tracker], optimizing the processes for our users to report bugs, request [issue tracker], optimizing the processes for our users to report bugs, request
features or changes, contribute to the project or exchange with our community. This section of features or changes, contribute to the project, or exchange with our community.
the documentation explains each process. This section of the documentation explains each process.
[issue tracker]: https://github.com/squidfunk/mkdocs-material/issues [issue tracker]: https://github.com/squidfunk/mkdocs-material/issues

View File

@ -50,7 +50,7 @@ adjusted all partials you have overridden.
A handful of the features Material for MkDocs offers can only be implemented A handful of the features Material for MkDocs offers can only be implemented
with customizations. If you find a bug in any of the customizations [that with customizations. If you find a bug in any of the customizations [that
our documentation explicitly mentions], you are of course encouraged to our documentation explicitly mentions], you are, of course, encouraged to
report it. report it.
__Don't be shy to ask on our [discussion board] for help if you run into __Don't be shy to ask on our [discussion board] for help if you run into
@ -74,7 +74,7 @@ problems.__
At this stage, we know that the problem persists in the latest version and is At this stage, we know that the problem persists in the latest version and is
not caused by any of your customizations. However, the problem might result from not caused by any of your customizations. However, the problem might result from
a small typo or a syntactical error in a configuration file, e.g. `mkdocs.yml`. a small typo or a syntactical error in a configuration file, e.g., `mkdocs.yml`.
Now, before you go through the trouble of creating a bug report that is answered Now, before you go through the trouble of creating a bug report that is answered
and closed right away with a link to the relevant documentation section or and closed right away with a link to the relevant documentation section or
@ -167,7 +167,7 @@ relevant. Don't write about the bug here.
### Description ### Description
Now, to the bug, you want to report. Provide a clear, focused, specific, and Now, to the bug you want to report. Provide a clear, focused, specific, and
concise summary of the bug you encountered. Explain why you think this is a bug concise summary of the bug you encountered. Explain why you think this is a bug
that should be reported to Material for MkDocs, and not to one of its that should be reported to Material for MkDocs, and not to one of its
dependencies.[^3] Adhere to the following principles: dependencies.[^3] Adhere to the following principles:
@ -189,7 +189,7 @@ dependencies.[^3] Adhere to the following principles:
or two sentences, perfect. Don't inflate it maintainers and future users or two sentences, perfect. Don't inflate it maintainers and future users
will be grateful for having to read less. will be grateful for having to read less.
- __One bug at a time__ if you encountered several unrelated bugs, please - __One bug at a time__ if you encounter several unrelated bugs, please
create separate issues for them. Don't report them in the same issue, as create separate issues for them. Don't report them in the same issue, as
this makes attribution difficult. this makes attribution difficult.
@ -247,7 +247,7 @@ After you have created the reproduction, you should have a .zip file, ideally no
larger than 1 MB. Just drag and drop the .zip file into this field, which will larger than 1 MB. Just drag and drop the .zip file into this field, which will
automatically upload it to GitHub. automatically upload it to GitHub.
> __Why we need this__: if an issue contains no minimal reproduction, or just > __Why we need this__: if an issue contains no minimal reproduction or just
> a link to a repository with thousands of files, the maintainers would need to > a link to a repository with thousands of files, the maintainers would need to
> invest a lot of time into trying to recreate the right conditions to even > invest a lot of time into trying to recreate the right conditions to even
> inspect the bug, let alone fix it. > inspect the bug, let alone fix it.
@ -269,14 +269,14 @@ automatically upload it to GitHub.
### Steps to reproduce ### Steps to reproduce
At this point, you provided us with enough information to understand the bug, At this point, you provided us with enough information to understand the bug,
and you gave us a reproduction that we can run and inspect. However, when we and you gave us a reproduction that we could run and inspect. However, when we
run your reproduction, it might not be immediately apparent how we can see run your reproduction, it might not be immediately apparent how we can see
the bug in action. the bug in action.
Next, please list the specific steps we should follow when running your Next, please list the specific steps we should follow when running your
reproduction to observe the bug. Keep the steps short and concise, and make sure reproduction to observe the bug. Keep the steps short and concise, and make sure
not to leave anything out. Use simple language as you would explain it to a not to leave anything out. Use simple language as you would explain it to a
five-year-old and focus on continuity. five-year-old, and focus on continuity.
> __Why we need this__: we must know how to navigate your reproduction in order > __Why we need this__: we must know how to navigate your reproduction in order
> to observe the bug, as some bugs only occur at certain viewports or in > to observe the bug, as some bugs only occur at certain viewports or in
@ -301,8 +301,8 @@ only relevant when the bug you are reporting does not involve a crash when
Thanks for following the guide and creating a high-quality and complete bug Thanks for following the guide and creating a high-quality and complete bug
report you are almost done. This section ensures that you have read this guide report you are almost done. This section ensures that you have read this guide
and have worked to your best knowledge to provide us with everything we need to and have worked to the best of your knowledge to provide us with everything we
know to help you. need to know to help you.
__We'll take it from here.__ __We'll take it from here.__

View File

@ -1,7 +1,7 @@
# Reporting a docs issue # Reporting a docs issue
In the past 7 years, our documentation has grown to more than 60 pages. With a In the past seven years, our documentation has grown to more than 60 pages. With
site being this large, inconsistencies can occur. If you found an inconsistency a site being this large, inconsistencies can occur. If you find an inconsistency
or see room for clarification or improvement, please submit an issue to or see room for clarification or improvement, please submit an issue to
our public [issue tracker] by following this guide. our public [issue tracker] by following this guide.
@ -50,7 +50,7 @@ describe the severity of the issue:
precisely explained in one or two sentences, perfect. Maintainers and precisely explained in one or two sentences, perfect. Maintainers and
future users will be grateful for having to read less. future users will be grateful for having to read less.
- __One issue at a time__ if you encountered several unrelated inconsistencies, - __One issue at a time__ if you encounter several unrelated inconsistencies,
please create separate issues for them. Don't report them in the same issue it makes attribution difficult. please create separate issues for them. Don't report them in the same issue it makes attribution difficult.
> __Why we need this__: in order for us to understand the problem, we need a > __Why we need this__: in order for us to understand the problem, we need a
@ -73,7 +73,7 @@ where possible, as it simplifies discovery.
Now that you have provided us with the description and links to the Now that you have provided us with the description and links to the
documentation sections, you can help us, maintainers, and the community by documentation sections, you can help us, maintainers, and the community by
proposing an improvement. You can sketch out rough ideas or write a concrete proposing an improvement. You can sketch out rough ideas or write a concrete
proposal. This field is optional, but very helpful. proposal. This field is optional but very helpful.
> __Why we need this__: improvement proposal can be beneficial for other users > __Why we need this__: improvement proposal can be beneficial for other users
> who encounter the same issue, as they offer solutions before we maintainers > who encounter the same issue, as they offer solutions before we maintainers
@ -83,7 +83,7 @@ proposal. This field is optional, but very helpful.
Thanks for following the guide and creating a high-quality and complete issue Thanks for following the guide and creating a high-quality and complete issue
report you are almost done. This section ensures that you have read this guide report you are almost done. This section ensures that you have read this guide
and have worked to your best knowledge to provide us with every piece of and have worked to the best of your knowledge to provide us with every piece of
information we need to improve our documentation. information we need to improve our documentation.
__We'll take it from here.__ __We'll take it from here.__

View File

@ -1,6 +1,6 @@
# Requesting a change # Requesting a change
Material for MkDocs is a powerful tool to create beautiful and functional Material for MkDocs is a powerful tool for creating beautiful and functional
project documentation. With more than 20,000 users, we understand that our project documentation. With more than 20,000 users, we understand that our
project serves a wide range of use cases, which is why we have created the project serves a wide range of use cases, which is why we have created the
following guide. following guide.
@ -12,7 +12,7 @@ to maintain existing functionality while constantly adding new features at the
same time. We highly value every idea or contribution from our community, and same time. We highly value every idea or contribution from our community, and
we kindly ask you to take the time to read the following guidelines before we kindly ask you to take the time to read the following guidelines before
submitting your change request in our public [issue tracker]. This will help us submitting your change request in our public [issue tracker]. This will help us
better understand the proposed change, and how it will benefit the community. better understand the proposed change and how it will benefit the community.
This guide is our best effort to explain the criteria and reasoning behind our This guide is our best effort to explain the criteria and reasoning behind our
decisions when evaluating change requests and considering them for decisions when evaluating change requests and considering them for
@ -33,7 +33,7 @@ __Please find answers to the following questions before creating an issue.__
### It's not a bug, it's a feature ### It's not a bug, it's a feature
Change requests are intended for suggesting minor adjustments, ideas for new Change requests are intended to suggest minor adjustments, ideas for new
features, or to influence the project's direction and vision. It is important features, or to influence the project's direction and vision. It is important
to note that change requests are not intended for reporting bugs, as they're to note that change requests are not intended for reporting bugs, as they're
missing essential information for debugging. missing essential information for debugging.
@ -65,8 +65,8 @@ that benefits a large number of users.
Now that you have taken the time to do the necessary preliminary work and ensure Now that you have taken the time to do the necessary preliminary work and ensure
that your idea meets our requirements, you are invited to create a change that your idea meets our requirements, you are invited to create a change
request. The following guide will walk you through all necessary steps to help request. The following guide will walk you through all the necessary steps to
you submit a comprehensive and useful issue: help you submit a comprehensive and useful issue:
- [Title] - [Title]
- [Context] <small>optional</small> - [Context] <small>optional</small>
@ -105,7 +105,7 @@ in which you're using Material for MkDocs, and what you _think_ might be
relevant. Don't write about the change request here. relevant. Don't write about the change request here.
> __Why this might be helpful__: some ideas might only benefit specific > __Why this might be helpful__: some ideas might only benefit specific
> settings, environments or edge cases, for example, when your documentation > settings, environments, or edge cases, for example, when your documentation
> contains thousands of documents. With a little context, change requests > contains thousands of documents. With a little context, change requests
> can be prioritized more accurately. > can be prioritized more accurately.
@ -120,7 +120,7 @@ in one of its dependencies:[^1]
our upstream dependencies, including [MkDocs], [Python Markdown], our upstream dependencies, including [MkDocs], [Python Markdown],
[Python Markdown Extensions] or third-party plugins. It's a good idea to [Python Markdown Extensions] or third-party plugins. It's a good idea to
think about whether your idea is beneficial to other themes, upstreaming think about whether your idea is beneficial to other themes, upstreaming
change requests for bigger impact. change requests for a bigger impact.
- __Explain the <u>what</u>, not the <u>why</u>__ don't explain - __Explain the <u>what</u>, not the <u>why</u>__ don't explain
[the benefits of your idea][Use cases] here, we're getting there. [the benefits of your idea][Use cases] here, we're getting there.
@ -137,7 +137,7 @@ together, please open separate change requests for each of those ideas.
:material-run-fast: __Stretch goal__ if you have a customization or another :material-run-fast: __Stretch goal__ if you have a customization or another
way to add the proposed change, you can help other users by sharing it here way to add the proposed change, you can help other users by sharing it here
before we maintainers can add it to our code base. before we maintainers can add it to our code base.
> __Why we need this__: To understand and evaluate your proposed change, we > __Why we need this__: To understand and evaluate your proposed change, we
> need to have a clear understanding of your idea. By providing a detailed and > need to have a clear understanding of your idea. By providing a detailed and
@ -164,7 +164,7 @@ the link to the discussion as well.
### Use cases ### Use cases
Explain how your change request would work from an author's and user's Explain how your change request would work from an author's and user's
perspective what's the expected impact and why does it not only benefit you, perspective what's the expected impact, and why does it benefit not only you
but other users? How many of them? Furthermore, would it potentially break but other users? How many of them? Furthermore, would it potentially break
existing functionality? existing functionality?
@ -198,7 +198,7 @@ it and describing how it was implemented and incorporated.
Thanks for following the change request guide and creating a high-quality Thanks for following the change request guide and creating a high-quality
change request. This section ensures that you have read this guide and have change request. This section ensures that you have read this guide and have
worked to your best knowledge to provide us with every piece of information to worked to the best of your knowledge to provide us with every piece of
review your idea for Material for MkDocs. information to review your idea for Material for MkDocs.
__We'll take it from here.__ __We'll take it from here.__

View File

@ -223,5 +223,12 @@ need for operating a database or server, as it is completely self-contained.
The site can be hosted on [GitHub Pages], [GitLab Pages], a CDN of your choice The site can be hosted on [GitHub Pages], [GitLab Pages], a CDN of your choice
or your private web space. or your private web space.
!!! note "Enterprise support"
If you're using Material for MkDocs in your organization and need
assistance, e.g., to __reduce build times__, __improve performance__ or
ensure compliance, [__get in touch__](mailto:contact@squidfunk.com)
to discuss our __enterprise support__ offerings. We're happy to help!
[GitHub Pages]: publishing-your-site.md#github-pages [GitHub Pages]: publishing-your-site.md#github-pages
[GitLab pages]: publishing-your-site.md#gitlab-pages [GitLab pages]: publishing-your-site.md#gitlab-pages

View File

@ -303,3 +303,10 @@ This triggers the production-level compilation and minification of all style
sheets and JavaScript files. After the command exits, the compiled files are sheets and JavaScript files. After the command exits, the compiled files are
located in the `material` directory. When running `mkdocs build`, you should located in the `material` directory. When running `mkdocs build`, you should
now see your changes to the original theme. now see your changes to the original theme.
!!! note "Enterprise support"
If you're using Material for MkDocs in your organization and need
assistance, e.g., to __reduce build times__, __improve performance__ or
ensure compliance, [__get in touch__](mailto:contact@squidfunk.com)
to discuss our __enterprise support__ offerings. We're happy to help!

470
docs/faq/sponsoring.md Normal file
View File

@ -0,0 +1,470 @@
# Sponsoring FAQs
Do you have questions about Material for MkDocs Insiders? We do our best to
answer all of your questions on this page. If you can't find your question
below, ask it on our [discussion board]!
[discussion board]: https://github.com/squidfunk/mkdocs-material/discussions/new/chooses
## General
[__Why is the Insiders edition offered as a subscription model?__](#insiders-subscription){ #insiders-subscription }
Material for MkDocs always was and will be Open Source, available for free to
individuals and organizations. As the project grew over time, we found that
maintaining and managing the overhead that comes with growth became more
challenging and time-consuming.
In order to sustain the project and add new and useful features more frequently,
we decided to create the [Insiders] edition, with early access to the latest and
greatest features of Material for MkDocs. The subscription-based model of the
Insiders edition allows us to dedicate more time and resources to the project,
which benefits all
users of Material for MkDocs. Once our funding goals based on monthly
subscriptions are hit, the Insiders features of those^ funding goals are released
to the community edition, letting everyone benefit from them.
Maintaining both the community and Insiders editions is an ongoing process, and
we rely on our sponsors to support us on a monthly basis, which makes this whole
project possible.
[__What features are included in the Insiders edition?__](#insiders-features){ #insiders-features }
The Insiders edition includes more than 20 additional features. You can find an
overview of these features on our [Insiders page], which is updated when new
features are added and released.
[Insiders]: ../insiders/index.md
[Insiders page]: ../insiders/index.md#whats-in-it-for-me
[__How often is the Insiders edition updated?__](#insiders-updates){ #insiders-updates }
We try to keep our open issue count low, fixing known bugs quickly. Both our
repositories, the community and Insiders edition, are constantly updated with
bug fixes and new features.
## Sponsorship
[__Can I sponsor the project without a GitHub account?__](#sponsorship-account){ #sponsorship-account }
Yes. You can support Material for MkDocs by sponsoring us on [Ko-fi], regardless
of whether you have a GitHub account or not. However, please note that Insiders
is provided as a private repository on GitHub. If after sponsoring, you'd like to
gain access to the repository, you'll need to have a GitHub individual or bot
account that can be added as a collaborator. If your organization doesn't use
GitHub or/and host its repositories on other platforms, you can mirror the
Insiders repository in your environment once you have access.
[__Which sponsoring tier should I choose?__](#sponsorship-tier){ #sponsorship-tier }
The sponsoring tiers are divided into non-commercial and commercial tiers. If
you are an individual or organization using Material for MkDocs for private or
__non-commercial__ Open Source projects, you have two tiers to choose from,
depending on the number of sites you want to build. For companies using
Material for MkDocs, we offer three different __commercial__ tiers, from which
you can choose depending on your requirements.
Also, please read what is considered [commercial use].
[commercial use]: #commercial-use
[__Why are one-time sponsorships not granted access to Insiders?__](#sponsorship-one-time){ #sponsorship-one-time }
Primarily due to technical reasons, that we're working on lifting in the future.
We use GitHub webhooks to determine our current active sponsors. When you create
or cancel your monthly subscription, GitHub sends events that we use to
automatically add and remove collaborators.
Note that [$15] is the minimum amount to be granted access to Insiders.
[$15]: https://github.com/sponsors/squidfunk/sponsorships?tier_id=210638
[__How is my sponsorship contribution used to support the project?__](#sponsorship-support){ #sponsorship-support }
Your sponsorship contribution directly supports the development and
maintenance of the project, by buying us maintainers time. It allows us to
dedicate more time and resources to enhance the project's features and
functionality. The additional funding helps us prioritize improvements and
updates, benefiting Insiders users and the wider community. We also actively
contribute to other upstream projects, fostering collaboration and giving
back to the Open Source ecosystem.
[__Are there any limitations on the number of sponsors for a particular tier?__](#sponsorship-limitations){ #sponsorship-limitations }
No, there are no limitations on the number of sponsors for any tier. You can
sponsor the project at any tier regardless of how many other sponsors are
already there.
## Payment & billing
[__Is there a trial period for the Insiders edition?__](#insiders-trial){ #insiders-trial }
No, we do not offer a trial period for the Insiders edition. However, if you're
a company and are considering sponsoring on the commercial tier, but want to
first give the Insiders edition a try, you can sponsor on the [$15] tier with a
personal account for non-commercial evaluation purposes.
Additionally, our subscription model allows you to cancel your sponsorship
anytime. If you decide to cancel, your sponsorship will remain active until
the end of your billing cycle.
[__What payment options do you accept?__](#insiders-payment){ #insiders-payment }
We manage all our transactions and sponsorships through [GitHub Sponsors] and
[Ko-fi]. To become a sponsor of Material for MkDocs on GitHub, visit
[our sponsors' page]. On there, you can choose from five different sponsorship
tiers and pay by credit card. Please note that as of the beginning of 2023,
[GitHub no longer supports PayPal] payments. If you wish to pay with PayPal,
ou can find a selection of our sponsorship tiers on [Ko-fi]. Both platforms
provide you with a payment receipt once your purchase is successful.
If you're a company and need assistance choosing the right payment method,
please don't hesitate to reach out to sponsors@squidfunk.com.
[Ko-fi]: https://ko-fi.com/squidfunk
[GitHub Sponsors]: https://github.com/sponsors
[GitHub no longer supports PayPal]: https://github.blog/changelog/2023-01-23-github-sponsors-will-stop-supporting-paypal/
[our sponsors' page]: https://github.com/sponsors/squidfunk/
[__Are discounts available for the Insiders edition, such as student discounts?__](#insiders-discounts){ #insiders-discounts }
Unfortunately, we are not able to offer any discounts for the Material for
MkDocs Insiders program. To ensure that everyone can afford the Insiders program
and keep the barrier as low as possible, we have set prices as low as [$15] a
month for non-commercial use.
[__Do you offer free access to Insiders for Open Source projects?__](#insiders-open-source){ #insiders-open-source }
No, we do not offer free access to our Material for MkDocs Insiders edition.
We understand that non-profit organizations may have limited budgets and may
need to prioritize their spending on other projects or organizations. However,
it's important to note that Material for MkDocs is maintained by a small team,
investing a lot of time and resources into constantly improving this project.
Material for MkDocs and its core features are free to the community through our
Open Source model. Therefore, Material for MkDocs itself is already free.
However, we do offer an affordable sponsorship tier starting at [$15] a month,
which is meant for individuals and non-profit organizations using Material for
MkDocs to build 1-2 sites for non-commercial purposes. This tier provides access
to all new features, benefiting you from our ongoing development efforts.
[__Is Insiders free for those who contribute to this project?__](#insiders-contributors){ #insiders-contributors }
Great question! We can not offer free access to "drive-by" contributors that
only fix minor issues like typos or add new languages. These contributions are
always welcome, but as we need to review them, they result in a higher time
investment from our side and don't compensate for this work. However, as this
project keeps growing, we always seek for individuals to support us. In return,
we offer financial compensation or/and Insiders access. If you are interested
and have experience in the technologies and paradigms listed below, please get
in touch with us at sponsors@squidfunk.com:
- Deep knowledge of CSS, HTML, TypeScript
- Experience with progressive enhancement and responsive design
- Experience with reactive programming with RxJS
- Solid understanding of Python, MkDocs + ecosystem
- Solid technical writing skills
Additionally, we're working on a contributor program that will reward
contributors that engage in the community by answering questions and helping
users with access to Insiders.
[__How can I set my billing to monthly or yearly?__](#insiders-billing-cycle){ #insiders-billing-cycle }
You can sponsor Material for MkDocs on a monthly or yearly basis. Depending on
your billing cycle you automatically become a monthly or yearly sponsor. Your
[billing cycle] is an account-level setting that you can easily change in your
account. If, for some reason, you cannot make this change, you can create a
dedicated bot account with a yearly billing cycle on GitHub, which you only use
for sponsoring (some sponsors already do that). If you have any problems or
further questions, please contact us at sponsors@squidfunk.com.
[billing cycle]: https://docs.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle
[__Can I get an invoice for my sponsorship payment?__](#insiders-invoice){ #insiders-invoice}
Right now, we can't provide you with an invoice for your sponsoring transaction,
as [GitHub Sponsors] handles all transactions for us. However, both payment
platforms, [GitHub] and [Ko-Fi], automatically send you a payment receipt
via mail once the sponsorship is active.
Furthermore, we are working on a solution to optimize access management and more
features. If you are interested in this, please get in touch with us via mail at
sponsors@squidfunk.com or turn on all notifications for MkDocs, and we will
reach out as soon as we are live.
[GitHub]: https://github.com/sponsors/squidfunk/
[__Can I switch between different sponsoring tiers?__](#insiders-switch-tiers){ #insiders-switch-tiers }
Yes, you can switch between different sponsoring tiers at any time. Simply go
to the [GitHub Sponsors] page and change your sponsoring tier. Once you make
that change, you will immediately change to the new tier.
If you change to a higher tier, the amount will be prorated according to your
billing cycle.
[__Can I sponsor the project for a specific feature or development goal?__](#insiders-goals){ #insiders-goals }
While sponsoring specific goals directly is not possible, our sponsoring goals
are connected to specific features or development goals aligned with the
project's roadmap. You can find an [overview of these sponsoring goals] and their
associated features on our website. Insider users have early access to all
already developed features, including those associated with higher funding goals
that will be reached at a later stage. If you're interested in accessing these
features, becoming a sponsor is the way to go. If you have a feature in mind
that you would like to see on the list, we encourage you to
[initiate a new discussion] to evaluate it with others.
[overview of these sponsoring goals]: ../insiders/index.md#goals
[initiate a new discussion]: https://github.com/squidfunk/mkdocs-material/discussions/new/chooses
[__What happens if I reach my sponsoring limit for my current tier?__](#insiders-limit){ #insiders-limit }
If you extend the number of sites that are in your current sponsoring limit,
please [upgrade your sponsorship] to a higher tier to continue using the
Insiders version and build more sites. The change will be effective immediately.
[upgrade your sponsorship]: https://docs.github.com/en/billing/managing-billing-for-github-sponsors/upgrading-a-sponsorship
[__Do you offer refunds for sponsoring payments?__](#insiders-refunds){ #insiders-refunds }
Unfortunately, we cannot offer any refund for sponsorship payments.
[GitHub Sponsors] and [Ko-Fi] manage all sponsoring transactions. Because of
that, we do not have any insights into the details of the funds and cannot access
them. If you have any payment issues, please get in touch with the GitHub
or Ko-Fi support team, as they can help you.
## Access management
[__How do I gain access to the private Insiders repository?__](#access-account){ #access-account }
If you sponsored with your __individual account__, you should have received an
email invitation to the private Material for MkDocs Insiders repository right
after you initiated your sponsorship. Simply accept the invitation within seven
days to gain access.
If you sponsored using an __organization account__, please note we need
an individual account that we can list as a collaborator of the private Insiders
repository. After you initiate your sponsorship, please email us at
sponsors@squidfunk.com with the name of the individual or bot account. Once you
provide us with this information, we will add the account as a collaborator, and
after you accept the invitation, you will gain access to the repository.
If you have yet to receive the email or the invitation link has expired, please
contact us, the maintainers, at sponsors@squidfunk.com. We're working on a
solution that will allow you to manage collaborator status yourself.
[__Why can't our whole organization get access to Insiders?__](#access-organization){ #access-organization }
Currently, it is not possible to grant access to an organizational account, as
GitHub only allows for adding individual user accounts. We are working on a
solution ourselves to simplify access for organizations. For now, to ensure that
access is not tied to a particular individual, we recommend creating a bot
account, i.e., a GitHub account that does not belong to a specific individual
but is listed as the owner of the organizational account and using this account
for sponsorship.
[__Do I need to fork the repository to use it?__](#access-fork){ #access-fork }
It depends. If you are using the Insiders edition as an individual, you can work
directly with the private repository, as you do not need to share the Insiders
features with others. If you are working with a team, it is best to create a
private fork using the individual account you listed as a collaborator of
Material for MkDocs to grant access to all members of your organization to
your fork.
[__Can I share my Insiders access with others?__](#access-share){ #access-share }
At the moment, it is not possible to directly share your collaborator status
for the private Insiders repository with other accounts. However, if you are
working with a team and would like them to access Insiders, you can share the
Insiders repository by utilizing options such as [cloning], [forking], or
[mirroring]. By doing so, you can start collaborating with your team members on
the new repository you have shared. This way, you can collectively benefit
from the Insiders features and work together on the project.
[cloning]: https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository
[forking]: https://docs.github.com/en/get-started/quickstart/fork-a-repo
[mirroring]: https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository
## Runtime & cancellation
[__How long is my sponsorship valid?__](#sponsorship-runtime){ #sponsorship-runtime }
Your sponsorship is valid for as long as your monthly or yearly subscription
is valid. If you choose to cancel your sponsorship, you will lose access to
the Insiders edition once your cancelation is active and will be automatically
removed by GitHub as a collaborator from the private repository.
[__How do I cancel my sponsorship?__](#sponsorship-cancellation){ #sponsorship-cancellation }
To cancel your sponsorship, follow the [step-by-step guide] provided by GitHub.
If you sponsored using an organizational account, please ensure that you cancel
your sponsorship using the same organizational account rather than your
individual account.
[step-by-step guide]: https://docs.github.com/en/billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship
[__What happens when I cancel my sponsorship?__](#sponsorship-cancellation-effective){ #sponsorship-cancellation-effective }
If you choose to cancel your subscription to Insiders, you will be
automatically removed by GitHub as a collaborator on the day your cancellation is
effective. From that day on, you will no longer receive future updates. However,
you are __welcome to continue using the latest version__ that was available to
you at the time of your cancellation for as long as you like.
Please note that [GitHub deletes private forks], so you may want to take steps to ensure
that you have a backup of the software if necessary and use the locally installed version.
[GitHub deletes private forks]: https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository#deleting-forks-of-private-repositories
## Licensing
[__What constitutes commercial use of the Insiders version?__](#commercial-use){ #commercial-use }
Commercial use refers to any use of the software for a business or for-profit
purpose. This includes any use by a corporation or other organization, whether
or not they generate revenue directly from the software. We offer different
pricing tiers for commercial use, each tailored to the needs of different
businesses. It's important to note that internal use of the software within your
organization is also considered commercial use, as with all commercial software.
[__What constitutes non-commercial use of the Insiders version?__](#non-commercial-use){ #non-commercial-use }
Non-commercial use of our Material for MkDocs refers to private use. This
includes individuals using the Insiders edition for private or purely
non-commercial Open Source projects. We offer two different tiers for
non-commercial use, depending on the number of sites you want to build.
[__What is your fair use policy?__](#fair-use-policy){ #fair-use-policy }
Our fair use policy includes the following guidelines:
- Please refrain from __distributing the source code__ of Insiders. While you
may use the software for public, private, or commercial projects and may
privately fork or mirror it, we ask that you keep the source code private. This
is important to our sponsorware strategy, which helps us fund ongoing
development and support of the software. If this guidelines is violated,
everybody loses, as it will reduce the time of us maintainers we can set aside
to push this project forward.
- As our sponsoring tiers are based on the number of sites you want to build,
please make sure to [upgrade your sponsorship] once your current sponsoring tier
limit has been reached.
[__Does the Insiders version have a different license?__](#insiders-license){ #insiders-license }
No. 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].
[MIT license]: ../license.md
[__Can outside collaborators build and run the documentation locally without access to Insiders?__](#insiders-outside-collaborators){ #insiders-outside-collaborators }
Yes. Insiders is compatible with Material for MkDocs. Almost all new features
and configuration options are either backward-compatible or implemented behind
feature flags. When working with outside collaborators, changing the general
appearance of your site should be optional. Most Insiders features enhance the
overall experience, e.g., by adding icons to pages or providing a feedback
widget. While these features add value for your site's users, they should be
optional for previewing when making changes to content. Currently, the only
content-related features in Insiders that non-Insiders users can't properly
preview are [Annotations] and [Card grids].
This means that outside collaborators can build the documentation locally with
Material for MkDocs, and when they push their changes, your CI pipeline will
build it with Insiders. When using built-in plugins exclusive to Insiders, it's
recommended to split configuration into a base `mkdocs.yml` and one with plugin
overrides via [configuration inheritance].
See the [getting started guide] for more information.
[configuration inheritance]: https://www.mkdocs.org/user-guide/configuration/#configuration-inheritance
[getting started guide]: ../insiders/getting-started.md#caveats
[Annotations]: ../reference/annotations.md?h=anno#annotations
[Card grids]: ../reference/grids.md?h=grids#using-card-grids
## Support
[__How can I contact support if I have questions about becoming a sponsor?__ ](#support-contact){ #support-contact }
If you have any questions and would like to contact us before starting your
sponsorship, we are happy to answer all your non-technical questions about the
Insiders program via email at sponsors@squidfunk.com.
All technical questions should be asked openly on our [discussion board].
[discussion board]: https://github.com/squidfunk/mkdocs-material/discussions
[__Is additional support available for Material for MkDocs Insiders users?__](#support-additional){ #support-additional }
Yes, we provide non-technical support related to sponsoring at
sponsors@squidfunk.com. For technical questions, please submit an issue openly
on our [issue tracker] or start a discussion on our [discussion board]. Issues
and discussions from our organizational sponsors, sponsoring on
__The Organization__ tier or higher will be prioritized.[^1]
[^1]:
Priority support means we will prioritize your issue, meaning we will look
into it and do our best to solve your issue asap. However, the prioritized bug
support does not mean that we can solve your issue before any others since
some issues might take more time to solve.
[issue tracker]: https://github.com/squidfunk/mkdocs-material/issues
[__How can I display my logo on the list of premium sponsors?__](#sponsorship-logo-placement){ #sponsorship-logo-placement }
If your sponsorship tier includes logo placement, and you would like us to
display your logo in the [list of premium sponsors] and have it linked to your
site, please contact us via mail. Simply send us a horizontal SVG or PNG version
of your logo making sure it displays the name of your company and the logo to
sponsors@squidfunk.com.
[list of premium sponsors]: https://github.com/squidfunk/mkdocs-material#user-content-premium-sponsors
[__Is logo placement optional?__](#sponsorship-logo-placement-optional){ #sponsorship-logo-placement-optional }
Yes, all of our commercial benefits, such as logo placement and backlinks, are
optional and can be opted in or out at any time. You can keep your sponsorship
completely private.
[__How can I report a bug in the Insiders version?__](#insiders-bugs){ #insiders-bugs }
If you encounter a bug in the Insiders edition, we kindly request that you
report it on our [issue tracker] in the public community repository. When
submitting the bug report, please ensure that you do not include any private
Insiders' source code, as we want to uphold our fair use policy.
## Privacy
[__Will you sign an NDA for sponsorships?__](#nda){ #nda }
Unfortunately, we cannot sign any NDA or vendor agreement form. As a small team
working on Material for MkDocs, we have limited resources and cannot review
and sign agreements.
[__Can I sponsor privately?__](#sponsorship-private){ #sponsorship-private }
Yes, you can. GitHub gives you the option to set your sponsorship to [private]
when you set up your sponsorship. Additionally, we have a recommended workflow
for you: We suggest you create a new GitHub bot account. This bot account should
not be tied to a particular individual and should be privately listed as an
owner of your GitHub organization. This account can then be used to sponsor
Material for MkDocs privately. As a bot account, it will automatically be listed
as a collaborator of the private Insiders repository. You can clone, fork, or
mirror using this account. All information will be kept confidential; only the
bot account and us maintainers will have insights into his sponsorship.
[private]: https://docs.github.com/en/sponsors/sponsoring-open-source-contributors/managing-your-sponsorship#managing-the-privacy-setting-for-your-sponsorship
[__Are there any geographical restrictions on becoming a sponsor?__](#sponsorship-geo){ #sponsorship-geo }
No, there are no geographical restrictions for becoming a sponsor. We welcome
sponsorships from individuals and organizations worldwide. As long as your
credit card is valid and accepted by GitHub or Ko-Fi, you are eligible to become
a sponsor and support the project, regardless of your location.

View File

@ -59,6 +59,15 @@ install those packages separately.
--- ---
:fontawesome-brands-youtube:{ style="color: #EE0F0F" }
__[How to set up Material for MkDocs]__ by @james-willett :octicons-clock-24:
15m Learn how to create and host a documentation site using Material for
MkDocs on GitHub Pages in a step-by-step guide.
[How to set up Material for MkDocs]: https://www.youtube.com/watch?v=Q-YA_dA8C20
---
__Tip__: If you don't have prior experience with Python, we recommend reading __Tip__: If you don't have prior experience with Python, we recommend reading
[Using Python's pip to Manage Your Projects' Dependencies], which is a really [Using Python's pip to Manage Your Projects' Dependencies], which is a really
good introduction on the mechanics of Python package management and helps you good introduction on the mechanics of Python package management and helps you
@ -108,11 +117,12 @@ The following plugins are bundled with the Docker image:
Material for MkDocs only bundles selected plugins in order to keep the size Material for MkDocs only bundles selected plugins in order to keep the size
of the official image small. If the plugin you want to use is not included, of the official image small. If the plugin you want to use is not included,
create a new `Dockerfile` and extend the official Docker image: create a `user-requirements.txt` file in the repository root with the packages
you want to install additionally, e.g.:
``` Dockerfile ``` txt title="user-requirements.txt"
FROM squidfunk/mkdocs-material mkdocs-macros-plugin==0.7.0
RUN pip install ... mkdocs-glightbox>=0.3.1
``` ```
Next, you can build the image with the following command: Next, you can build the image with the following command:
@ -121,20 +131,8 @@ The following plugins are bundled with the Docker image:
docker build -t squidfunk/mkdocs-material . docker build -t squidfunk/mkdocs-material .
``` ```
The new image can be used exactly like the official image. The new image will have additional packages installed and can be used
exactly like the official image.
!!! info ":material-apple: Apple Silicon (M1) and :fontawesome-brands-raspberry-pi: Raspberry Pi"
The official Docker image is only available for `linux/amd64`. We recommend
the [third-party image] by @afritzler if you want to run Material for MkDocs
via Docker on `arm64` or `armv7`, as it is automatically built on every
release:
```
docker pull ghcr.io/afritzler/mkdocs-material
```
[third-party image]: https://github.com/afritzler/mkdocs-material
### with git ### with git
@ -153,4 +151,11 @@ from `git`, you must install all required dependencies with:
pip install -e mkdocs-material pip install -e mkdocs-material
``` ```
!!! note "Enterprise support"
If you're using Material for MkDocs in your organization and need
assistance, e.g., to __reduce build times__, __improve performance__ or
ensure compliance, [__get in touch__](mailto:contact@squidfunk.com)
to discuss our __enterprise support__ offerings. We're happy to help!
[GitHub]: https://github.com/squidfunk/mkdocs-material [GitHub]: https://github.com/squidfunk/mkdocs-material

View File

@ -22,12 +22,27 @@ just delete and recreate the environment. It's trivial to set up:
- Activate the environment with: - Activate the environment with:
``` sh === ":material-apple: macOS"
. venv/bin/activate # (1)!
```
1. Your terminal should now print `(venv)` before the prompt, which is ``` sh
how you know that you are inside an environment. . venv/bin/activate
```
=== ":fontawesome-brands-windows: Windows"
``` sh
. venv/Scripts/activate
```
=== ":material-linux: Linux"
``` sh
. venv/bin/activate
```
Your terminal should now print `(venv)` before the prompt, which is how you
know that you are inside the virtual environment that you just created.
- Exit the environment with: - Exit the environment with:

View File

@ -2,6 +2,111 @@
## Material for MkDocs Insiders ## Material for MkDocs Insiders
### 4.36.1 <small>June 23, 2023</small> { id="4.36.1" }
- Fixed #5618: Date comparison breaking for drafts in blog plugin
### 4.36.0 <small>June 15, 2023</small> { id="4.36.0" }
- Added support for instant prefetching to speed up slow connections
- Improved stability of anchor link removal in built-in typeset plugin
- Improved performance of regular expressions in typeset plugin
- Removed unnecessary import test for `cairosvg` in optimize plugin
- Fixed #5590: Regular expression for anchor link removal too greedy
### 4.35.3 <small>June 1, 2023</small> { id="4.35.3" }
- Fixed #5579: Abbreviations in headlines filtered by typeset plugin
### 4.35.2 <small>May 29, 2023</small> { id="4.35.2" }
- Fixed #5555: Blog plugin crashes when computing readtime for emojis
### 4.35.1 <small>May 20, 2023</small> { id="4.35.1" }
- Fixed internal handling of errors in social plugin
### 4.35.0 <small>May 20, 2023</small> { id="4.35.0" }
- Improve editing experience and stability of social plugin
- Added support for custom layout syntax validation in social plugin
- Added support for layer origin for easier placement in social plugin
- Added support for in- and exclusion patterns in social plugin
- Catch and print syntax errors in custom layouts
### 4.34.1 <small>May 16, 2023</small> { id="4.34.1" }
- Disable social plugin debug mode by default on mkdocs build
- Added warning in social plugin debug mode when font style couldn't be found
- Set default concurrency of built-in multi-threaded plugins to CPUs - 1
- Fixed #5521: Social plugin triggers race condition when downloading fonts
- Fixed #5515: Social plugin crashes when concurrency is set to 1
### 4.34.0 <small>May 14, 2023</small> { id="4.34.0" }
- Added support for new overflow mode to auto-fit text in social plugin
- Reduced subtle rendering bugs in (code) annotations due to subpixel rounding
- Improved print styles for (code) annotation lists
- Improved performance of social plugin, now 3x as fast
- Improved interop of typeset plugin with MkDocstrings
- Fixed logo location for variants of default template in social plugin
- Fixed #5446: Built-in typeset plugin picks up headings in code blocks
### 4.33.2 <small>May 12, 2023</small> { id="4.33.2" }
- Fixed #5508: Social plugin crashes trying to copy cards on Docker/Windows
- Fixed #5507: Social plugin crashes on serve when layouts folder doesn't exist
- Fixed #5505: Social plugin trying to resolve logo in wrong location
- Fixed #5496: Annotations with nested lists incorrectly mounted
- Fixed #5493: Social plugin crashes on Python 3.8
### 4.33.1 <small>May 9, 2023</small> { id="4.33.1" }
- Added support for SVG background images in social plugin
### 4.33.0 <small>May 8, 2023</small> { id="4.33.0" }
- Added support for custom layouts for social plugin
- Added support for background images for social cards
### 4.32.6 <small>April 22, 2023</small> { id="4.32.6" }
- Fixed #5336: Interplay of blog plugin with git-revision-date-localized
### 4.32.5 <small>April 7, 2023</small> { id="4.32.5" }
- Fixed #5322: Navigation tabs hoist nested page icons
### 4.32.4 <small>March 24, 2023</small> { id="4.32.4" }
- Fixed #5241: Built-in typeset plugin jams navigation for anchors in headings
### 4.32.3 <small>March 9, 2023</small> { id="4.32.3" }
- Fixed Docker image release workflow (9.1.0 regression)
- Fixed #5159: Missing underline for abbreviations (9.1.0 regression)
### 4.32.2 <small>February 23, 2023</small> { id="4.32.2" }
- Fixed #5127: Privacy plugin not handling large number of occurrences
- Fixed #5126: Privacy plugin breaks when replacing specific emojis
### 4.32.1 <small>February 23, 2023</small> { id="4.32.1" }
- Fixed code block spans interfering with copying
- Fixed #5077: Privacy plugin breaks image `alt` text encoding
- Fixed #5079: Privacy plugin removing `rel=me` on external links
### 4.32.0 <small>February 19, 2023</small> { id="4.32.0" }
- Added support for custom selectors for code annotations
- Added support for code line range selection for better sharing
### 4.31.0 <small>February 18, 2023</small> { id="4.31.0" }
- Added support for table of contents on blog index and archive pages
- Fixed #4512: Allow custom search field boosts (experimental)
### 4.30.2 <small>February 13, 2023</small> { id="4.30.2" } ### 4.30.2 <small>February 13, 2023</small> { id="4.30.2" }
- Fixed privacy plugin excludes not working (4.30.0 regression) - Fixed privacy plugin excludes not working (4.30.0 regression)

View File

@ -79,6 +79,9 @@ docker login -u ${GH_USERNAME} -p ${GHCR_TOKEN} ghcr.io
docker pull ghcr.io/${GH_USERNAME}/mkdocs-material-insiders docker pull ghcr.io/${GH_USERNAME}/mkdocs-material-insiders
``` ```
Should you wish to add additional plugins to the insiders container image, follow the steps
outlined in the [Getting Started guide](../getting-started.md#with-docker).
[^2]: [^2]:
Earlier, Insiders provided a dedicated Docker image which was available to Earlier, Insiders provided a dedicated Docker image which was available to
all sponsors. On March 21, 2021, the image was deprecated for the reasons all sponsors. On March 21, 2021, the image was deprecated for the reasons

View File

@ -88,14 +88,19 @@ a handful of them, [thanks to our awesome sponsors]!
## What's in it for me? ## What's in it for me?
The moment you [become a sponsor][how to become a sponsor], you'll get __immediate The moment you [become a sponsor][how to become a sponsor], you'll get __immediate
access to 23 additional features__ that you can start using right away, and access to 28 additional features__ that you can __start using now__, and
which are currently exclusively available to sponsors: which are currently exclusively available to sponsors:
<div class="mdx-columns" markdown> <div class="mdx-columns" markdown>
- [x] [Privacy plugin: optimization support] :material-alert-decagram:{ .mdx-pulse title="Added on February 6, 2023" } - [x] [Instant prefetching] :material-alert-decagram:{ .mdx-pulse title="Added on June 15, 2023" }
- [x] [Optimize plugin] :material-alert-decagram:{ .mdx-pulse title="Added on January 21, 2023" } - [x] [Social plugin: custom layouts] :material-alert-decagram:{ .mdx-pulse title="Added on May 8, 2023" }
- [x] [Navigation path] (Breadcrumbs) :material-alert-decagram:{ .mdx-pulse title="Added on January 14, 2023" } - [x] [Social plugin: background images] :material-alert-decagram:{ .mdx-pulse title="Added on May 8, 2023" }
- [x] [Code range selection]
- [x] [Code annotations: custom selectors]
- [x] [Privacy plugin: optimization support]
- [x] [Optimize plugin]
- [x] [Navigation path] (Breadcrumbs)
- [x] [Typeset plugin] - [x] [Typeset plugin]
- [x] [Privacy plugin: external links] - [x] [Privacy plugin: external links]
- [x] [Navigation subtitles] - [x] [Navigation subtitles]
@ -163,18 +168,20 @@ You can cancel your sponsorship anytime.[^5]
<div class="mdx-premium" markdown> <div class="mdx-premium" markdown>
**Special thanks** to our **premium sponsors**: **Silver sponsors**:
[![FastAPI]{ style="height: 120px" }](https://fastapi.tiangolo.com/){ target=_blank title="FastAPI" }
**Bronze sponsors**:
[![Cirrus CI]](https://cirrus-ci.org/){ target=_blank title="Cirrus CI" } [![Cirrus CI]](https://cirrus-ci.org/){ target=_blank title="Cirrus CI" }
[![Basler]](https://docs.baslerweb.com/){ target=_blank title="Basler" } [![Basler]](https://docs.baslerweb.com/){ target=_blank title="Basler" }
[![Hummingbot]](https://hummingbot.io/){ target=_blank title="Hummingbot" }
[![KX]](https://kx.com/){ target=_blank title="KX Systems" } [![KX]](https://kx.com/){ target=_blank title="KX Systems" }
[![Manticore Games]](https://www.manticoregames.com/){ target=_blank title="Manticore Games" } [![Manticore Games]](https://www.manticoregames.com/){ target=_blank title="Manticore Games" }
[![Prefect]](https://orion-docs.prefect.io/){ target=_blank title="Prefect" } [![Prefect]](https://orion-docs.prefect.io/){ target=_blank title="Prefect" }
[![Datadog]](https://datadoghq.com/){ target=_blank title="Datadog" } [![Datadog]](https://datadoghq.com/){ target=_blank title="Datadog" }
[![Zenoss]](https://zenoss.com/){ target=_blank title="Zenoss" } [![Zenoss]](https://zenoss.com/){ target=_blank title="Zenoss" }
[![Elli]](https://www.elli.eco/en/home){ target=_blank title="Elli - A Brand of the Volkswagen Group" } [![Posit]](https://docs.posit.co){ target=_blank title="Posit" }
[![RStudio]](https://solutions.rstudio.com){ target=_blank title="RStudio" }
[![n8n]](https://n8n.io){ target=_blank title="n8n" } [![n8n]](https://n8n.io){ target=_blank title="n8n" }
[![Dogado]](https://www.dogado.de){ target=_blank title="Dogado" } [![Dogado]](https://www.dogado.de){ target=_blank title="Dogado" }
[![World Wide Technology]](https://wwt.com){ target=_blank title="World Wide Technology" } [![World Wide Technology]](https://wwt.com){ target=_blank title="World Wide Technology" }
@ -185,27 +192,30 @@ You can cancel your sponsorship anytime.[^5]
[![Apex.AI]](https://www.apex.ai/){ target=_blank title="Apex.AI" } [![Apex.AI]](https://www.apex.ai/){ target=_blank title="Apex.AI" }
[![Jitterbit]](https://jitterbit.com/){ target=_blank title="Jitterbit" } [![Jitterbit]](https://jitterbit.com/){ target=_blank title="Jitterbit" }
[![Sparkfun]](https://sparkfun.com/){ target=_blank title="Sparkfun Electronics" } [![Sparkfun]](https://sparkfun.com/){ target=_blank title="Sparkfun Electronics" }
[![Automation Technology]](https://automationtechnology.de/){ target=_blank title="Automation Technology" }
[![Eccenca]](https://eccenca.com/){ target=_blank title="Eccenca" } [![Eccenca]](https://eccenca.com/){ target=_blank title="Eccenca" }
[![SealVault]](https://sealvault.org/){ target=_blank title="SealVault" }
[![Neptune]](https://neptune.ai/){ target=_blank title="Neptune" } [![Neptune]](https://neptune.ai/){ target=_blank title="Neptune" }
[![Cash App]](https://cash.app/){ target=_blank title="Cash App" } [![Cash App]](https://cash.app/){ target=_blank title="Cash App" }
[![RackN]](https://rackn.com/){ target=_blank title="RackN" } [![RackN]](https://rackn.com/){ target=_blank title="RackN" }
[![CivicActions]](https://civicactions.com/){ target=_blank title="CivicActions" } [![CivicActions]](https://civicactions.com/){ target=_blank title="CivicActions" }
[![bitcrowd]](https://bitcrowd.net/){ target=_blank title="bitcrowd" }
[![GetScreen.me]](https://getscreen.me/){ target=_blank title="GetScreen.me" }
[![BotCity]](https://botcity.dev/){ target=_blank title="BotCity" }
[![Springer Nature Technology]](https://www.springernature.com/gp){ target=_blank title="Springer Nature Technology" }
[![Kolena]](https://kolena.io/){ target=_blank title="Kolena" }
[![Evergiving]](https://www.evergiving.com/){ target=_blank title="Evergiving" }
[![Koor]](https://koor.tech/){ target=_blank title="Koor" }
</div> </div>
[FastAPI]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-fastapi.png
[Cirrus CI]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cirrus-ci.png [Cirrus CI]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cirrus-ci.png
[Basler]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-basler.png [Basler]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-basler.png
[Hummingbot]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-hummingbot.png
[KX]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-kx.png [KX]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-kx.png
[Manticore Games]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-manticore-games.png [Manticore Games]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-manticore-games.png
[Account technologies]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-account-technologies.png
[Prefect]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-prefect.png [Prefect]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-prefect.png
[Datadog]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-datadog.png [Datadog]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-datadog.png
[Zenoss]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-zenoss.png [Zenoss]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-zenoss.png
[Elli]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-elli.png [Posit]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-posit.png
[RStudio]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-rstudio.png
[n8n]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-n8n.png [n8n]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-n8n.png
[Dogado]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-dogado.png [Dogado]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-dogado.png
[World Wide Technology]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-wwt.png [World Wide Technology]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-wwt.png
@ -216,13 +226,18 @@ You can cancel your sponsorship anytime.[^5]
[Apex.AI]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-apex-ai.png [Apex.AI]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-apex-ai.png
[Jitterbit]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-jitterbit.png [Jitterbit]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-jitterbit.png
[Sparkfun]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sparkfun.png [Sparkfun]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sparkfun.png
[Automation Technology]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-automation-technology.png
[Eccenca]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-eccenca.png [Eccenca]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-eccenca.png
[SealVault]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sealvault.png
[Neptune]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-neptune-ai.png [Neptune]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-neptune-ai.png
[Cash App]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cashapp.png [Cash App]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cashapp.png
[RackN]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-rackn.png [RackN]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-rackn.png
[CivicActions]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-civic-actions.png [CivicActions]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-civic-actions.png
[bitcrowd]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-bitcrowd.png
[GetScreen.me]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-getscreenme.png
[BotCity]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-botcity.png
[Springer Nature Technology]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sn-technology.png
[Kolena]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-kolena.png
[Evergiving]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-evergiving.png
[Koor]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-koor.png
<hr /> <hr />
@ -287,7 +302,7 @@ are released for general availability.
- [x] [Blog plugin: related links] - [x] [Blog plugin: related links]
- [x] [Blog plugin: custom index pages] - [x] [Blog plugin: custom index pages]
- [x] [Tags plugin: additional indexes] - [x] [Tags plugin: additional indexes]
- [x] [Tags plugin: allow list] and [custom sorting] - [x] [Tags plugin: allow list] + [custom sorting]
- [x] [Navigation subtitles] - [x] [Navigation subtitles]
[Meta plugin]: ../reference/index.md#built-in-meta-plugin [Meta plugin]: ../reference/index.md#built-in-meta-plugin
@ -302,21 +317,30 @@ are released for general availability.
- [x] [Optimize plugin] - [x] [Optimize plugin]
- [x] [Typeset plugin] - [x] [Typeset plugin]
- [x] [Privacy plugin: external links]
- [x] [Navigation path] (Breadcrumbs) - [x] [Navigation path] (Breadcrumbs)
- [x] [Privacy plugin: optimization support] - [x] [Privacy plugin: optimization support]
- [ ] Code block line wrapping - [x] [Privacy plugin: external links]
- [x] [Instant prefetching]
[Optimize plugin]: ../setup/building-an-optimized-site.md#built-in-optimize-plugin [Optimize plugin]: ../setup/building-an-optimized-site.md#built-in-optimize-plugin
[Typeset plugin]: ../reference/index.md#built-in-typeset-plugin [Typeset plugin]: ../reference/index.md#built-in-typeset-plugin
[Privacy plugin: external links]: ../setup/ensuring-data-privacy.md#+privacy.external_links [Privacy plugin: external links]: ../setup/ensuring-data-privacy.md#+privacy.links
[Privacy plugin: optimization support]: ../setup/ensuring-data-privacy.md#+privacy.external_assets_include [Privacy plugin: optimization support]: ../setup/ensuring-data-privacy.md#+privacy.assets_include
[Navigation path]: ../setup/setting-up-navigation.md#navigation-path [Navigation path]: ../setup/setting-up-navigation.md#navigation-path
[Instant previews]: https://twitter.com/squidfunk/status/1466794654213492743 [Instant prefetching]: ../setup/setting-up-navigation.md#instant-prefetching
#### $ 24,000 Blockpaprika #### $ 24,000 Blockpaprika
- [ ] [Instant previews] - [x] [Social plugin: custom layouts]
- [x] [Social plugin: background images]
- [x] [Code range selection]
- [x] [Code annotations: custom selectors]
- [ ] Code line wrap button
[Social plugin: custom layouts]: ../setup/setting-up-social-cards.md#customization
[Social plugin: background images]: ../setup/setting-up-social-cards.md#+social.cards_layout_params.background_image
[Code range selection]: ../reference/code-blocks.md#code-selection-button
[Code annotations: custom selectors]: ../reference/code-blocks.md#custom-selectors
### Goals completed ### Goals completed
@ -343,14 +367,13 @@ can be used by all users.
#### $ 8,000 Scotch Bonnet #### $ 8,000 Scotch Bonnet
- [x] [Social cards] - [x] [Social cards]
- [x] [Code annotations: anchor links] - [x] Code annotations: anchor links
- [x] [Code annotations: strip comments] - [x] [Code annotations: strip comments]
- [x] [Tag icons] - [x] [Tag icons]
- [x] [Table of contents anchor following] - [x] [Table of contents anchor following]
- [x] Sidebars automatically scroll to active item - [x] Sidebars automatically scroll to active item
[Social cards]: ../setup/setting-up-social-cards.md [Social cards]: ../setup/setting-up-social-cards.md
[Code annotations: anchor links]: ../reference/code-blocks.md#anchor-links
[Code annotations: strip comments]: ../reference/code-blocks.md#stripping-comments [Code annotations: strip comments]: ../reference/code-blocks.md#stripping-comments
[Tag icons]: ../setup/setting-up-tags.md#tag-icons-and-identifiers [Tag icons]: ../setup/setting-up-tags.md#tag-icons-and-identifiers
[Table of contents anchor following]: ../setup/setting-up-navigation.md#anchor-following [Table of contents anchor following]: ../setup/setting-up-navigation.md#anchor-following

View File

@ -38,11 +38,14 @@ contents:
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: 3.x python-version: 3.x
- uses: actions/cache@v2 - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV # (3)!
- uses: actions/cache@v3
with: with:
key: ${{ github.ref }} key: mkdocs-material-${{ env.cache_id }}
path: .cache path: .cache
- run: pip install mkdocs-material # (3)! restore-keys: |
mkdocs-material-
- run: pip install mkdocs-material # (4)!
- run: mkdocs gh-deploy --force - run: mkdocs gh-deploy --force
``` ```
@ -51,7 +54,16 @@ contents:
2. At some point, GitHub renamed `master` to `main`. If your default branch 2. At some point, GitHub renamed `master` to `main`. If your default branch
is named `master`, you can safely remove `main`, vice versa. is named `master`, you can safely remove `main`, vice versa.
3. This is the place to install further [MkDocs plugins] or Markdown 3. Store the `cache_id` environmental variable to access it later during cache
`key` creation. The name is case-sensitive, so be sure to align it with `${{ env.cache_id }}`.
- The `--utc` option makes sure that each workflow runner uses the same time zone.
- The `%V` format assures a cache update once a week.
- You can change the format to `%F` to have daily cache updates.
You can read the [manual page] to learn more about the formatting options of the `date` command.
4. This is the place to install further [MkDocs plugins] or Markdown
extensions with `pip` to be used during the build: extensions with `pip` to be used during the build:
``` sh ``` sh
@ -81,10 +93,13 @@ contents:
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: 3.x python-version: 3.x
- uses: actions/cache@v2 - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v3
with: with:
key: ${{ github.ref }} key: mkdocs-material-${{ env.cache_id }}
path: .cache path: .cache
restore-keys: |
mkdocs-material-
- run: apt-get install pngquant # (1)! - run: apt-get install pngquant # (1)!
- run: pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git - run: pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
- run: mkdocs gh-deploy --force - run: mkdocs gh-deploy --force
@ -116,6 +131,7 @@ Your documentation should shortly appear at `<username>.github.io/<repository>`.
[built-in optimize plugin]: setup/building-an-optimized-site.md#built-in-optimize-plugin [built-in optimize plugin]: setup/building-an-optimized-site.md#built-in-optimize-plugin
[GitHub secrets]: https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets [GitHub secrets]: https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
[publishing source branch]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site [publishing source branch]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site
[manual page]: https://man7.org/linux/man-pages/man1/date.1.html
### with MkDocs ### with MkDocs
@ -175,6 +191,34 @@ workflow in action.
Your documentation should shortly appear at `<username>.gitlab.io/<repository>`. Your documentation should shortly appear at `<username>.gitlab.io/<repository>`.
## Other
Since we can't cover all possible platforms, we rely on community contributed
guides that explain how to deploy websites built with Material for MkDocs to
other providers:
<div class="mdx-columns" markdown>
- [:simple-azuredevops: Azure][Azure]
- [:simple-cloudflarepages: Cloudflare Pages][Cloudflare Pages]
- [:simple-digitalocean: DigitalOcean][DigitalOcean]
- [:simple-netlify: Netlify][Netlify]
- [:simple-vercel: Vercel][Vercel]
</div>
!!! note "Enterprise support"
If you're using Material for MkDocs in your organization and need
assistance, e.g., to __reduce build times__, __improve performance__ or
ensure compliance, [__get in touch__](mailto:contact@squidfunk.com)
to discuss our __enterprise support__ offerings. We're happy to help!
[GitLab Pages]: https://gitlab.com/pages [GitLab Pages]: https://gitlab.com/pages
[GitLab CI]: https://docs.gitlab.com/ee/ci/ [GitLab CI]: https://docs.gitlab.com/ee/ci/
[masked custom variables]: https://docs.gitlab.com/ee/ci/variables/#create-a-custom-variable-in-the-ui [masked custom variables]: https://docs.gitlab.com/ee/ci/variables/#create-a-custom-variable-in-the-ui
[Azure]: https://bawmedical.co.uk/t/publishing-a-material-for-mkdocs-site-to-azure-with-automatic-branch-pr-preview-deployments/763
[Cloudflare Pages]: https://www.starfallprojects.co.uk/projects/deploy-host-docs/deploy-mkdocs-material-cloudflare/
[DigitalOcean]: https://www.starfallprojects.co.uk/projects/deploy-host-docs/deploy-mkdocs-material-digitalocean-app-platform/
[Netlify]: https://www.starfallprojects.co.uk/projects/deploy-host-docs/deploy-mkdocs-material-netlify/
[Vercel]: https://www.starfallprojects.co.uk/projects/deploy-host-docs/deploy-mkdocs-material-vercel/

View File

@ -21,6 +21,8 @@ following lines to `mkdocs.yml`:
markdown_extensions: markdown_extensions:
- pymdownx.highlight: - pymdownx.highlight:
anchor_linenums: true anchor_linenums: true
line_spans: __span
pygments_lang_class: true
- pymdownx.inlinehilite - pymdownx.inlinehilite
- pymdownx.snippets - pymdownx.snippets
- pymdownx.superfences - pymdownx.superfences
@ -81,6 +83,47 @@ theme:
``` ```
```` ````
### Code selection button
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.32.0][Insiders] ·
:octicons-beaker-24: Experimental
Code blocks can include a button to allow for the selection of line ranges by
the user, which is perfect for linking to a specific subsection of a code block. This allows the user to apply [line highlighting] dynamically. Add the following
to `mkdocs.yml` to enable it globally:
``` yaml
theme:
features:
- content.code.select
```
??? info "Enabling or disabling code selection buttons for a specific code block"
If you don't want to enable code selection buttons globally, you can enable
them for a specific code block by using a slightly different syntax based on
the [Attribute Lists] extension:
```` yaml
``` { .yaml .select }
# Code block content
```
````
Note that the language shortcode which has to come first must now also be
prefixed by a `.`. Similarly, the selection button can also be disabled for
a specific code block:
```` { .yaml .no-select }
``` { .yaml .no-select }
# Code block content
```
````
[Insiders]: ../insiders/index.md
[line highlighting]: #highlighting-specific-lines
### Code annotations ### Code annotations
[:octicons-tag-24: 8.0.0][Code annotations support] · [:octicons-tag-24: 8.0.0][Code annotations support] ·
@ -119,24 +162,45 @@ theme:
[Code annotations support]: https://github.com/squidfunk/mkdocs-material/releases/tag/8.0.0 [Code annotations support]: https://github.com/squidfunk/mkdocs-material/releases/tag/8.0.0
[Attribute Lists]: ../setup/extensions/python-markdown.md#attribute-lists [Attribute Lists]: ../setup/extensions/python-markdown.md#attribute-lists
#### Anchor links #### Custom selectors :material-alert-decagram:{ .mdx-pulse title="Added on February 19, 2023" }
[:octicons-tag-24: 8.5.0][Anchor links support] · [:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.32.0][Insiders] ·
:octicons-beaker-24: Experimental :octicons-beaker-24: Experimental
In order to be able to link to code annotations and share them more easily, an Normally, code annotations can only be [placed in comments], as comments can be
anchor link is automatically added to each annotation, which you can copy via considered safe for placement. However, sometimes it might be necessary to place
right click or open in a new tab: annotations in parts of the code block where comments are not allowed, e.g. in
strings.
Additional selectors can be set per-language:
``` yaml ``` yaml
# (1)! extra:
annotate:
json: [.s2] # (1)!
``` ```
1. If you ++cmd++ :material-plus::material-cursor-default-outline: me, I'm 1. [`.s2`][s2] is the name of the lexeme that [Pygments] generates for double-quoted
rendered open in a new tab. You can also right-click me to __copy link strings. If you want to use a code annotation in another lexeme than a
address__ to share me with others. comment, inspect the code block and determine which lexeme needs to be added
to the list of additional selectors.
[Anchor links support]: https://github.com/squidfunk/mkdocs-material/releases/tag/8.5.0 __Important__: Code annotations cannot be split between lexemes.
Now, code annotations can be used from within strings in JSON:
``` json
{
"key": "value (1)"
}
```
1. :man_raising_hand: I'm a code annotation! I can contain `code`, __formatted
text__, images, ... basically anything that can be written in Markdown.
[placed in comments]: #adding-annotations
[s2]: https://github.com/squidfunk/mkdocs-material/blob/87d5ca487b9d9ab95c41ee72813149d214048693/src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss#L45
## Usage ## Usage

View File

@ -182,3 +182,150 @@ numbers, filesizes, dates and month names. See the [tablesort documentation]
[tablesort]: http://tristen.ca/tablesort/demo/ [tablesort]: http://tristen.ca/tablesort/demo/
[instant loading]: ../setup/setting-up-navigation.md#instant-loading [instant loading]: ../setup/setting-up-navigation.md#instant-loading
### Import table from file
[:octicons-cpu-24: Plugin][table-reader-docs]
You can also import data from a CSV or Excel file using the plugin [`mkdocs-table-reader-plugin`][table-reader-docs].
First, you will need to install it with `pip`:
```sh
pip install mkdocs-table-reader-plugin
```
Then extend the `mkdocs.yml` file like this:
```yaml
plugins:
- table-reader
```
Then, it is a simple process to import the data in to the Markdown files.
=== "Import data from :fontawesome-solid-file-csv: CSV file"
Let's use a :fontawesome-solid-file-csv: CSV in the local directory. The file may look like this:
```csv title="./data.csv"
col1,col2,col3
r1c1,r1c2,r1c3
r2c1,r2c2,r2c3
r3c1,r3c2,r3c3
```
You can then add it to your :fontawesome-solid-file-arrow-down: Markdown page like this:
```md title="./markdown.md"
...
{{ read_csv('./data.csv') }}
...
```
<div class="result" markdown>
...
col1|col2|col3
----|----|----
r1c1|r1c2|r1c3
r2c1|r2c2|r2c3
r3c1|r3c2|r3c3
...
</div>
=== "Import data from :fontawesome-solid-file-excel: Excel file"
Let's use an :fontawesome-solid-file-excel: Excel file in the local directory. The file may look like this:
![][excel-file]{width="300px"}
[excel-file]: https://i.stack.imgur.com/f32ks.png
And you can add it to your :fontawesome-solid-file-arrow-down: Markdown page like this:
```md title="./markdown.md"
...
{{ read_excel('./Book1.xlsx', engine='openpyxl') }}
...
```
<div class="result" markdown>
It will then return a result like this:
col1|col2|col3
----|----|----
r1c1|r1c2|r1c3
r2c1|r2c2|r2c3
r3c1|r3c2|r3c3
</div>
!!! warning "Warning"
You may receive an error if you use `engine='openpyxl'`.
If this happens, you can resolve it by installing it using `pip`:
```sh
pip install openpyxl
```
Read more here: [pandas.read_excel][pandas-read_excel-engine]
[pandas-read_excel-engine]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#:~:text=enginestr%2C%20default%20None
!!! tip "Pro Tip: Multiple Sheets"
If your Excel file contains multiple sheets, you may want to extend the function by adding the `sheet_name` parameter.
It would look like this:
```md title="./markdown.md"
...
{{ read_excel('./Book1.xlsx', engine='openpyxl', sheet_name="Sheet1") }}
...
```
By default, Pandas will grab the first sheet in the workbook.
Read more here: [pandas.read_excel][pandas-read_excel-sheet_name]
[pandas-read_excel-sheet_name]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#:~:text=sheet_namestr%2C%20int%2C%20list%2C%20or%20None%2C%20default%200
=== "Import data from other file types"
The plugin [`mkdocs-table-reader-plugin`][table-reader-docs] also provides readers for other formats:
<div class="mdx-columns" markdown>
- [`read_csv`][table-reader-read_csv]
- [`read_fwf`][table-reader-read_fwf]
- [`read_yaml`][table-reader-read_yaml]
- [`read_table`][table-reader-read_table]
- [`read_json`][table-reader-read_json]
- [`read_excel`][table-reader-read_excel]
- [`read_raw`][table-reader-read_raw]
</div>
You can read more on their Docs website: [mkdocs-table-reader-plugin][table-reader-docs]
[table-reader-docs]: https://timvink.github.io/mkdocs-table-reader-plugin/
[table-reader-read_csv]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_csv
[table-reader-read_fwf]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_fwf
[table-reader-read_yaml]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_yaml
[table-reader-read_table]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_table
[table-reader-read_json]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_json
[table-reader-read_excel]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_excel
[table-reader-read_raw]: https://timvink.github.io/mkdocs-table-reader-plugin/readers/#read_raw

View File

@ -106,7 +106,7 @@ When [Caret & Tilde][Caret, Mark & Tilde] are enabled, text can be sub- and
superscripted with a simple syntax, which is more convenient than directly superscripted with a simple syntax, which is more convenient than directly
using the corresponding [`sub`][sub] and [`sup`][sup] HTML tags: using the corresponding [`sub`][sub] and [`sup`][sup] HTML tags:
``` markdown title="Text with sub- und superscripts" ``` markdown title="Text with sub- and superscripts"
- H~2~O - H~2~O
- A^T^A - A^T^A
``` ```

View File

@ -63,7 +63,7 @@ See additional configuration options:
[Simple Icons]: https://simpleicons.org/ [Simple Icons]: https://simpleicons.org/
[Attribute Lists]: ../setup/extensions/python-markdown.md#attribute-lists [Attribute Lists]: ../setup/extensions/python-markdown.md#attribute-lists
[Emoji]: ../setup/extensions/python-markdown-extensions.md#emoji [Emoji]: ../setup/extensions/python-markdown-extensions.md#emoji
[Emoji with custom icons]: ../setup/extensions/python-markdown-extensions.md#custom-icons [Emoji with custom icons]: ../setup/extensions/python-markdown-extensions.md#+pymdownx.emoji.options.custom_icons
## Usage ## Usage

View File

@ -172,7 +172,37 @@ hash fragment to the image URL:
</div> </div>
!!! warning "Requirements when using [custom color schemes]"
The built-in [color schemes] define the aforementioned hash fragments, but
if you're using [custom color schemes], you'll also have to add the
following selectors to your scheme, depending on whether it's a light or
dark scheme:
=== "Custom light scheme"
``` css
[data-md-color-scheme="custom-light"] img[src$="#only-dark"],
[data-md-color-scheme="custom-light"] img[src$="#gh-dark-mode-only"] {
display: none; /* Hide dark images in light mode */
}
```
=== "Custom dark scheme"
``` css
[data-md-color-scheme="custom-dark"] img[src$="#only-light"],
[data-md-color-scheme="custom-dark"] img[src$="#gh-light-mode-only"] {
display: none; /* Hide light images in dark mode */
}
```
Remember to change `#!css "custom-light"` and `#!css "custom-dark"` to the
name of your scheme.
[Light and dark mode support]: https://github.com/squidfunk/mkdocs-material/releases/tag/8.1.1 [Light and dark mode support]: https://github.com/squidfunk/mkdocs-material/releases/tag/8.1.1
[color palette toggle]: ../setup/changing-the-colors.md#color-palette-toggle [color palette toggle]: ../setup/changing-the-colors.md#color-palette-toggle
[Zelda light world]: ../assets/images/zelda-light-world.png#only-light [Zelda light world]: ../assets/images/zelda-light-world.png#only-light
[Zelda dark world]: ../assets/images/zelda-dark-world.png#only-dark [Zelda dark world]: ../assets/images/zelda-dark-world.png#only-dark
[color schemes]: ../setup/changing-the-colors.md#color-scheme
[custom color schemes]: ../setup/changing-the-colors.md#custom-color-schemes

View File

@ -259,7 +259,7 @@ e.g. to add indexing policies for search engines via the `robots` property:
{% extends "base.html" %} {% extends "base.html" %}
{% block extrahead %} {% block extrahead %}
<meta property="robots" content="noindex, nofollow" /> <meta name="robots" content="noindex, nofollow" />
{% endblock %} {% endblock %}
``` ```
@ -276,9 +276,9 @@ template override, e.g.:
{% block extrahead %} {% block extrahead %}
{% if page and page.meta and page.meta.robots %} {% if page and page.meta and page.meta.robots %}
<meta property="robots" content="{{ page.meta.robots }}" /> <meta name="robots" content="{{ page.meta.robots }}" />
{% else %} {% else %}
<meta property="robots" content="index, follow" /> <meta name="robots" content="index, follow" />
{% endif %} {% endif %}
{% endblock %} {% endblock %}
``` ```

198
docs/reference/math.md Normal file
View File

@ -0,0 +1,198 @@
---
icon: material/alphabet-greek
---
# Math
[MathJax] and [KaTeX] are two popular libraries for displaying
mathematical content in browsers. Although both libraries offer similar
functionality, they use different syntaxes and have different configuration
options. This documentation site provides information on how to integrate them
with Material for MkDocs easily.
[MathJax]: https://www.mathjax.org/
[LaTeX]: https://en.wikibooks.org/wiki/LaTeX/Mathematics
[MathML]: https://en.wikipedia.org/wiki/MathML
[AsciiMath]: http://asciimath.org/
[KaTeX]: https://katex.org/
## Configuration
The following configuration enables support for rendering block and
inline block equations using [MathJax] and [KaTeX].
### MathJax
[MathJax] is a powerful and flexible library that supports multiple input formats,
such as [LaTeX], [MathML], [AsciiMath], as well as various output formats like
HTML, SVG, MathML. To use MathJax within your project, add the following lines
to your `mkdocs.yml`.
=== ":octicons-file-code-16: `docs/javascripts/mathjax.js`"
``` js
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
document$.subscribe(() => { // (1)!
MathJax.typesetPromise()
})
```
1. This integrates MathJax with [instant loading].
=== ":octicons-file-code-16: `mkdocs.yml`"
``` yaml
markdown_extensions:
- pymdownx.arithmatex:
generic: true
extra_javascript:
- javascripts/mathjax.js
- https://polyfill.io/v3/polyfill.min.js?features=es6
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
```
See additional configuration options:
- [Arithmatex]
[Arithmatex]: ../setup/extensions/python-markdown-extensions.md#arithmatex
[instant loading]: ../setup/setting-up-navigation.md#instant-loading
### KaTeX
[KaTeX] is a lightweight library that focuses on speed and simplicity. It
supports a subset of LaTeX syntax and can render math to HTML and SVG. To use
[KaTeX] within your project, add the following lines to your `mkdocs.yml`.
=== ":octicons-file-code-16: `docs/javascripts/katex.js`"
``` js
document$.subscribe(({ body }) => { // (1)!
renderMathInElement(body, {
delimiters: [
{ left: "$$", right: "$$", display: true },
{ left: "$", right: "$", display: false },
{ left: "\\(", right: "\\)", display: false },
{ left: "\\[", right: "\\]", display: true }
],
})
})
```
1. This integrates KaTeX with [instant loading].
=== ":octicons-file-code-16: `mkdocs.yml`"
``` yaml
extra_javascript:
- javascripts/katex.js
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.js # (1)!
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/contrib/auto-render.min.js
extra_css:
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.css
```
1. Alternatively, you can add these JavaScript and CSS files via `script` tags by overriding HTML files.
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
</script>
## Usage
### Using block syntax
Blocks must be enclosed in `#!latex $$...$$` or `#!latex \[...\]` on separate
lines:
``` latex title="block syntax"
$$
\operatorname{ker} f=\{g\in G:f(g)=e_{H}\}{\mbox{.}}
$$
```
<div class="result" markdown>
$$
\operatorname{ker} f=\{g\in G:f(g)=e_{H}\}{\mbox{.}}
$$
</div>
### Using inline block syntax
Inline blocks must be enclosed in `#!latex $...$` or `#!latex \(...\)`:
``` latex title="inline syntax"
The homomorphism $f$ is injective if and only if its kernel is only the
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
that $f(a)=f(b)$.
```
<div class="result" markdown>
The homomorphism $f$ is injective if and only if its kernel is only the
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
that $f(a)=f(b)$.
</div>
## Comparing MathJax and KaTeX
When deciding between MathJax and KaTeX, there are several key factors to
consider:
- __Speed__: KaTeX is generally faster than MathJax. If your site requires rendering large
quantities of complex equations quickly, KaTeX may be the better choice.
- __Syntax Support__: MathJax supports a wider array of LaTeX commands and can
process a variety of mathematical markup languages (like AsciiMath and MathML).
If you need advanced LaTeX features, MathJax may be more suitable.
- __Output Format__: Both libraries support HTML and SVG outputs. However,
MathJax also offers MathML output, which can be essential for accessibility, as
it is readable by screen readers.
- __Configurability__: MathJax provides a range of configuration options,
allowing for more precise control over its behavior. If you have specific
rendering requirements, MathJax might be a more flexible choice.
- __Browser Support__: While both libraries work well in modern browsers,
MathJax has broader compatibility with older browsers. If your audience uses a
variety of browsers, including older ones, MathJax might be a safer option.
In summary, KaTeX shines with its speed and simplicity, whereas MathJax offers
more features and better compatibility at the expense of speed. The choice
between the two will largely depend on your specific needs and constraints.

View File

@ -1,120 +0,0 @@
---
icon: material/alphabet-greek
---
# MathJax
[MathJax] is a beautiful and accessible way to display mathematical content
in the browser, adds support for mathematical typesetting in different notations
(e.g. [LaTeX], [MathML], [AsciiMath]), and can be easily integrated with
Material for MkDocs.
[MathJax]: https://www.mathjax.org/
[LaTeX]: https://en.wikibooks.org/wiki/LaTeX/Mathematics
[MathML]: https://en.wikipedia.org/wiki/MathML
[AsciiMath]: http://asciimath.org/
## Configuration
This configuration enables support for rendering block and inline block
equations through [MathJax]. Create a configuration file and add the following
lines to `mkdocs.yml`:
=== ":octicons-file-code-16: `docs/javascripts/mathjax.js`"
``` js
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
document$.subscribe(() => { // (1)!
MathJax.typesetPromise()
})
```
1. This integrates MathJax with [instant loading].
=== ":octicons-file-code-16: `mkdocs.yml`"
``` yaml
markdown_extensions:
- pymdownx.arithmatex:
generic: true
extra_javascript:
- javascripts/mathjax.js
- https://polyfill.io/v3/polyfill.min.js?features=es6
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
```
See additional configuration options:
- [Arithmatex]
[Arithmatex]: ../setup/extensions/python-markdown-extensions.md#arithmatex
[instant loading]: ../setup/setting-up-navigation.md#instant-loading
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
</script>
## Usage
### Using block syntax
Blocks must be enclosed in `#!latex $$...$$` or `#!latex \[...\]` on separate
lines:
``` latex title="MathJax, block syntax"
$$
\operatorname{ker} f=\{g\in G:f(g)=e_{H}\}{\mbox{.}}
$$
```
<div class="result" markdown>
$$
\operatorname{ker} f=\{g\in G:f(g)=e_{H}\}{\mbox{.}}
$$
</div>
### Using inline block syntax
Inline blocks must be enclosed in `#!latex $...$` or `#!latex \(...\)`:
``` latex title="MathJax, inline syntax"
The homomorphism $f$ is injective if and only if its kernel is only the
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
that $f(a)=f(b)$.
```
<div class="result" markdown>
The homomorphism $f$ is injective if and only if its kernel is only the
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
that $f(a)=f(b)$.
</div>

View File

@ -98,7 +98,7 @@
"items": { "items": {
"title": "Path to JavaScript file", "title": "Path to JavaScript file",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/customization/#additional-javascript", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/customization/#additional-javascript",
"pattern": "\\.js($|\\?)" "pattern": "\\.m?js($|\\?)"
}, },
"uniqueItems": true, "uniqueItems": true,
"minItems": 1 "minItems": 1

File diff suppressed because it is too large Load Diff

View File

@ -531,6 +531,11 @@
"markdownDescription": "https://facelessuser.github.io/pymdown-extensions/extensions/snippets/#options", "markdownDescription": "https://facelessuser.github.io/pymdown-extensions/extensions/snippets/#options",
"type": "boolean", "type": "boolean",
"default": true "default": true
},
"url_download": {
"markdownDescription": "https://facelessuser.github.io/pymdown-extensions/extensions/snippets/#options",
"type": "boolean",
"default": false
} }
}, },
"additionalProperties": false "additionalProperties": false

View File

@ -325,6 +325,17 @@
"default": { "default": {
"title": "Default version", "title": "Default version",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-versioning/#version-warning", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-versioning/#version-warning",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"default": "stable" "default": "stable"
} }
} }

View File

@ -27,6 +27,12 @@
"type": "string", "type": "string",
"default": "blog" "default": "blog"
}, },
"blog_toc": {
"title": "Blog table of contents",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.blog_toc",
"type": "boolean",
"default": false
},
"post_date_format": { "post_date_format": {
"title": "Format string for post dates", "title": "Format string for post dates",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.post_date_format", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.post_date_format",
@ -203,6 +209,12 @@
} }
] ]
}, },
"archive_toc": {
"title": "Archive table of contents",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.archive_toc",
"type": "boolean",
"default": false
},
"categories": { "categories": {
"title": "Categories", "title": "Categories",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories",
@ -241,12 +253,6 @@
"type": "string", "type": "string",
"default": "\"-\"" "default": "\"-\""
}, },
"categories_toc": {
"title": "Category index table of contents",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories_toc",
"type": "boolean",
"default": false
},
"categories_allowed": { "categories_allowed": {
"title": "Categories allowed", "title": "Categories allowed",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories_allowed", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories_allowed",
@ -257,6 +263,12 @@
"uniqueItems": true, "uniqueItems": true,
"default": [] "default": []
}, },
"categories_toc": {
"title": "Categories table of contents",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories_toc",
"type": "boolean",
"default": false
},
"pagination": { "pagination": {
"title": "Pagination", "title": "Pagination",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.pagination", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.pagination",

View File

@ -24,62 +24,60 @@
"concurrency": { "concurrency": {
"title": "Concurrency (number of CPUs)", "title": "Concurrency (number of CPUs)",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.concurrency", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.concurrency",
"type": "number" "type": "number",
"default": 1
}, },
"external_assets": { "assets": {
"title": "External assets", "title": "Process external assets",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_assets", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets",
"oneOf": [
{
"title": "Bundle external assets",
"enum": ["bundle"]
},
{
"title": "Report external assets as warnings",
"enum": ["report"]
}
],
"default": "bundle"
},
"external_assets_dir": {
"title": "External assets download directory",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_assets_dir",
"type": "string",
"default": "assets/external"
},
"external_assets_include": {
"title": "External assets to include",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_assets_include",
"type": "array",
"items": {
"title": "External assets matching this pattern will be downloaded",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_assets_include",
"pattern": ".*"
},
"uniqueItems": true,
"minItems": 1
},
"external_assets_exclude": {
"title": "External assets to exclude",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_assets_exclude",
"type": "array",
"items": {
"title": "External assets matching this pattern will not be downloaded",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_assets_exclude",
"pattern": ".*"
},
"uniqueItems": true,
"minItems": 1
},
"external_links": {
"title": "External links",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_links",
"type": "boolean", "type": "boolean",
"default": true "default": true
}, },
"external_links_attr_map": { "assets_fetch": {
"title": "Download external assets",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets_fetch",
"type": "boolean",
"default": true
},
"assets_fetch_dir": {
"title": "Download external assets to this directory",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets_fetch_dir",
"type": "string",
"default": "assets/external"
},
"assets_include": {
"title": "External assets to include",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets_include",
"type": "array",
"items": {
"title": "External assets matching this pattern will be downloaded",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets_include",
"pattern": ".*"
},
"uniqueItems": true,
"minItems": 1
},
"assets_exclude": {
"title": "External assets to exclude",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets_exclude",
"type": "array",
"items": {
"title": "External assets matching this pattern will not be downloaded",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.assets_exclude",
"pattern": ".*"
},
"uniqueItems": true,
"minItems": 1
},
"links": {
"title": "Process external links",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.links",
"type": "boolean",
"default": true
},
"links_attr_map": {
"title": "Custom attributes to add to external links", "title": "Custom attributes to add to external links",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_links_attr_map", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.links_attr_map",
"type": "object", "type": "object",
"patternProperties": { "patternProperties": {
"^[\\w_]+$": { "^[\\w_]+$": {
@ -87,9 +85,9 @@
} }
} }
}, },
"external_links_noopener": { "links_noopener": {
"title": "Behavior for external links that open in new windows", "title": "Behavior for external links that open in new windows",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.external_links_noopener", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/ensuring-data-privacy/#+privacy.links_noopener",
"type": "boolean", "type": "boolean",
"default": true "default": true
} }

View File

@ -15,51 +15,120 @@
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#built-in-social-plugin", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#built-in-social-plugin",
"type": "object", "type": "object",
"properties": { "properties": {
"enabled": {
"title": "Enable plugin",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.enabled",
"type": "boolean",
"default": true
},
"concurrency": {
"title": "Concurrency (number of CPUs)",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.concurrency",
"type": "number",
"default": 1
},
"cards": { "cards": {
"title": "Social card generation", "title": "Social cards",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards",
"type": "boolean", "type": "boolean",
"default": true "default": true
}, },
"cards_color": {
"title": "Social card color palette",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_color",
"type": "object",
"properties": {
"fill": {
"title": "Background fill color",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_color",
"type": "string"
},
"text": {
"title": "Foreground text color",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_color",
"type": "string"
}
},
"additionalProperties": false,
"required": [
"fill",
"text"
]
},
"cards_font": {
"$ref": "../assets/fonts.json"
},
"cards_dir": { "cards_dir": {
"title": "Social card directory", "title": "Social cards directory",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_dir", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_dir",
"type": "string", "type": "string",
"default": "assets/images/social" "default": "assets/images/social"
},
"cards_layout_dir": {
"title": "Social cards layout directory",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_layout_dir",
"type": "string",
"default": "layouts"
},
"cards_layout": {
"title": "Social cards layout",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_layout",
"default": "default",
"enum": [
"default",
"default/accent",
"default/invert",
"default/variant"
]
},
"cards_layout_options": {
"title": "Social cards layout options",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_layout_options",
"type": "object"
},
"cards_include": {
"title": "Pages or folders to include",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_include",
"type": "array",
"items": {
"title": "Pages or folders matching this pattern will be included",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_include",
"pattern": ".*"
},
"uniqueItems": true,
"minItems": 1
},
"cards_exclude": {
"title": "Pages or folders to exclude",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_exclude",
"type": "array",
"items": {
"title": "Pages or folders matching this pattern will be excluded",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cards_exclude",
"pattern": ".*"
},
"uniqueItems": true,
"minItems": 1
},
"debug": {
"title": "Debug mode",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.debug",
"type": "boolean",
"default": true
},
"debug_on_build": {
"title": "Always disable debug mode on build",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.debug_on_build",
"type": "boolean",
"default": false
},
"debug_grid": {
"title": "Debug grid",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.debug_grid",
"type": "boolean",
"default": true
},
"debug_grid_step": {
"title": "Debug grid step size",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.debug_grid_step",
"type": "number",
"default": 32
},
"debug_color": {
"title": "Debug color",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.debug_color",
"type": "string",
"default": "yellow"
},
"cache": {
"title": "Enable caching",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cache",
"type": "boolean",
"default": true
},
"cache_dir": {
"title": "Cache directory",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#+social.cache_dir",
"type": "string",
"default": ".cache/plugins/social"
} }
}, },
"additionalProperties": false, "additionalProperties": false
"defaultSnippets": [
{
"label": "cards_font",
"body": "cards_font: ${1:Roboto}"
}
]
} }
}, },
"additionalProperties": false "additionalProperties": false

View File

@ -214,6 +214,12 @@
"ka" "ka"
] ]
}, },
{
"title": "Site language: Kannada",
"enum": [
"kn"
]
},
{ {
"title": "Site language: Korean", "title": "Site language: Korean",
"enum": [ "enum": [
@ -304,6 +310,12 @@
"ru" "ru"
] ]
}, },
{
"title": "Site language: Sanskrit",
"enum": [
"sa"
]
},
{ {
"title": "Site language: Serbo-Croatian", "title": "Site language: Serbo-Croatian",
"enum": [ "enum": [
@ -340,6 +352,12 @@
"sv" "sv"
] ]
}, },
{
"title": "Site language: Telugu",
"enum": [
"te"
]
},
{ {
"title": "Site language: Thai", "title": "Site language: Thai",
"enum": [ "enum": [
@ -918,7 +936,8 @@
"grey", "grey",
"blue grey", "blue grey",
"black", "black",
"white" "white",
"custom"
] ]
}, },
"accent": { "accent": {
@ -945,7 +964,8 @@
"grey", "grey",
"blue grey", "blue grey",
"black", "black",
"white" "white",
"custom"
] ]
}, },
"icon": { "icon": {

View File

@ -109,7 +109,7 @@ resolves to the subfolder where your documentation is hosted.
If your default branch is called `main`, change the setting to: If your default branch is called `main`, change the setting to:
``` yaml ``` yaml
edit_uri: blob/main/docs/ edit_uri: edit/main/docs/
``` ```
After making sure that `edit_uri` is correctly configured, buttons for code After making sure that `edit_uri` is correctly configured, buttons for code
@ -331,9 +331,11 @@ them at your own risk.
[:octicons-cpu-24: Plugin][git-authors] · [:octicons-cpu-24: Plugin][git-authors] ·
:octicons-beaker-24: Experimental :octicons-beaker-24: Experimental
The [git-authors] plugin extracts the authors of a document from git to display The [git-authors] plugin is a lightweight alternative to the
them at the bottom of each page. It's a lightweight alternative to the [git-committers] plugin and extracts the authors of a document from git to display
[git-committers] plugin. Install it with `pip`: them at the bottom of each page.
[Insiders] offers deep integration for [git-authors]. This means the [customized overrides](https://timvink.github.io/mkdocs-git-authors-plugin/usage.html#mkdocs-material-theme) are not necessary, and additional styling (such as nice icons) are added. Simply install it with `pip`:
``` ```
pip install mkdocs-git-authors-plugin pip install mkdocs-git-authors-plugin

View File

@ -1,7 +1,3 @@
---
status: new
---
# Building an optimized site # Building an optimized site
Material for MkDocs, by default, allows to build optimized sites that rank great Material for MkDocs, by default, allows to build optimized sites that rank great
@ -196,7 +192,7 @@ The following configuration options are available for caching:
``` yaml ``` yaml
plugins: plugins:
- optimize: - optimize:
cache_dir: path/to/folder cache_dir: .cache/plugins/optimize
``` ```
By default, all built-in plugins that implement caching will create a By default, all built-in plugins that implement caching will create a

View File

@ -38,10 +38,14 @@ Click on a tile to change the color scheme:
var buttons = document.querySelectorAll("button[data-md-color-scheme]") var buttons = document.querySelectorAll("button[data-md-color-scheme]")
buttons.forEach(function(button) { buttons.forEach(function(button) {
button.addEventListener("click", function() { button.addEventListener("click", function() {
document.body.setAttribute("data-md-color-switching", "")
var attr = this.getAttribute("data-md-color-scheme") var attr = this.getAttribute("data-md-color-scheme")
document.body.setAttribute("data-md-color-scheme", attr) document.body.setAttribute("data-md-color-scheme", attr)
var name = document.querySelector("#__code_1 code span.l") var name = document.querySelector("#__code_0 code span.l")
name.textContent = attr name.textContent = attr
setTimeout(function() {
document.body.removeAttribute("data-md-color-switching")
})
}) })
}) })
</script> </script>
@ -95,12 +99,14 @@ Click on a tile to change the primary color:
button.addEventListener("click", function() { button.addEventListener("click", function() {
var attr = this.getAttribute("data-md-color-primary") var attr = this.getAttribute("data-md-color-primary")
document.body.setAttribute("data-md-color-primary", attr) document.body.setAttribute("data-md-color-primary", attr)
var name = document.querySelector("#__code_2 code span.l") var name = document.querySelector("#__code_1 code span.l")
name.textContent = attr.replace("-", " ") name.textContent = attr.replace("-", " ")
}) })
}) })
</script> </script>
See our guide below to learn how to set [custom colors].
[Primary color support]: https://github.com/squidfunk/mkdocs-material/releases/tag/0.2.0 [Primary color support]: https://github.com/squidfunk/mkdocs-material/releases/tag/0.2.0
#### Accent color #### Accent color
@ -152,12 +158,14 @@ Click on a tile to change the accent color:
button.addEventListener("click", function() { button.addEventListener("click", function() {
var attr = this.getAttribute("data-md-color-accent") var attr = this.getAttribute("data-md-color-accent")
document.body.setAttribute("data-md-color-accent", attr) document.body.setAttribute("data-md-color-accent", attr)
var name = document.querySelector("#__code_3 code span.l") var name = document.querySelector("#__code_2 code span.l")
name.textContent = attr.replace("-", " ") name.textContent = attr.replace("-", " ")
}) })
}) })
</script> </script>
See our guide below to learn how to set [custom colors].
[Accent color support]: https://github.com/squidfunk/mkdocs-material/releases/tag/0.2.0 [Accent color support]: https://github.com/squidfunk/mkdocs-material/releases/tag/0.2.0
### Color palette toggle ### Color palette toggle
@ -319,6 +327,16 @@ properties). If you want to customize the colors beyond the palette (e.g. to
use your brand-specific colors), you can add an [additional style sheet] and use your brand-specific colors), you can add an [additional style sheet] and
tweak the values of the CSS variables. tweak the values of the CSS variables.
First, set the [`primary`][palette.primary] or [`accent`][palette.accent] values
in `mkdocs.yml` to `custom`, to signal to the theme that you want to define
custom colors, e.g., when you want to override the `primary` color:
``` yaml
theme:
palette:
primary: custom
```
Let's say you're :fontawesome-brands-youtube:{ style="color: #EE0F0F" } Let's say you're :fontawesome-brands-youtube:{ style="color: #EE0F0F" }
__YouTube__, and want to set the primary color to your brand's palette. Just __YouTube__, and want to set the primary color to your brand's palette. Just
add: add:

View File

@ -1,7 +1,7 @@
# Changing the language # Changing the language
Material for MkDocs supports internationalization (i18n) and provides Material for MkDocs supports internationalization (i18n) and provides
translations for template variables and labels in 50+ languages. Additionally, translations for template variables and labels in 60+ languages. Additionally,
the site search can be configured to use a language-specific stemmer, if the site search can be configured to use a language-specific stemmer, if
available. available.
@ -126,7 +126,7 @@ Click on a tile to change the directionality:
button.addEventListener("click", function() { button.addEventListener("click", function() {
var attr = this.getAttribute("data-md-dir") var attr = this.getAttribute("data-md-dir")
document.body.dir = attr document.body.dir = attr
var name = document.querySelector("#__code_3 code span.l") var name = document.querySelector("#__code_2 code span.l")
name.textContent = attr name.textContent = attr
}) })
}) })

View File

@ -199,28 +199,38 @@ The following configuration options are available:
The following configuration options are available for external assets: The following configuration options are available for external assets:
[`external_assets`](#+privacy.external_assets){ #+privacy.external_assets } [`assets`](#+privacy.assets){ #+privacy.assets }
: :octicons-milestone-24: Default: `bundle` This option specifies what the : :octicons-milestone-24: Default: `true` This option specifies whether the
plugin should do when encountering external assets. There are two options: plugin should scan the HTML output to detect and process external assets:
while `report` will issue warning messages during the build, `bundle` will
automatically download all external files and adjust all references:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_assets: bundle assets: true
``` ```
If you've removed all external assets from your project via [customization], If you've removed all external assets from your project via [customization],
it's still a good idea to enable the plugin and set the mode to `report`, it's still a good idea to enable the plugin, as the plugin will make sure
as the plugin will make sure that there are no hidden external links in any that there are no hidden external links in any Markdown files that were
Markdown files that were unintentionally added. unintentionally added.
Using `report` in [strict mode] will make the build fail when external Using `assets` in [strict mode] will make the build fail when external
assets are detected. assets are detected.
[`external_assets_dir`](#+privacy.external_assets_dir){ #+privacy.external_assets_dir } [`assets_fetch`](#+privacy.assets_fetch){ #+privacy.assets_fetch }
: :octicons-milestone-24: Default: `true` This option specifies whether the
plugin should download external assets it encountered and bundle them with
your documentation:
``` yaml
plugins:
- privacy:
assets_fetch: true
```
[`assets_fetch_dir`](#+privacy.assets_fetch_dir){ #+privacy.assets_fetch_dir }
: :octicons-milestone-24: Default: `assets/external` This option : :octicons-milestone-24: Default: `assets/external` This option
specifies where the downloaded [external assets] will be stored. It's specifies where the downloaded [external assets] will be stored. It's
@ -229,12 +239,12 @@ The following configuration options are available for external assets:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_assets_dir: assets/external assets_fetch_dir: assets/external
``` ```
The path must be defined relative to [`docs_dir`][docs_dir]. The path must be defined relative to [`docs_dir`][docs_dir].
[`external_assets_include`](#+privacy.external_assets_include){ #+privacy.external_assets_include } :material-alert-decagram:{ .mdx-pulse title="Added on February 6, 2023" } [`assets_include`](#+privacy.assets_include){ #+privacy.assets_include }
: :octicons-milestone-24: Default: _none_ This option allows to only include : :octicons-milestone-24: Default: _none_ This option allows to only include
certain external assets for processing by the privacy plugin, so they will certain external assets for processing by the privacy plugin, so they will
@ -243,7 +253,7 @@ The following configuration options are available for external assets:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_assets_include: assets_include:
- unsplash.com/* - unsplash.com/*
``` ```
@ -265,7 +275,7 @@ The following configuration options are available for external assets:
differently from others or exclude some images from downloading, you can differently from others or exclude some images from downloading, you can
use multiple instances of the [built-in privacy plugin]. use multiple instances of the [built-in privacy plugin].
[`external_assets_exclude`](#+privacy.external_assets_exclude){ #+privacy.external_assets_exclude } [`assets_exclude`](#+privacy.assets_exclude){ #+privacy.assets_exclude }
: :octicons-milestone-24: Default: _none_ This option allows to exclude : :octicons-milestone-24: Default: _none_ This option allows to exclude
certain external assets from processing by the privacy plugin, so they will certain external assets from processing by the privacy plugin, so they will
@ -274,7 +284,7 @@ The following configuration options are available for external assets:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_assets_exclude: # (1)! assets_exclude: # (1)!
- cdn.jsdelivr.net/npm/mathjax@3/* - cdn.jsdelivr.net/npm/mathjax@3/*
- giscus.app/* - giscus.app/*
``` ```
@ -313,7 +323,7 @@ The following configuration options are available for external assets:
[customization]: ../customization.md [customization]: ../customization.md
[strict mode]: https://www.mkdocs.org/user-guide/configuration/#strict [strict mode]: https://www.mkdocs.org/user-guide/configuration/#strict
[docs_dir]: https://www.mkdocs.org/user-guide/configuration/#docs_dir [docs_dir]: https://www.mkdocs.org/user-guide/configuration/#docs_dir
[MathJax]: ../reference/mathjax.md [MathJax]: ../reference/math.md
[MathJax can be self-hosted]: https://docs.mathjax.org/en/latest/web/hosting.html [MathJax can be self-hosted]: https://docs.mathjax.org/en/latest/web/hosting.html
[Giscus can be self-hosted]: https://github.com/giscus/giscus/blob/main/SELF-HOSTING.md [Giscus can be self-hosted]: https://github.com/giscus/giscus/blob/main/SELF-HOSTING.md
[comment system]: adding-a-comment-system.md [comment system]: adding-a-comment-system.md
@ -325,7 +335,7 @@ The following configuration options are available for external assets:
[technical limitations]: #limitations [technical limitations]: #limitations
[built-in optimize plugin]: building-an-optimized-site.md#built-in-optimize-plugin [built-in optimize plugin]: building-an-optimized-site.md#built-in-optimize-plugin
#### External links :material-alert-decagram:{ .mdx-pulse title="Added on October 18, 2022" } #### External links
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } · [:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.26.0][Insiders] · [:octicons-tag-24: insiders-4.26.0][Insiders] ·
@ -333,7 +343,7 @@ The following configuration options are available for external assets:
The following configuration options are available for external links: The following configuration options are available for external links:
[`external_links`](#+privacy.external_links){ #+privacy.external_links } [`links`](#+privacy.links){ #+privacy.links }
: :octicons-milestone-24: Default: `true` This option specifies whether the : :octicons-milestone-24: Default: `true` This option specifies whether the
plugin should parse and process external links. If you want to speed up plugin should parse and process external links. If you want to speed up
@ -342,10 +352,10 @@ The following configuration options are available for external links:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_links: !ENV [CI, false] links: !ENV [CI, false]
``` ```
[`external_links_attr_map`](#+privacy.external_links_attr_map){ #+privacy.external_links_attr_map } [`links_attr_map`](#+privacy.links_attr_map){ #+privacy.links_attr_map }
: :octicons-milestone-24: Default: _None_ This option specifies custom : :octicons-milestone-24: Default: _None_ This option specifies custom
attributes that should be added to external links, like for example attributes that should be added to external links, like for example
@ -354,11 +364,11 @@ The following configuration options are available for external links:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_links_attr_map: links_attr_map:
target: _blank target: _blank
``` ```
[`external_links_noopener`](#+privacy.external_links_noopener){ #+privacy.external_links_noopener } [`links_noopener`](#+privacy.links_noopener){ #+privacy.links_noopener }
: :octicons-milestone-24: Default: `true` This option specifies whether the : :octicons-milestone-24: Default: `true` This option specifies whether the
plugin should automatically add [`rel="noopener"`][noopener] to all links plugin should automatically add [`rel="noopener"`][noopener] to all links
@ -367,7 +377,7 @@ The following configuration options are available for external links:
``` yaml ``` yaml
plugins: plugins:
- privacy: - privacy:
external_links_noopener: true links_noopener: true
``` ```
[noopener]: https://mathiasbynens.github.io/rel-noopener/ [noopener]: https://mathiasbynens.github.io/rel-noopener/
@ -484,27 +494,30 @@ carried out. You might want to:
`.cache` directory in between builds. Taking the example from the `.cache` directory in between builds. Taking the example from the
[publishing guide], add the following lines: [publishing guide], add the following lines:
``` yaml hl_lines="15-18" ``` yaml hl_lines="15-21"
name: ci name: ci
on: on:
push: push:
branches: branches:
- master - master
- main - main
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-python@v2 - uses: actions/setup-python@v4
with: with:
python-version: 3.x python-version: 3.x
- uses: actions/cache@v2 - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
with: - uses: actions/cache@v3
key: ${{ github.ref }} with:
path: .cache key: mkdocs-material-${{ env.cache_id }}
- run: pip install mkdocs-material path: .cache
- run: mkdocs gh-deploy --force restore-keys: |
mkdocs-material-
- run: pip install mkdocs-material
- run: mkdocs gh-deploy --force
``` ```
[publishing guide]: ../publishing-your-site.md#with-github-actions [publishing guide]: ../publishing-your-site.md#with-github-actions

View File

@ -82,8 +82,8 @@ See reference for usage:
[MathJax]: https://www.mathjax.org/ [MathJax]: https://www.mathjax.org/
[KaTeX]: https://github.com/Khan/KaTeX [KaTeX]: https://github.com/Khan/KaTeX
[additional JavaScript]: ../../customization.md#additional-javascript [additional JavaScript]: ../../customization.md#additional-javascript
[Using block syntax]: ../../reference/mathjax.md#using-block-syntax [Using block syntax]: ../../reference/math.md#using-block-syntax
[Using inline block syntax]: ../../reference/mathjax.md#using-inline-block-syntax [Using inline block syntax]: ../../reference/math.md#using-inline-block-syntax
### BetterEm ### BetterEm
@ -371,6 +371,18 @@ The following configuration options are supported:
syntax highlighting using [Pygments], so they don't apply if `use_pygments` syntax highlighting using [Pygments], so they don't apply if `use_pygments`
is set to `false`. is set to `false`.
[`pygments_lang_class`](#+pymdownx.highlight.pygments_lang_class){ #+pymdownx.highlight.pygments_lang_class }
: :octicons-milestone-24: Default: `false` This option instructs [Pygments]
to add a CSS class to identify the language of the code block, which is
essential for custom annotation markers to function:
``` yaml
markdown_extensions:
- pymdownx.highlight:
pygments_lang_class: true
```
[`auto_title`](#+pymdownx.highlight.auto_title){ #+pymdownx.highlight.auto_title } [`auto_title`](#+pymdownx.highlight.auto_title){ #+pymdownx.highlight.auto_title }
: :octicons-milestone-24: Default: `false` This option will automatically : :octicons-milestone-24: Default: `false` This option will automatically
@ -428,6 +440,18 @@ The following configuration options are supported:
anchor_linenums: true anchor_linenums: true
``` ```
[`line_spans`](#+pymdownx.highlight.line_spans){ #+pymdownx.highlight.line_spans }
: :octicons-milestone-24: Default: _none_ When this option is set, each
line of a code block is wrapped in a `span`, which is essential for features
like line highlighting to work correctly:
``` yaml
markdown_extensions:
- pymdownx.highlight:
line_spans: __span
```
The other configuration options of this extension are not officially supported The other configuration options of this extension are not officially supported
by Material for MkDocs, which is why they may yield unexpected results. Use by Material for MkDocs, which is why they may yield unexpected results. Use
them at your own risk. them at your own risk.

90
docs/setup/index.md Normal file
View File

@ -0,0 +1,90 @@
# Setup
Material for MkDocs offers a wide range of options for customizing your
documentation. In this section, we will explain how you can create a meaningful
structure for your site, change the look and feel, add a blog and comment system,
and build a highly optimized site.
## Site structure
Set up and customize the structure of your documentation by configuring the
header and footer to your taste, choosing among many modes of navigation,
setting up site search, and more.
<div class="grid cards" markdown>
- :fontawesome-solid-earth-americas: __[Language]__ Choose out of the 60+ supported languages or add a new one
- :material-page-layout-sidebar-left: __[Navigation]__ Create a clear, concise, and comprehensive navigation structure
- :material-page-layout-header: __[Header]__ Customize the behavior of the header, add an announcement bar
- :material-page-layout-footer: __[Footer]__ Add links to your social media profiles or websites in the footer
- :material-tab-search: __[Search]__ Set up and configure search, running entirely in the user's browser
- :material-tag-plus-outline: __[Tags]__ Categorize your pages with tags and group related pages
</div>
[Language]: changing-the-language.md
[Navigation]: setting-up-navigation.md
[Header]: setting-up-the-header.md
[Footer]: setting-up-the-footer.md
[Search]: setting-up-site-search.md
[Tags]: setting-up-tags.md
## Appearance
Match your brand's colors, fonts, icons, logo, and more with a few lines of
configuration Material for MkDocs makes it easy to extend the basic
configuration or alter the appearance.
<div class="grid cards" markdown>
- :material-brush-variant: __[Colors]__ Change colors with an existing color palette or customize with CSS
- :material-format-font: __[Fonts]__ Choose among 1,000 Google Fonts or load self-hosted fonts
- :material-google-downasaur: __[Logo & Icons]__ Change the logo, use any of the 8,000+ icons, or add new ones
- :material-cards-variant: __[Social Cards]__ Automatically create social media previews when sharing links
</div>
[Colors]: changing-the-colors.md
[Fonts]: changing-the-fonts.md
[Logo & Icons]: changing-the-logo-and-icons.md
[Social Cards]: setting-up-social-cards.md
## Content
Create a blog, integrate a comment system, connect a git repository, and set up
versioned documentation that matches your project's versioning methodology.
<div class="grid cards" markdown>
- :material-book-open-outline: __[Blog]__ Set up a standalone blog or host it alongside your documentation
- :material-comment-text-outline: __[Comment System]__ Add a third-party comment system on any page or footer
- :octicons-versions-16: __[Versioning]__ Deploy multiple versions by integrating with external utilities
- :octicons-repo-16: __[Repository]__ Connect your documentation to your git repository
</div>
[Blog]: setting-up-a-blog.md
[Comment System]: adding-a-comment-system.md
[Versioning]: setting-up-versioning.md
[Repository]: adding-a-git-repository.md
## Optimization
Add site analytics and build an optimized site by adding automatic image
compression, complying with GDPR data privacy regulations, and making it
offline-capable.
<div class="grid cards" markdown>
- :material-google-analytics: __[Site analytics]__ Learn how your users experience your documentation
- :material-screwdriver: __[Optimized site]__ Create optimized sites that rank great on search engines
- :octicons-lock-16: __[Data Privacy]__ Ensure compliance with data privacy regulations
- :octicons-cloud-offline-16: __[Offline usage]__ Build an online and offline-capable documentation
</div>
[Site analytics]: setting-up-site-analytics.md
[Optimized site]: building-an-optimized-site.md
[Data Privacy]: ensuring-data-privacy.md
[Offline usage]: building-for-offline-usage.md

View File

@ -93,7 +93,7 @@ The following configuration options are available:
``` yaml ``` yaml
plugins: plugins:
- blog: - blog:
blog_dir: path/to/folder blog_dir: blog
``` ```
=== "Standalone" === "Standalone"
@ -106,6 +106,21 @@ The following configuration options are available:
The path must be defined relative to [`docs_dir`][docs_dir]. The path must be defined relative to [`docs_dir`][docs_dir].
[`blog_toc`](#+blog.blog_toc){ #+blog.blog_toc }
: :octicons-milestone-24: Default: `false` This option specifies whether
indexes include a table of contents with all post titles on the
right side as an overview:
``` yaml
plugins:
- blog:
blog_toc: true
```
Note that this setting is also used as the default value for `archive_toc`
and `categories_toc`, unless those settings are explicitly defined.
__The built-in blog plugin has dozens of options that allow for advanced __The built-in blog plugin has dozens of options that allow for advanced
configuration. It's a good idea to [start writing your first post], and come configuration. It's a good idea to [start writing your first post], and come
back here later for fine-tuning the output.__ back here later for fine-tuning the output.__
@ -493,6 +508,18 @@ The following configuration options are available for archive index generation:
archive_url_format: "{date}" archive_url_format: "{date}"
``` ```
[`archive_toc`](#+blog.archive_toc){ #+blog.archive_toc }
: :octicons-milestone-24: Default: `false` This option specifies whether an
archive index includes a table of contents with all post titles on the
right side as an overview:
``` yaml
plugins:
- blog:
archive_toc: true
```
#### Categories #### Categories
The following configuration options are available for category index generation: The following configuration options are available for category index generation:
@ -582,18 +609,6 @@ The following configuration options are available for category index generation:
categories_slugify_separator: "-" categories_slugify_separator: "-"
``` ```
[`categories_toc`](#+blog.categories_toc){ #+blog.categories_toc }
: :octicons-milestone-24: Default: `false` This option specifies whether a
category index includes a table of contents with all post titles on the
right side as an overview:
``` yaml
plugins:
- blog:
categories_toc: true
```
[`categories_allowed`](#+blog.categories_allowed){ #+blog.categories_allowed } [`categories_allowed`](#+blog.categories_allowed){ #+blog.categories_allowed }
: :octicons-milestone-24: Default: _none_ This option specifies the : :octicons-milestone-24: Default: _none_ This option specifies the
@ -610,6 +625,18 @@ The following configuration options are available for category index generation:
- Performance - Performance
``` ```
[`categories_toc`](#+blog.categories_toc){ #+blog.categories_toc }
: :octicons-milestone-24: Default: `false` This option specifies whether a
category index includes a table of contents with all post titles on the
right side as an overview:
``` yaml
plugins:
- blog:
categories_toc: true
```
#### Pagination #### Pagination
The following configuration options are available for index pagination: The following configuration options are available for index pagination:

View File

@ -31,9 +31,27 @@ are rebound automatically, i.e., __Material for MkDocs now behaves like a Single
Page Application__. Now, the search index survives navigation, which is Page Application__. Now, the search index survives navigation, which is
especially useful for large documentation sites. especially useful for large documentation sites.
[Instant loading support]: https://github.com/squidfunk/mkdocs-material/releases/tag/5.2.0 [Instant loading support]: https://github.com/squidfunk/mkdocs-material/releases/tag/5.0.0
[XHR]: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest [XHR]: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
#### Instant prefetching :material-alert-decagram:{ .mdx-pulse title="Added on June 15, 2023" }
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.36.0][Insiders] ·
:octicons-beaker-24: Experimental
Instant prefetching is a new experimental feature that will start to fetch a
page once the user hovers over a link. This will reduce the perceived loading
time for the user, especially on slow connections, as the page will be available
immediately upon navigation. Enable it with:
``` yaml
theme:
features:
- navigation.instant
- navigation.instant.prefetch
```
### Anchor tracking ### Anchor tracking
[:octicons-tag-24: 8.0.0][Anchor tracking support] · [:octicons-tag-24: 8.0.0][Anchor tracking support] ·
@ -262,16 +280,19 @@ navigation section:
``` yaml ``` yaml
nav: nav:
- Section: - Section:
- section/index.md - section/index.md # (1)!
- Page 1: section/page-1.md - Page 1: section/page-1.md
... ...
- Page n: section/page-n.md - Page n: section/page-n.md
``` ```
1. MkDocs also considers files called `README.md` as [index pages].
[Section index pages support]: https://github.com/squidfunk/mkdocs-material/releases/tag/7.3.0 [Section index pages support]: https://github.com/squidfunk/mkdocs-material/releases/tag/7.3.0
[Section index pages enabled]: ../assets/screenshots/navigation-index-on.png [Section index pages enabled]: ../assets/screenshots/navigation-index-on.png
[Section index pages disabled]: ../assets/screenshots/navigation-index-off.png [Section index pages disabled]: ../assets/screenshots/navigation-index-off.png
[toc.integrate]: #navigation-integration [toc.integrate]: #navigation-integration
[index pages]: https://www.mkdocs.org/user-guide/writing-your-docs/#index-pages
### Table of contents ### Table of contents

View File

@ -73,17 +73,25 @@ The following configuration options are supported:
- `es` Spanish - `es` Spanish
- `fi` Finnish - `fi` Finnish
- `fr` French - `fr` French
- `hi` Hindi
- `hu` Hungarian - `hu` Hungarian
- `hy` Armenian
- `it` Italian - `it` Italian
- `ja` Japanese - `ja` Japanese
- `kn` - Kannada
- `ko` Korean
- `no` Norwegian - `no` Norwegian
- `pt` Portuguese - `pt` Portuguese
- `ro` Romanian - `ro` Romanian
- `ru` Russian - `ru` Russian
- `sa` Sanskrit
- `sv` Swedish - `sv` Swedish
- `ta` Tamil
- `te` Telugu
- `th` Thai - `th` Thai
- `tr` Turkish - `tr` Turkish
- `vi` Vietnamese - `vi` Vietnamese
- `zh` Chinese
</div> </div>

File diff suppressed because it is too large Load Diff

View File

@ -141,7 +141,7 @@ The following configuration options are available:
``` yaml ``` yaml
plugins: plugins:
- tags: - tags:
tags_compare: !!python/name:material.plugins.tags.plugin.casefold tags_compare: !!python/name:material.plugins.tags.casefold
``` ```
You can also define your own comparison function which must return a tag You can also define your own comparison function which must return a tag

View File

@ -70,6 +70,7 @@ The following properties are available for each link:
* :fontawesome-brands-linkedin: `fontawesome/brands/linkedin` * :fontawesome-brands-linkedin: `fontawesome/brands/linkedin`
* :fontawesome-brands-pied-piper-alt: `fontawesome/brands/pied-piper-alt` * :fontawesome-brands-pied-piper-alt: `fontawesome/brands/pied-piper-alt`
* :fontawesome-brands-slack: `fontawesome/brands/slack` * :fontawesome-brands-slack: `fontawesome/brands/slack`
* :fontawesome-brands-discord: `fontawesome/brands/discord`
[`link`](#+social.link){ #+social.link } [`link`](#+social.link){ #+social.link }

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M320 96v320a160.019 160.019 0 0 0 113.138-46.862 160.019 160.019 0 0 0 34.683-174.367 160.006 160.006 0 0 0-86.591-86.592A160.019 160.019 0 0 0 320 96ZM0 256l160.002 160 160.001-160L160.002 96 0 256Zm480 0a160 160 0 0 0 160 160V96a160.002 160.002 0 0 0-160 160Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M320 96v320a160.019 160.019 0 0 0 113.138-46.862 160.019 160.019 0 0 0 34.683-174.367 160.006 160.006 0 0 0-86.591-86.592A160.019 160.019 0 0 0 320 96ZM0 256l160.002 160 160.001-160L160.002 96 0 256Zm480 0a160 160 0 0 0 160 160V96a160.002 160.002 0 0 0-160 160Z"/></svg>

Before

Width:  |  Height:  |  Size: 551 B

After

Width:  |  Height:  |  Size: 551 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"/></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

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