mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03:00
6182414ae5
This fixes: #1133 This change prevents the font changing if the Google font loads within 100ms.
390 lines
14 KiB
HTML
390 lines
14 KiB
HTML
<!--
|
|
Copyright (c) 2016-2019 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.
|
|
-->
|
|
|
|
{%- import "partials/language.html" as lang with context -%}
|
|
|
|
<!-- Theme options -->
|
|
{%- set feature = config.theme.feature -%}
|
|
{%- set palette = config.theme.palette -%}
|
|
{%- set font = config.theme.font -%}
|
|
|
|
<!doctype html>
|
|
<html lang="{{ lang.t('language') }}" class="no-js">
|
|
<head>
|
|
|
|
<!-- Metatags -->
|
|
{%- block site_meta -%}
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<!-- Keep for compatibility, see http://bit.ly/2tMB6ag -->
|
|
<meta http-equiv="x-ua-compatible" content="ie=edge" />
|
|
|
|
<!-- Page description -->
|
|
{%- if page and page.meta and page.meta.description -%}
|
|
<meta name="description"
|
|
content="{{ page.meta.description }}" />
|
|
{%- elif config.site_description -%}
|
|
<meta name="description" content="{{ config.site_description }}" />
|
|
{%- endif -%}
|
|
|
|
<!-- Redirect -->
|
|
{%- if page and page.meta and page.meta.redirect -%}
|
|
<script>
|
|
var anchor = window.location.hash.substr(1)
|
|
location.href = '{{ page.meta.redirect }}' +
|
|
(anchor ? '#' + anchor : '')
|
|
</script>
|
|
|
|
<!-- no-js fallback -->
|
|
<meta http-equiv="refresh" content="0; url={{ page.meta.redirect }}" />
|
|
<meta name="robots" content="noindex" />
|
|
<link rel="canonical" href="{{ page.meta.redirect }}" />
|
|
|
|
<!-- Canonical -->
|
|
{%- elif page.canonical_url -%}
|
|
<link rel="canonical" href="{{ page.canonical_url }}" />
|
|
{%- endif -%}
|
|
|
|
<!-- Page author -->
|
|
{%- if page and page.meta and page.meta.author -%}
|
|
<meta name="author" content="{{ page.meta.author | first }}" />
|
|
{%- elif config.site_author -%}
|
|
<meta name="author" content="{{ config.site_author }}" />
|
|
{%- endif -%}
|
|
|
|
<!-- Localization -->
|
|
{%- for key in [
|
|
"clipboard.copy",
|
|
"clipboard.copied",
|
|
"search.language",
|
|
"search.pipeline.stopwords",
|
|
"search.pipeline.trimmer",
|
|
"search.result.none",
|
|
"search.result.one",
|
|
"search.result.other",
|
|
"search.tokenizer"
|
|
] -%}
|
|
<meta name="lang:{{ key }}" content="{{ lang.t(key) }}" />
|
|
{%- endfor -%}
|
|
|
|
<!-- Favicon -->
|
|
<link rel="shortcut icon"
|
|
href="{{ config.theme.favicon | url }}">
|
|
|
|
<!-- Generator banner -->
|
|
<meta name="generator"
|
|
content="mkdocs-{{ mkdocs_version }}, $md-name$-$md-version$" />
|
|
{%- endblock -%}
|
|
|
|
<!-- Site title -->
|
|
{%- block htmltitle -%}
|
|
{%- if page and page.meta and page.meta.title -%}
|
|
<title>{{ page.meta.title }}</title>
|
|
{%- elif page and page.title and not page.is_homepage -%}
|
|
<title>{{ page.title }} - {{ config.site_name }}</title>
|
|
{%- else -%}
|
|
<title>{{ config.site_name }}</title>
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Stylesheets -->
|
|
{%- block styles -%}
|
|
|
|
<!-- Theme-related stylesheets -->
|
|
<link rel="stylesheet" type="text/css"
|
|
href="{{ 'assets/stylesheets/application.css' | url }}" />
|
|
|
|
<!-- Extra color palette -->
|
|
{%- if palette.primary or palette.accent -%}
|
|
<link rel="stylesheet" type="text/css"
|
|
href="{{ 'assets/stylesheets/application-palette.css' | url }}" />
|
|
{%- endif -%}
|
|
|
|
<!-- Theme-color meta tag for Android -->
|
|
{%- if palette.primary -%}
|
|
{%- import "partials/palette.html" as map -%}
|
|
{%- set primary = map.primary(
|
|
palette.primary | replace(" ", "-") | lower
|
|
) -%}
|
|
<meta name="theme-color" content="{{ primary }}" />
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- JavaScript libraries -->
|
|
{%- block libs -%}
|
|
<script src="{{ 'assets/javascripts/modernizr.js' | url }}"></script>
|
|
{%- endblock -%}
|
|
|
|
<!-- Webfonts -->
|
|
{%- block fonts -%}
|
|
|
|
<!-- Load fonts from Google -->
|
|
{%- if font != false -%}
|
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin />
|
|
<link rel="stylesheet" type="text/css"
|
|
href="https://fonts.googleapis.com/css?family={{
|
|
font.text | replace(' ', '+') + ':300,400,400i,700|' +
|
|
font.code | replace(' ', '+')
|
|
}}&display=fallback" />
|
|
<style>
|
|
body, input {
|
|
font-family: "{{ font.text }}", "Helvetica Neue",
|
|
Helvetica, Arial, sans-serif;
|
|
}
|
|
pre, code, kbd {
|
|
font-family: "{{ font.code }}", "Courier New",
|
|
Courier, monospace;
|
|
}
|
|
</style>
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Material icons as iconset -->
|
|
<link rel="stylesheet" type="text/css"
|
|
href="{{ 'assets/fonts/material-icons.css' | url }}" />
|
|
|
|
<!-- Progressive Web App Manifest -->
|
|
{%- if config.extra.manifest -%}
|
|
<link rel="manifest" href="{{ config.extra.manifest | url }}">
|
|
{%- endif -%}
|
|
|
|
<!-- Custom stylesheets -->
|
|
{%- for path in config["extra_css"] -%}
|
|
<link rel="stylesheet" type="text/css" href="{{ path | url }}" />
|
|
{%- endfor -%}
|
|
|
|
<!-- Analytic scripts -->
|
|
{%- block analytics -%}
|
|
{%- if config.google_analytics -%}
|
|
{%- include "partials/integrations/analytics.html" -%}
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Custom front matter -->
|
|
{%- block extrahead -%}{%- endblock -%}
|
|
</head>
|
|
|
|
<!-- Text direction and color palette, if defined -->
|
|
{%- if palette.primary or palette.accent -%}
|
|
{%- set primary = palette.primary | replace(" ", "-") | lower -%}
|
|
{%- set accent = palette.accent | replace(" ", "-") | lower -%}
|
|
<body dir="{{ lang.t('direction') }}"
|
|
data-md-color-primary="{{ primary }}"
|
|
data-md-color-accent="{{ accent }}">
|
|
{%- else -%}
|
|
<body dir="{{ lang.t('direction') }}">
|
|
{%- endif -%}
|
|
|
|
<!-- Hidden container for inline SVGs -->
|
|
<svg class="md-svg">
|
|
<defs>
|
|
|
|
<!--
|
|
Check whether the repository is hosted on one of the supported code
|
|
hosting platforms (GitHub, GitLab or Bitbucket) to show icon.
|
|
-->
|
|
{%- set platform = config.extra.repo_icon or config.repo_url -%}
|
|
{%- if "github" in platform -%}
|
|
{%- include "assets/images/icons/github.svg" -%}
|
|
{%- elif "gitlab" in platform -%}
|
|
{%- include "assets/images/icons/gitlab.svg" -%}
|
|
{%- elif "bitbucket" in platform -%}
|
|
{%- include "assets/images/icons/bitbucket.svg" -%}
|
|
{%- endif -%}
|
|
</defs>
|
|
</svg>
|
|
|
|
<!--
|
|
State toggles - we need to set autocomplete="off" in order to reset the
|
|
drawer on back button invocation in some browsers
|
|
-->
|
|
<input class="md-toggle" data-md-toggle="drawer"
|
|
type="checkbox" id="__drawer" autocomplete="off" />
|
|
<input class="md-toggle" data-md-toggle="search"
|
|
type="checkbox" id="__search" autocomplete="off" />
|
|
|
|
<!-- Overlay for expanded drawer -->
|
|
<label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
|
|
|
|
<!-- Render "skip to content" link -->
|
|
{%- if page.toc | first is defined -%}
|
|
<a href="{{ (page.toc | first).url }}" tabindex="1"
|
|
class="md-skip">
|
|
{{ lang.t('skip.link.title') }}
|
|
</a>
|
|
{%- endif -%}
|
|
|
|
<!-- Application header -->
|
|
{%- block header -%}
|
|
{%- include "partials/header.html" -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Container, necessary for web-application context -->
|
|
<div class="md-container">
|
|
|
|
<!-- Hero teaser -->
|
|
{%- block hero -%}
|
|
{%- if page and page.meta and page.meta.hero -%}
|
|
{%- include "partials/hero.html" with context -%}
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Tabs with outline -->
|
|
{%- if feature.tabs -%}
|
|
{%- include "partials/tabs.html" -%}
|
|
{%- endif -%}
|
|
|
|
<!-- Main container -->
|
|
<main class="md-main">
|
|
<div class="md-main__inner md-grid" data-md-component="container">
|
|
|
|
<!-- Navigation -->
|
|
{%- block site_nav -%}
|
|
|
|
<!-- Main navigation -->
|
|
{%- if nav -%}
|
|
<div class="md-sidebar md-sidebar--primary"
|
|
data-md-component="navigation">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
{%- include "partials/nav.html" -%}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{%- endif -%}
|
|
|
|
<!-- Table of contents -->
|
|
{%- if page.toc -%}
|
|
<div class="md-sidebar md-sidebar--secondary"
|
|
data-md-component="toc">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
{%- include "partials/toc.html" -%}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Article -->
|
|
<div class="md-content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
<!-- Content -->
|
|
{%- block content -%}
|
|
|
|
<!-- Edit button, if URL was defined -->
|
|
{%- if page.edit_url -%}
|
|
<a href="{{ page.edit_url }}"
|
|
title="{{ lang.t('edit.link.title') }}"
|
|
class="md-icon md-content__icon"><!-- edit --></a>
|
|
{%- endif -%}
|
|
|
|
<!--
|
|
Hack: check whether the content contains a h1 headline. If it
|
|
doesn't, the page title (or respectively site name) is used
|
|
as the main headline.
|
|
-->
|
|
{%- if not "\x3ch1" in page.content -%}
|
|
<h1>{{ page.title | default(config.site_name, true)}}</h1>
|
|
{%- endif -%}
|
|
|
|
<!-- Content -->
|
|
{{ page.content }}
|
|
|
|
<!-- Source files -->
|
|
{%- block source -%}
|
|
{%- if page and page.meta and page.meta.source -%}
|
|
<h2 id="__source">{{ lang.t("meta.source") }}</h2>
|
|
{%- set repo = config.repo_url -%}
|
|
{%- if repo | last == "/" -%}
|
|
{%- set repo = repo[:-1] -%}
|
|
{%- endif -%}
|
|
{%- set path = page.meta.path | default([""]) -%}
|
|
{%- set file = page.meta.source -%}
|
|
<a href="{{ [repo, path, file] | join('/') }}"
|
|
title="{{ file }}" class="md-source-file">
|
|
{{ file }}
|
|
</a>
|
|
{%- endif -%}
|
|
{%- endblock -%}
|
|
{%- endblock -%}
|
|
|
|
<!-- Disqus integration -->
|
|
{%- block disqus -%}
|
|
{%- include "partials/integrations/disqus.html" -%}
|
|
{%- endblock -%}
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
|
|
<!-- Application footer -->
|
|
{%- block footer -%}
|
|
{%- include "partials/footer.html" -%}
|
|
{%- endblock -%}
|
|
</div>
|
|
|
|
<!-- Theme-related JavaScript -->
|
|
{%- block scripts -%}
|
|
<script src="{{ 'assets/javascripts/application.js' | url }}"></script>
|
|
|
|
<!-- Load additional languages for search -->
|
|
{%- if lang.t("search.language") != "en" -%}
|
|
{%- set languages = lang.t("search.language").split(",") -%}
|
|
{%- if languages | length and languages[0] != "" -%}
|
|
{%- set path = "assets/javascripts/lunr/" -%}
|
|
<script src="{{ (path ~ 'lunr.stemmer.support.js') | url }}"></script>
|
|
{%- for language in languages | map("trim") -%}
|
|
{%- if language != "en" -%}
|
|
{%- if language == "ja" -%}
|
|
<script src="{{ (path ~ 'tinyseg.js') | url }}"></script>
|
|
{%- endif -%}
|
|
{%- if language in ($md-lunr-languages$) -%}
|
|
<script src="{{ (path ~ 'lunr.' ~ language ~ '.js') | url }}">
|
|
</script>
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{%- endfor -%}
|
|
{%- if languages | length > 1 -%}
|
|
<script src="{{ (path ~ 'lunr.multi.js') | url }}"></script>
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
|
|
<!-- Initialize application -->
|
|
<script>
|
|
app.initialize({
|
|
version: "{{ mkdocs_version }}",
|
|
url: {
|
|
base: "{{ base_url }}"
|
|
}
|
|
});
|
|
</script>
|
|
{%- for path in config["extra_javascript"] -%}
|
|
<script src="{{ path | url }}"></script>
|
|
{%- endfor -%}
|
|
{%- endblock -%}
|
|
</body>
|
|
</html>
|