Signed-off-by: sairate <sairate@sina.cn>

This commit is contained in:
sairate 2024-08-31 15:16:55 +08:00
parent 50b1926ae4
commit 18741ca37c
13507 changed files with 135403 additions and 0 deletions

View File

@ -0,0 +1 @@
last 4 years

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

@ -0,0 +1,27 @@
# 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.
.cache
.git
.github
docs
material/overrides
node_modules
src

View File

@ -0,0 +1,36 @@
# 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.
# Top-level config
root = true
# All files
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# Python
[*.py]
indent_style = space
indent_size = 4

View File

@ -0,0 +1,55 @@
# 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.
# -----------------------------------------------------------------------------
# Node, TypeScript, Python
# -----------------------------------------------------------------------------
# Dependencies
node_modules
__pycache__
venv
# Build files
build
MANIFEST
manifest.json
site
# Configuration
typings
webpack.config.ts
# Distribution files
dist
mkdocs_material.egg-info
# Caches and logs
*.cpuprofile
*.log
*.tsbuildinfo
.eslintcache
# -----------------------------------------------------------------------------
# General
# -----------------------------------------------------------------------------
# Temporary files
tmp

View File

@ -0,0 +1,350 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "tsconfig.json"
},
"plugins": [
"@typescript-eslint",
"eslint-plugin-eslint-comments",
"eslint-plugin-import",
"eslint-plugin-jsdoc",
"eslint-plugin-no-null"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"settings": {
"import/extensions": [
".ts",
".tsx",
".js",
".jsx",
".json"
],
"import/parsers": {
"@typescript-eslint/parser": [
".ts",
".tsx"
]
}
},
"rules": {
"array-bracket-spacing": "warn",
"arrow-parens": [
"warn",
"as-needed"
],
"block-spacing": "warn",
"brace-style": [
"warn",
"1tbs",
{
"allowSingleLine": true
}
],
"comma-dangle": [
"error",
"never"
],
"comma-spacing": "warn",
"comma-style": "error",
"computed-property-spacing": "warn",
"curly": "off",
"eqeqeq": [
"error",
"smart"
],
"func-call-spacing": "warn",
"keyword-spacing": "warn",
"lines-around-comment": [
"error",
{
"allowBlockStart": true,
"allowBlockEnd": true,
"beforeBlockComment": true,
"ignorePattern": "@ts-ignore"
}
],
"lines-between-class-members": "warn",
"max-classes-per-file": "error",
"new-parens": "error",
"no-caller": "error",
"no-case-declarations": "off",
"no-console": "error",
"no-duplicate-imports": "error",
"no-eval": "error",
"no-extra-bind": "error",
"no-multiple-empty-lines": [
"error",
{
"max": 1
}
],
"no-new-func": "error",
"no-new-wrappers": "error",
"no-restricted-globals": [
"error",
{
"name": "fdescribe",
"message": "Did you mean 'describe'?"
},
{
"name": "xdescribe",
"message": "Did you mean 'describe'?"
},
{
"name": "fit",
"message": "Did you mean 'it'?"
},
{
"name": "xit",
"message": "Did you mean 'xit'?"
}
],
"no-return-await": "error",
"no-sequences": "error",
"no-shadow": "off",
"no-tabs": "error",
"no-template-curly-in-string": "error",
"no-throw-literal": "off",
"no-trailing-spaces": "warn",
"no-undef-init": "error",
"no-underscore-dangle": "error",
"no-var": "error",
"no-whitespace-before-property": "warn",
"object-shorthand": "error",
"one-var": [
"error",
"never"
],
"prefer-exponentiation-operator": "error",
"prefer-object-spread": "error",
"prefer-template": "error",
"quote-props": [
"error",
"consistent-as-needed"
],
"quotes": [
"error",
"double",
{
"avoidEscape": true
}
],
"radix": "error",
"semi": "off",
"sort-imports": [
"error",
{
"ignoreDeclarationSort": true
}
],
"space-before-blocks": "warn",
"space-before-function-paren": [
"warn",
{
"anonymous": "always",
"named": "never",
"asyncArrow": "always"
}
],
"space-in-parens": "warn",
"space-infix-ops": "warn",
"space-unary-ops": "warn",
"spaced-comment": "warn",
"switch-colon-spacing": "warn",
"template-tag-spacing": "warn",
/* Plugin: @typescript-eslint */
"@typescript-eslint/array-type": "off",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/ban-types": "off",
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/dot-notation": "error",
"@typescript-eslint/explicit-member-accessibility": "error",
"@typescript-eslint/indent": [
"warn",
2,
{
"FunctionDeclaration": {
"parameters": 1,
"body": 1
},
"FunctionExpression": {
"parameters": 1,
"body": 1
},
"MemberExpression": "off",
"ObjectExpression": 1,
"SwitchCase": 1,
"ignoreComments": true,
"ignoredNodes": [
"ArrowFunctionExpression > *",
"CallExpression > ObjectExpression",
"ConditionalExpression > ConditionalExpression",
"TSTypeReference > *"
],
"offsetTernaryExpressions": true
}
],
"@typescript-eslint/member-delimiter-style": [
"error",
{
"multiline": {
"delimiter": "none"
},
"singleline": {
"delimiter": "comma",
"requireLast": false
}
}
],
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "enumMember",
"format": [
"UPPER_CASE"
]
}
],
"@typescript-eslint/no-empty-interface": "off",
"@typescript-eslint/no-extraneous-class": "error",
"@typescript-eslint/no-misused-promises": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-parameter-properties": "off",
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-shadow": [
"error",
{
"hoist": "never"
}
],
"@typescript-eslint/no-throw-literal": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-unused-expressions": "error",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/prefer-for-of": "off",
"@typescript-eslint/prefer-function-type": "error",
"@typescript-eslint/semi": [
"error",
"never"
],
"@typescript-eslint/triple-slash-reference": "off",
"@typescript-eslint/type-annotation-spacing": "error",
"@typescript-eslint/unbound-method": "error",
"@typescript-eslint/unified-signatures": "error",
/* Plugin: eslint-plugin-eslint-comments */
"eslint-comments/no-unused-disable": "error",
"eslint-comments/no-unused-enable": "error",
"eslint-comments/no-use": [
"warn",
{
"allow": [
"eslint-disable-line",
"eslint-disable-next-line"
]
}
],
/* Plugin: eslint-plugin-import */
"import/first": "error",
"import/newline-after-import": "error",
"import/no-default-export": "error",
"import/no-duplicates": "error",
"import/no-mutable-exports": "error",
"import/no-self-import": "error",
"import/order": [
"error",
{
"alphabetize": {
"order": "asc"
},
"newlines-between": "always",
"groups": [
[
"builtin",
"external"
],
[
"internal"
],
[
"index"
],
[
"parent"
],
[
"sibling"
]
],
"pathGroups": [
{
"pattern": "~/**",
"group": "index",
"position": "before"
},
{
"pattern": "_/**",
"group": "index",
"position": "after"
}
],
"pathGroupsExcludedImportTypes": [
"builtin"
]
}
],
/* Plugin: eslint-plugin-jsdoc */
"jsdoc/check-alignment": "warn",
"jsdoc/check-param-names": [
"warn",
{
"checkDestructured": false
}
],
"jsdoc/check-syntax": "warn",
"jsdoc/check-tag-names": [
"warn",
{
"definedTags": [
"internal"
]
}
],
"jsdoc/empty-tags": "warn",
"jsdoc/no-bad-blocks": "warn",
"jsdoc/no-defaults": "warn",
"jsdoc/no-types": "warn",
"jsdoc/require-hyphen-before-param-description": "warn",
"jsdoc/require-jsdoc": "warn",
"jsdoc/require-param-description": "warn",
"jsdoc/require-param-name": "warn",
"jsdoc/require-param": [
"warn",
{
"checkDestructured": false,
"checkDestructuredRoots": true
}
],
"jsdoc/require-returns-check": "warn",
"jsdoc/require-returns-description": "warn",
"jsdoc/require-returns": [
"warn",
{
"checkGetters": false,
"forceReturnsWithAsync": true
}
],
/* Plugin: eslint-plugin-no-null */
"no-null/no-null": "error"
}
}

View File

@ -0,0 +1,2 @@
# Enforce Unix newlines
* text=auto eol=lf

View File

@ -0,0 +1,124 @@
name: Report a bug
description: Something is not working? Report a bug
body:
- type: textarea
id: context
attributes:
label: Context
description: >-
This field is optional. You may provide additional context for the bug
you want to report, helping us to understand what you are working on and
what you are trying to achieve. If the context is not relevant, you can
leave this field empty.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#context)
- type: textarea
id: description
attributes:
label: Bug description
description: >-
Please give a detailed description of the bug. Explain where Material
for MkDocs does not behave as you would expect it to. Be as specific as
possible. If you have found a workaround or a fix for the problem,
please let us maintainers (and all other users) know.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#bug-description)
validations:
required: true
- type: textarea
id: related-links
attributes:
label: Related links
description: >-
Please list all links to the sections of
[our documentation](https://squidfunk.github.io/mkdocs-material/) that
are relevant to the bug in order to show that you have consulted and
thoroughly read it. Additionally, list links to possibly related open
and closed [issues](https://github.com/squidfunk/mkdocs-material/issues)
and [discussions](https://github.com/squidfunk/mkdocs-material/discussions)
you encountered when searching our issue tracker.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#related-links)
value: |-
- [Reporting a bug](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/)
-
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction
description: >-
Please create a __.zip file__ with a __minimal reproduction__ for the
bug. First, read our [reproduction guide](https://squidfunk.github.io/mkdocs-material/guides/creating-a-reproduction/)
that explains the necessary steps, then use the [built-in info plugin](https://squidfunk.github.io/mkdocs-material/plugins/info/) (mandatory) to create a self-contained
.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)
placeholder: |-
Drag and drop the .zip file with the minimal reproduction here.
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: >-
Please provide a detailed list of instructions, guiding us maintainers
through the required steps, helping us to recreate the problem using the
minimal reproduction you provided. Be as specific as possible and as
verbose as necessary try not to leave anything out.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#steps-to-reproduce)
placeholder: |-
1. ...
2. ...
3. ...
validations:
required: true
- type: dropdown
id: browser
attributes:
label: Browser
description: >-
This field is optional. If the bug only happens in __specific browsers__,
please select them from the dropdown below. If your browser is not
listed or the version is relevant, you may select _Other_ and provide
more details in the field above.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#browser)
multiple: true
options:
- Chrome
- Safari
- Edge
- Firefox
- Opera
- Other
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: >-
Please ensure your bug report fulfills all of the following requirements.
If you are not sure what a specific requirement means, follow the link
to learn about it and understand why it is necessary before ticking the
box. This will save the maintainers and you valuable time.
options:
- label: >-
I have read and followed the [bug reporting guidelines](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/).
required: true
- label: >-
I have attached links to [the documentation](https://squidfunk.github.io/mkdocs-material/),
and possibly related [issues](https://github.com/squidfunk/mkdocs-material/issues)
and [discussions](https://github.com/squidfunk/mkdocs-material/discussions).
required: true
- label: >-
I assure that I have [removed all customizations](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-bug/#remove-customizations)
before submitting this bug report.
required: true
- label: >-
I have attached a __.zip file__ with a [minimal reproduction](https://squidfunk.github.io/mkdocs-material/guides/creating-a-reproduction/).
required: true

View File

@ -0,0 +1,65 @@
name: Report a documentation issue
description: Missing information in our docs? Report a documentation issue
labels:
- documentation
body:
- type: textarea
id: description
attributes:
label: Description
description: >-
Please describe the inconsistency or issue you have found in
[our documentation](https://squidfunk.github.io/mkdocs-material/)
or indicate where you feel there is a need for improvement. Furthermore,
explain the severity of the issue, i.e., its impact on you and potentially
other users.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/#description)
validations:
required: true
- type: textarea
id: related-links
attributes:
label: Related links
description: >-
Please list all links to the sections of [our documentation](https://squidfunk.github.io/mkdocs-material/)
that are impacted by the issue you described above. If applicable,
add screenshots. Additionally, list links to possibly related open
and closed [issues](https://github.com/squidfunk/mkdocs-material/issues)
and [discussions](https://github.com/squidfunk/mkdocs-material/discussions)
you encountered when searching our issue tracker.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/#related-links)
value: |-
- [Reporting a docs issue](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/)
-
validations:
required: true
- type: textarea
id: proposed-change
attributes:
label: Proposed change
description: >-
This field is optional. You may provide an improvement proposal for our
documentation by describing your suggestion in the text field below or
creating a pull request after reporting this issue referencing the issue.
[More](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/#proposed-change)
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: >-
Please ensure your documentation issue report fulfills all of the
following requirements. If you need clarification on a specific
requirement, follow the link to learn about it and understand why it is
necessary before ticking the box. This will save the maintainers and you
valuable time.
options:
- label: >-
I have read and followed the [documentation issue guidelines](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/).
required: true
- label: >-
I have attached the links to the affected sections of [the documentation](https://squidfunk.github.io/mkdocs-material/contributing/reporting-a-docs-issue/#related-links)
required: true

View File

@ -0,0 +1,95 @@
name: Request a change
description: Want to submit an idea? Propose a change or feature request
body:
- type: textarea
id: context
attributes:
label: Context
description: >-
This field is optional. You may provide additional context for the idea
you want to propose, helping us to understand what you are working on
and what you are trying to achieve. If the context is not relevant, you
can leave this field empty.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#context)
- type: textarea
id: description
attributes:
label: Description
description: >-
Please provide a detailed description of your idea in 2-3 sentences so
that we maintainers can fully understand what change, feature, or the
improvement you are proposing. Don't yet explain the benefits of your
idea, we'll come to that. Focus on functionality.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#description)
validations:
required: true
- type: textarea
id: related-links
attributes:
label: Related links
description: >-
Please list all links to open and closed [issues](https://github.com/squidfunk/mkdocs-material/issues),
[discussions](https://github.com/squidfunk/mkdocs-material/discussions),
or to [documentation sections](https://squidfunk.github.io/mkdocs-material/)
that are relevant to your idea. If you discussed your idea with the
community on our [discussion board](https://github.com/squidfunk/mkdocs-material/discussions)
prior to creating this change request, please link the discussion here as well.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#related-links)
value: |-
- [Requesting a change](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/)
-
validations:
required: true
- type: textarea
id: use-cases
attributes:
label: Use Cases
description: >-
Please explain how your idea will work from an author's and user's
perspective. Elaborate on how the change would positively impact not only
you but our community and how it aligns with the goals and [philosophy](https://squidfunk.github.io/mkdocs-material/philosophy/)
of the project.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#use-cases)
validations:
required: true
- type: textarea
id: visuals
attributes:
label: Visuals
description: >-
This field is optional. You may provide sketches, screenshots, mockups,
or external assets to illustrate your idea. If you have seen this change,
feature, or improvement used in other static site generators or themes,
please describe how it is implemented and advertised.
[More](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/#visuals)
placeholder: |-
Drag and drop images here or link external assets.
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description:
Please ensure your idea fulfills all of the following requirements. If
you need clarification on a specific requirement, follow the link to
learn about it and understand why it is necessary before ticking the box.
This will save the maintainers and you valuable time.
options:
- label: >-
I have read and followed the [change request guidelines](https://squidfunk.github.io/mkdocs-material/contributing/requesting-a-change/).
required: true
- label: >-
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
- label: >-
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
- label: >-
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.
required: true

View File

@ -0,0 +1,111 @@
name: Add a translation
description: Missing support for your language? Add a translation
title: Add translations for ...
labels:
- change request
body:
- type: markdown
attributes:
value: >-
**Important**: Before creating a new translation, please check if
Material for MkDocs already supports your language. Review the list of
[available languages](https://squidfunk.github.io/mkdocs-material/setup/changing-the-language/#site-language),
pick your language to add new or improve existing translations.
- type: textarea
id: translations
attributes:
label: Translations
description: >-
Please translate the labels on the right. For new languages, translate
each line. For existing languages, only translate lines containing the
:arrow_left: icon and remove the icon before submitting.
[More](https://squidfunk.github.io/mkdocs-material/contributing/adding-translations/#translations_1)
value: |-
{% macro t(key) %}{{ {
"language": "en ⬅️",
"direction": "ltr ⬅️",
"action.edit": "Edit this page ⬅️",
"action.skip": "Skip to content ⬅️",
"action.view": "View source of this page ⬅️",
"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.copied": "Copied to clipboard ⬅️",
"consent.accept": "Accept ⬅️",
"consent.manage": "Manage settings ⬅️",
"consent.reject": "Reject ⬅️",
"footer": "Footer ⬅️",
"footer.next": "Next ⬅️",
"footer.previous": "Previous ⬅️",
"header": "Header ⬅️",
"meta.comments": "Comments ⬅️",
"meta.source": "Source ⬅️",
"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.placeholder": "Search ⬅️",
"search.share": "Share ⬅️",
"search.reset": "Clear ⬅️",
"search.result.initializer": "Initializing search ⬅️",
"search.result.placeholder": "Type to start searching ⬅️",
"search.result.none": "No matching documents ⬅️",
"search.result.one": "1 matching document ⬅️",
"search.result.other": "# matching documents ⬅️",
"search.result.more.one": "1 more on this page ⬅️",
"search.result.more.other": "# more on this page ⬅️",
"search.result.term.missing": "Missing ⬅️",
"select.language": "Select language ⬅️",
"select.version": "Select version ⬅️",
"source": "Go to repository ⬅️",
"source.file.contributors": "Contributors ⬅️",
"source.file.date.created": "Created ⬅️",
"source.file.date.updated": "Last update ⬅️",
"tabs": "Tabs ⬅️",
"toc": "Table of contents ⬅️",
"top": "Back to top ⬅️"
}[key] }}{% endmacro %}
render: Jinja
validations:
required: true
- type: input
id: country-flag
attributes:
label: Country flag
description: >-
This field is optional. Please add the flag of the country when adding a
new language. Go to our [emoji search](https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search)
and enter `flag` to find all available shortcodes. If your flag is not
included, please choose the most appropriate available flag.
[More](https://squidfunk.github.io/mkdocs-material/contributing/adding-translations/#country-flag)
placeholder: |-
Country flag shortcode, e.g. :flag_en:
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: >-
Please ensure that your translation fulfills the following requirements.
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.
required: true
- label: >-
I assure that the translations are accurate to the best of my knowledge.
required: true
- label: >-
__Optional__: I want to integrate this translation myself and create a
pull request following the [contribution guide](https://github.com/squidfunk/mkdocs-material/blob/master/CONTRIBUTING.md).

View File

@ -0,0 +1,27 @@
# 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.
blank_issues_enabled: false
contact_links:
- name: Ask a question
url: https://github.com/squidfunk/mkdocs-material/discussions
about: >
Have a question or need help? Connect with our community on the
discussion board

View File

@ -0,0 +1,236 @@
<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.1;
}
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.1;
}
}
.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(#22272e, #526cfe);
border-radius: 100%;
animation: backdrop infinite both 10s 1s cubic-bezier(0.7, 0, 0.3, 1);
}
h1 {
margin: 24px 0 4px;
color: #526cfe;
font-weight: bold;
font-size: 24px;
}
h2 {
margin: 4px 0;
color: #5E5E5E;
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>

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 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.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 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.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,45 @@
# 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.
version: 2
updates:
- package-ecosystem: npm
open-pull-requests-limit: 10
directory: "/"
labels: []
schedule:
interval: weekly
time: "04:00"
- package-ecosystem: pip
# We only want to bump versions of packages in case of security updates, as
# we want to keep maximum compatibility - see https://t.ly/INSR_
open-pull-requests-limit: 0
directory: "/"
labels: []
schedule:
interval: weekly
time: "04:00"
- package-ecosystem: github-actions
open-pull-requests-limit: 10
directory: "/"
labels: []
schedule:
interval: weekly
time: "04:00"

View File

@ -0,0 +1,205 @@
# 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: build
on:
push:
branches:
- master
pull_request:
release:
types:
- published
env:
NODE_VERSION: 18.x
PYTHON_VERSION: 3.x
permissions:
contents: read
jobs:
npm-build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js runtime
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Set up Node.js dependency cache
uses: actions/cache@v3
id: cache
with:
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
path: node_modules
- name: Set up Node.js dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm install
- name: Build project
run: |
npm run build
git diff --name-only
npm-check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js runtime
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Set up Node.js dependency cache
uses: actions/cache@v3
id: cache
with:
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
path: node_modules
- name: Set up Node.js dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm install
- name: Check project
run: npm run check
python:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python runtime
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: pip
cache-dependency-path: |
pyproject.toml
requirements.txt
- 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@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
if: github.event_name == 'release'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
if: github.event_name == 'release'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Generate Docker tags and labels
id: meta
uses: docker/metadata-action@v5
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@v5
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@v5
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

@ -0,0 +1,118 @@
# 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: documentation
on:
push:
branches:
- master
env:
PYTHON_VERSION: 3.x
permissions:
contents: write
id-token: write
pages: write
jobs:
documentation:
name: Build documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
sparse-checkout: |
docs
includes
material/overrides
src/templates/partials/languages
- name: Set up Python runtime
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: pip
cache-dependency-path: |
pyproject.toml
requirements.txt
- name: Set up build cache
uses: actions/cache/restore@v3
with:
key: mkdocs-material-${{ hashfiles('.cache/**') }}
path: .cache
restore-keys: |
mkdocs-material-
- name: Install dependencies
run: sudo apt-get install pngquant
- name: Install Python dependencies
run: |
pip install mkdocs-material
pip install mkdocs-material[recommended,git,imaging]
- name: Install Insiders build
if: github.event.repository.fork == false
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
# Warning: please don't use this method when installing Insiders from
# CI! We have to do it this way in order to allow for overrides on our
# own documentation, but you should stick to the method we recommend
# in the publishing guide see https://bit.ly/3zjdJtw
git clone --depth 1 https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
pip install -e mkdocs-material-insiders
cp mkdocs-material-insiders/mkdocs.yml mkdocs.yml
echo 'extra_javascript: [${{ vars.CHAT_CLIENT_URL }}]' >> mkdocs.yml
rm -rf material
cp -r mkdocs-material-insiders/material material
- name: Build documentation
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
GOOGLE_ANALYTICS_KEY: ${{ secrets.GOOGLE_ANALYTICS_KEY }}
run: |
mkdocs build --clean
mkdocs --version
- name: Adjust permissions
run: |
chmod -c -R +rX site/ | while read line; do
echo "::warning title=Invalid file permissions automatically fixed::$line"
done
- name: Upload to GitHub Pages
uses: actions/upload-pages-artifact@v2
with:
path: site
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v2
- name: Save build cache
uses: actions/cache/save@v3
with:
key: mkdocs-material-${{ hashfiles('.cache/**') }}
path: .cache

71
notebook/mkdocs-material/.gitignore vendored Normal file
View File

@ -0,0 +1,71 @@
# 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.
# -----------------------------------------------------------------------------
# Node, TypeScript, Python
# -----------------------------------------------------------------------------
# Dependencies
node_modules
__pycache__
venv
.venv
# Build files
build
site
# Distribution files
dist
mkdocs_material.egg-info
# Caches and logs
*.cpuprofile
*.log
*.tsbuildinfo
.cache
.eslintcache
__pycache__
# Examples
example
example.zip
# -----------------------------------------------------------------------------
# General
# -----------------------------------------------------------------------------
# Never ignore .gitkeep files
!**/.gitkeep
# macOS internals
.DS_Store
# Temporary files
TODO
tmp
# IDEs
.vscode
.idea
*~
# Vendor resources
/material/assets/vendor

View File

@ -0,0 +1,28 @@
# 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.
# Distribution files
docs
material
src/**/*.html
# Prevent stylelint from constantly complaining
*.css
*.ts

View File

@ -0,0 +1,168 @@
{
"extends": [
"stylelint-config-recess-order",
"stylelint-config-recommended",
"stylelint-config-standard-scss",
"stylelint-stylistic/config"
],
"plugins": [
"stylelint-scss"
],
"rules": {
"alpha-value-notation": "number",
"annotation-no-unknown": null,
"at-rule-empty-line-before": [
"always",
{
"except": [
"blockless-after-same-name-blockless",
"first-nested"
],
"ignore": [
"after-comment"
],
"ignoreAtRules": [
"if",
"each",
"else",
"elseif",
"for",
"import",
"return"
]
}
],
"at-rule-no-unknown": null,
"color-function-notation": null,
"color-hex-length": "long",
"color-named": "never",
"comment-empty-line-before": [
"always",
{
"ignore": [
"stylelint-commands"
]
}
],
"custom-property-empty-line-before": null,
"custom-property-pattern": null,
"declaration-colon-space-after": null,
"declaration-no-important": true,
"declaration-block-single-line-max-declarations": 0,
"font-family-name-quotes": "always-where-recommended",
"font-weight-notation": "numeric",
"function-calc-no-unspaced-operator": null,
"function-no-unknown": null,
"function-url-no-scheme-relative": true,
"function-url-quotes": "always",
"hue-degree-notation": "number",
"length-zero-no-unit": [
true,
{
"ignore": ["custom-properties"]
}
],
"media-feature-name-no-unknown": null,
"media-feature-range-notation": null,
"media-query-no-invalid": null,
"no-descending-specificity": null,
"no-unknown-animations": true,
"property-no-unknown": null,
"property-no-vendor-prefix": [
true,
{
"ignoreProperties": [
"line-clamp",
"box-orient"
]
}
],
"selector-class-pattern": null,
"selector-combinator-space-before": null,
"selector-descendant-combinator-no-non-space": null,
"selector-id-pattern": null,
"selector-max-id": 0,
"selector-no-qualifying-type": null,
"selector-pseudo-class-no-unknown": null,
"selector-pseudo-element-no-unknown": null,
"unit-allowed-list": [
"%",
"ch",
"dppx",
"deg",
"em",
"fr",
"mm",
"ms",
"px",
"vh",
"vw"
],
"value-keyword-case": [
"lower",
{
"ignoreProperties": [
"/^--/"
]
}
],
"value-list-comma-newline-after": null,
"value-no-vendor-prefix": [
true,
{
"ignoreValues": [
"box"
]
}
],
"scss/at-each-key-value-single-line": true,
"scss/at-else-closing-brace-newline-after": "always-last-in-chain",
"scss/at-function-parentheses-space-before": "never",
"scss/at-function-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
"scss/at-if-closing-brace-newline-after": "always-last-in-chain",
"scss/at-if-no-null": true,
"scss/at-import-no-partial-leading-underscore": true,
"scss/at-import-partial-extension": "never",
"scss/at-mixin-argumentless-call-parentheses": "always",
"scss/at-mixin-parentheses-space-before": "never",
"scss/at-mixin-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
"scss/at-rule-conditional-no-parentheses": true,
"scss/comment-no-empty": null,
"scss/comment-no-loud": true,
"scss/declaration-nested-properties": "never",
"scss/dimension-no-non-numeric-values": true,
"scss/dollar-variable-colon-newline-after": "always-multi-line",
"scss/dollar-variable-colon-space-after": "always-single-line",
"scss/dollar-variable-colon-space-before": "never",
"scss/dollar-variable-first-in-block": null,
"scss/dollar-variable-no-missing-interpolation": true,
"scss/dollar-variable-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
"scss/double-slash-comment-empty-line-before": null,
"scss/double-slash-comment-whitespace-inside": "always",
"scss/at-extend-no-missing-placeholder": null,
"scss/no-duplicate-mixins": true,
"scss/no-global-function-names": null,
"scss/operator-no-newline-after": null,
"scss/operator-no-unspaced": true,
"scss/partial-no-import": true,
"scss/percent-placeholder-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
"scss/selector-no-redundant-nesting-selector": true,
"stylistic/block-closing-brace-newline-after": [
"always",
{
"ignoreAtRules": [
"if",
"else",
"elseif"
]
}
],
"stylistic/declaration-colon-space-after": null,
"stylistic/no-empty-first-line": true,
"stylistic/linebreaks": "unix",
"stylistic/selector-max-empty-lines": 0,
"stylistic/string-quotes": "double",
"stylistic/unicode-bom": "never",
"stylistic/value-list-comma-newline-after": null
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,74 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for our community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, or to ban temporarily or permanently any
contributor for other behaviors that they deem inappropriate, threatening,
offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team privately at hello@squidfunk.com. The
project team will review and investigate all complaints, and will respond in a
way that it deems appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an
incident. Further details of specific enforcement policies may be posted
separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View File

@ -0,0 +1,61 @@
# Contributing
Material for MkDocs is an actively maintained and constantly improved project
that serves a diverse user base with varying backgrounds and needs. In order to
effectively address the needs of all our users, evaluate change requests, and
fix bugs, we maintainers need to put in a lot of work. We have devoted
significant effort to creating better templates for our issue tracker,
optimizing the processes for our users to report bugs, request features or
changes, contribute to the project, or exchange with our community.
Given the wealth of valuable knowledge contained in numerous issues and
discussions, we consider our [issue tracker] and [discussion board] to serve as
a crucial __knowledge base__ that is an important addition to our [documentation]
and brings value to both new and experienced users of Material for MkDocs.
[discussion board]: https://github.com/squidfunk/mkdocs-material/discussions
[issue tracker]: https://github.com/squidfunk/mkdocs-material/issues
[documentation]: https://squidfunk.github.io/mkdocs-material/
## How to contribute
### Creating an issue
- #### [Report a bug]
__Something is not working?__ Report a bug in Material for MkDocs by
creating an issue with a reproduction
- #### [Report a docs issue]
__Missing information in our docs?__ Report missing information or
potential inconsistencies in our documentation
- #### [Request a change]
__Want to submit an idea?__ Propose a change, feature request, or
suggest an improvement
- #### [Ask a question]
__Have a question or need help?__ Ask a question on our [discussion board]
and get in touch with our community
### Contributing
- #### [Add a translation]
__Missing support for your language?__ Add missing translations for a new
or already supported language
- #### [Create a pull request]
__Want to create a pull request?__ Learn how to create a comprehensive
and useful pull request (PR)s
[Report a bug]: reporting-a-bug.md
[Report a docs issue]: reporting-a-docs-issue.md
[Request a change]: requesting-a-change.md
[Ask a question]: https://github.com/squidfunk/mkdocs-material/discussions
[Add translations]: https://github.com/squidfunk/mkdocs-material/adding-translations
[Create a pull request]: https://github.com/squidfunk/mkdocs-material/pulls

View File

@ -0,0 +1,100 @@
# 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.
FROM python:3.11-alpine3.18
# Build-time flags
ARG WITH_PLUGINS=true
# Environment variables
ENV PACKAGES=/usr/local/lib/python3.11/site-packages
ENV PYTHONDONTWRITEBYTECODE=1
# Set build directory
WORKDIR /tmp
# Copy files necessary for build
COPY material material
COPY package.json package.json
COPY README.md README.md
COPY *requirements.txt ./
COPY pyproject.toml pyproject.toml
# Perform build and cleanup artifacts and caches
RUN \
apk upgrade --update-cache -a \
&& \
apk add --no-cache \
cairo \
freetype-dev \
git \
git-fast-import \
jpeg-dev \
openssh \
zlib-dev \
&& \
apk add --no-cache --virtual .build \
gcc \
libffi-dev \
musl-dev \
&& \
pip install --no-cache-dir --upgrade pip \
&& \
pip install --no-cache-dir . \
&& \
if [ "${WITH_PLUGINS}" = "true" ]; then \
pip install --no-cache-dir \
mkdocs-material[recommended] \
mkdocs-material[imaging]; \
fi \
&& \
if [ -e user-requirements.txt ]; then \
pip install -U -r user-requirements.txt; \
fi \
&& \
apk del .build \
&& \
for theme in mkdocs readthedocs; do \
rm -rf ${PACKAGES}/mkdocs/themes/$theme; \
ln -s \
${PACKAGES}/material/templates \
${PACKAGES}/mkdocs/themes/$theme; \
done \
&& \
rm -rf /tmp/* /root/.cache \
&& \
find ${PACKAGES} \
-type f \
-path "*/__pycache__/*" \
-exec rm -f {} \;
# Trust directory, required for git >= 2.35.2
RUN git config --global --add safe.directory /docs &&\
git config --global --add safe.directory /site
# Set working directory
WORKDIR /docs
# Expose MkDocs development server port
EXPOSE 8000
# Start development server by default
ENTRYPOINT ["mkdocs"]
CMD ["serve", "--dev-addr=0.0.0.0:8000"]

View File

@ -0,0 +1,19 @@
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.

View File

@ -0,0 +1,305 @@
<p align="center">
<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">
</a>
</p>
<p align="center">
<strong>
A powerful documentation framework on top of
<a href="https://www.mkdocs.org/">MkDocs</a>
</strong>
</p>
<p align="center">
<a href="https://github.com/squidfunk/mkdocs-material/actions"><img
src="https://github.com/squidfunk/mkdocs-material/workflows/build/badge.svg?branch=master"
alt="Build"
/></a>
<a href="https://pypistats.org/packages/mkdocs-material"><img
src="https://img.shields.io/pypi/dm/mkdocs-material.svg"
alt="Downloads"
/></a>
<a href="https://pypi.org/project/mkdocs-material"><img
src="https://img.shields.io/pypi/v/mkdocs-material.svg"
alt="Python Package Index"
/></a>
<a href="https://hub.docker.com/r/squidfunk/mkdocs-material/"><img
src="https://img.shields.io/docker/pulls/squidfunk/mkdocs-material"
alt="Docker Pulls"
/></a>
</p>
<p align="center">
Write your documentation in Markdown and create a professional static site for
your Open Source or commercial project in minutes searchable, customizable,
more than 60 languages, for all devices.
</p>
<p align="center">
<a href="https://squidfunk.github.io/mkdocs-material/getting-started/">
<img src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/screenshot.png" width="700" />
</a>
</p>
<p align="center">
<em>
Check out the demo
<a
href="https://squidfunk.github.io/mkdocs-material/"
>squidfunk.github.io/mkdocs-material</a>.
</em>
</p>
<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 align="center"><strong>Bronze sponsors</strong></p>
<p align="center">
<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"
/></a>
<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"
/></a>
<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"
/></a>
<a href="https://www.manticoregames.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-manticore-games.png" height="58"
/></a>
<a href="https://orion-docs.prefect.io/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-prefect.png" height="58"
/></a>
<a href="https://datadoghq.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-datadog.png" height="58"
/></a>
<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"
/></a>
<a href="https://docs.posit.co" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-posit.png" height="58"
/></a>
<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"
/></a>
<a href="https://www.dogado.de" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-dogado.png" height="58"
/></a>
<a href="https://wwt.com" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-wwt.png" height="58"
/></a>
<a href="https://coda.io" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-coda.png" height="58"
/></a>
<a href="https://elastic.co" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-elastic.png" height="58"
/></a>
<a href="https://ipfabric.io/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-ip-fabric.png" height="58"
/></a>
<a href="https://www.apex.ai/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-apex-ai.png" height="58"
/></a>
<a href="https://jitterbit.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-jitterbit.png" height="58"
/></a>
<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"
/></a>
<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"
/></a>
<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"
/></a>
<!-- <a href="https://cash.app/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cashapp.png" height="58"
/></a> -->
<a href="https://rackn.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-rackn.png" height="58"
/></a>
<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"
/></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>
<a href="https://astral.sh/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-astral.png" height="58"
/></a>
<a href="https://oikolab.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-oikolab.png" height="58"
/></a>
<a href="https://www.buhlergroup.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-buhler.png" height="58"
/></a>
<a href="https://transformationflow.io/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-transformationflow.png" height="58"
/></a>
<a href="https://3dr.com/" target=_blank><img
src="https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-3dr.png" height="58"
/></a>
</p>
<p>&nbsp;</p>
## Everything you would expect
### It's just Markdown
Focus on the content of your documentation and create a professional static site
in minutes. No need to know HTML, CSS or JavaScript let Material for MkDocs do
the heavy lifting for you.
### Works on all devices
Serve your documentation with confidence Material for MkDocs automatically
adapts to perfectly fit the available screen estate, no matter the type or size
of the viewing device. Desktop. Tablet. Mobile. All great.
### Made to measure
Make it yours change the colors, fonts, language, icons, logo, and more with
a few lines of configuration. Material for MkDocs can be easily extended and
provides many options to alter appearance and behavior.
### Fast and lightweight
Don't let your users wait get incredible value with a small footprint by using
one of the fastest themes available with excellent performance, yielding optimal
search engine rankings and happy users that return.
### Built for everyone
Make accessibility a priority users can navigate your documentation with touch
devices, keyboards, and screen readers. Semantic markup ensures that your
documentation works for everyone.
### Open Source
Trust 20,000+ users choose a mature and actively maintained solution built
with state-of-the-art Open Source technologies. Keep ownership of your content
without fear of vendor lock-in. Licensed under MIT.
## Quick start
Material for MkDocs can be installed with `pip`:
``` sh
pip install mkdocs-material
```
Add the following lines to `mkdocs.yml`:
``` yaml
theme:
name: material
```
For detailed installation instructions, configuration options, and a demo, visit
[squidfunk.github.io/mkdocs-material][Material for MkDocs]
[Material for MkDocs]: https://squidfunk.github.io/mkdocs-material/
## Trusted by ...
### ... industry leaders
[ArXiv](https://info.arxiv.org),
[Atlassian](https://atlassian.github.io/data-center-helm-charts/),
[AWS](https://aws.github.io/copilot-cli/),
[Bloomberg](https://bloomberg.github.io/selekt/),
[CERN](http://abpcomputing.web.cern.ch/),
[CloudFlare](https://cloudflare.github.io/itty-router-openapi/),
[Datadog](https://datadoghq.dev/integrations-core/),
[Google](https://google.github.io/accompanist/),
[Hewlett Packard](https://hewlettpackard.github.io/squest/),
[ING](https://ing-bank.github.io/baker/),
[Intel](https://open-amt-cloud-toolkit.github.io/docs/),
[JetBrains](https://jetbrains.github.io/projector-client/mkdocs/),
[LinkedIn](https://linkedin.github.io/school-of-sre/),
[Microsoft](https://microsoft.github.io/code-with-engineering-playbook/),
[Mozilla](https://mozillafoundation.github.io/engineering-handbook/),
[Netflix](https://netflix.github.io/titus/),
[Red Hat](https://ansible.readthedocs.io/projects/lint/),
[Salesforce](https://policy-sentry.readthedocs.io/en/latest/),
[SIEMENS](https://opensource.siemens.com/),
[Slack](https://slackhq.github.io/circuit/),
[Square](https://square.github.io/okhttp/),
[Zalando](https://opensource.zalando.com/skipper/)
### ... and successful Open Source projects
[Arduino](https://arduino.github.io/arduino-cli/),
[Auto-GPT](https://docs.agpt.co/),
[AutoKeras](https://autokeras.com/),
[BFE](https://www.bfe-networks.net/),
[CentOS](https://docs.infra.centos.org/),
[Crystal](https://crystal-lang.org/reference/),
[Electron](https://www.electron.build/),
[FastAPI](https://fastapi.tiangolo.com/),
[GoReleaser](https://goreleaser.com/),
[Knative](https://knative.dev/docs/),
[Kubernetes](https://kops.sigs.k8s.io/),
[kSQL](https://docs.ksqldb.io/),
[Nokogiri](https://nokogiri.org/),
[OpenFaaS](https://docs.openfaas.com/),
[Percona](https://docs.percona.com/percona-monitoring-and-management/),
[Pi-Hole](https://docs.pi-hole.net/),
[Pydantic](https://pydantic-docs.helpmanual.io/),
[PyPI](https://docs.pypi.org/),
[Renovate](https://docs.renovatebot.com/),
[Traefik](https://docs.traefik.io/),
[Trivy](https://aquasecurity.github.io/trivy/),
[Vapor](https://docs.vapor.codes/),
[ZeroNet](https://zeronet.io/docs/),
[WebKit](https://docs.webkit.org/),
[WTF](https://wtfutil.com/)
## License
**MIT License**
Copyright (c) 2016-2023 Martin Donath
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.

View File

@ -0,0 +1,112 @@
# Alternatives
There are tons of static site generators and themes out there and choosing the
right one for your tech stack is a tough decision. If you're unsure if Material
for MkDocs is the right solution for you, this section should help you evaluate
alternative solutions.
## Docusaurus
[Docusaurus] by Facebook is a very popular documentation generator and a good
choice if you or your company are already using [React] to build your site.
It will generate a [single page application] which is fundamentally different
from the site Material for MkDocs generates for you.
__Advantages__
- Very powerful, customizable and extendable
- Provides many components that aid in technical writing
- Large and rich ecosystem, backed by Facebook
__Challenges__
- High learning curve, JavaScript knowledge mandatory
- JavaScript ecosystem is very volatile, rather high maintenance
- More time needed to get up and running
While [Docusaurus] is one of the best choices when it comes to documentation
sites that output a single page application, there are many more solutions,
including [Docz], [Gatsby], [Vuepress] and [Docsify] that approach
this problem similarly.
[Docusaurus]: https://docusaurus.io/
[React]: https://reactjs.org/
[single page application]: https://en.wikipedia.org/wiki/Single-page_application
[Docz]: https://www.docz.site/
[Gatsby]: https://www.gatsbyjs.com/
[VuePress]: https://vuepress.vuejs.org/
[Docsify]: https://docsify.js.org/
## Jekyll
[Jekyll] is probably one of the most mature and widespread static site
generators and is written in [Ruby]. It is not specifically geared towards
technical project documentation and has many themes to choose from, which
can be challenging.
__Advantages__
- Battle-tested, rich ecosystem, many themes to choose from
- Brings great capabilities for blogging (permalinks, tags, etc.)
- Generates a SEO-friendly site, similar to Material for MkDocs
__Challenges__
- Not specifically geared towards technical project documentation
- Limited Markdown capabilities, not as advanced as Python Markdown
- More time needed to get up and running
[Jekyll]: https://jekyllrb.com/
[Ruby]: https://www.ruby-lang.org/de/
## Sphinx
[Sphinx] is an alternative static site generator specifically geared towards
generating reference documentation, offering powerful capabilities that are
lacking in MkDocs. It uses [reStructured text], a format similar to Markdown,
which some users find harder to use.
__Advantages__
- Very powerful, customizable and extendable
- Generates reference documentation from [Python docstrings]
- Large and rich ecosystem, used by many Python projects
__Challenges__
- High learning curve, [reStructured text] syntax might be challenging
- Search is less powerful than the one provided by MkDocs
- More time needed to get up and running
If you're considering using Sphinx because you need to generate reference
documentation, you should give [mkdocstrings] a try an actively maintained
and popular framework building on top of MkDocs, implementing Sphinx-like
functionality.
[Sphinx]: https://www.sphinx-doc.org/
[reStructured text]: https://en.wikipedia.org/wiki/ReStructuredText
[Python docstrings]: https://www.python.org/dev/peps/pep-0257/
[mkdocstrings]: https://github.com/mkdocstrings/mkdocstrings
## GitBook
[GitBook] offers a hosted documentation solution that generates a beautiful and
functional site from Markdown files in your GitHub repository. However, it was
once Open Source, but turned into a closed source solution some time ago.
__Advantages__
- Hosted solution, minimal technical knowledge required
- Custom domains, authentication and other enterprise features
- Great collaboration features for teams
__Challenges__
- Closed source, not free for proprietary projects
- Limited Markdown capabilities, not as advanced as Python Markdown
- Many Open Source projects moved away from GitBook
Many users switched from [GitBook] to Material for MkDocs, as they want to keep
control and ownership of their documentation, favoring an Open Source solution.
[GitBook]: https://www.gitbook.com/

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 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

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