opendevsecops-jekyll 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1755 -0
- data/LICENSE.txt +21 -0
- data/README.md +110 -0
- data/Rakefile +1 -0
- data/_includes/components/aux_nav.html +15 -0
- data/_includes/components/breadcrumbs.html +144 -0
- data/_includes/components/children_nav.html +33 -0
- data/_includes/components/footer.html +34 -0
- data/_includes/components/header.html +11 -0
- data/_includes/components/mermaid.html +45 -0
- data/_includes/components/nav.html +75 -0
- data/_includes/components/search_footer.html +7 -0
- data/_includes/components/search_header.html +9 -0
- data/_includes/components/sidebar.html +32 -0
- data/_includes/components/site_nav.html +67 -0
- data/_includes/css/activation.scss.liquid +332 -0
- data/_includes/css/callouts.scss.liquid +93 -0
- data/_includes/css/custom.scss.liquid +1 -0
- data/_includes/css/just-the-docs.scss.liquid +12 -0
- data/_includes/favicon.html +23 -0
- data/_includes/fix_linenos.html +73 -0
- data/_includes/footer_custom.html +3 -0
- data/_includes/head.html +53 -0
- data/_includes/head_custom.html +0 -0
- data/_includes/header_custom.html +0 -0
- data/_includes/icons/code_copy.html +15 -0
- data/_includes/icons/document.html +6 -0
- data/_includes/icons/expand.html +6 -0
- data/_includes/icons/external_link.html +5 -0
- data/_includes/icons/icons.html +13 -0
- data/_includes/icons/link.html +6 -0
- data/_includes/icons/menu.html +6 -0
- data/_includes/icons/search.html +6 -0
- data/_includes/js/custom.js +0 -0
- data/_includes/lunr/custom-data.json +0 -0
- data/_includes/lunr/custom-index.js +0 -0
- data/_includes/mermaid_config.js +1 -0
- data/_includes/nav_footer_custom.html +0 -0
- data/_includes/search_placeholder_custom.html +1 -0
- data/_includes/sorted_pages.html +109 -0
- data/_includes/title.html +5 -0
- data/_includes/toc_heading_custom.html +1 -0
- data/_layouts/about.html +5 -0
- data/_layouts/default.html +41 -0
- data/_layouts/home.html +5 -0
- data/_layouts/minimal.html +34 -0
- data/_layouts/page.html +5 -0
- data/_layouts/post.html +5 -0
- data/_layouts/table_wrappers.html +7 -0
- data/_sass/base.scss +113 -0
- data/_sass/buttons.scss +127 -0
- data/_sass/code.scss +246 -0
- data/_sass/color_schemes/dark.scss +18 -0
- data/_sass/color_schemes/legacy_light.scss +208 -0
- data/_sass/color_schemes/light.scss +16 -0
- data/_sass/content.scss +239 -0
- data/_sass/custom/custom.scss +1 -0
- data/_sass/custom/setup.scss +1 -0
- data/_sass/labels.scss +37 -0
- data/_sass/layout.scss +209 -0
- data/_sass/modules.scss +17 -0
- data/_sass/navigation.scss +235 -0
- data/_sass/print.scss +40 -0
- data/_sass/search.scss +324 -0
- data/_sass/skiptomain.scss +30 -0
- data/_sass/support/_variables.scss +117 -0
- data/_sass/support/mixins/_buttons.scss +29 -0
- data/_sass/support/mixins/_layout.scss +33 -0
- data/_sass/support/mixins/_typography.scss +84 -0
- data/_sass/support/mixins/mixins.scss +3 -0
- data/_sass/support/support.scss +2 -0
- data/_sass/tables.scss +56 -0
- data/_sass/typography.scss +63 -0
- data/_sass/utilities/_colors.scss +237 -0
- data/_sass/utilities/_layout.scss +101 -0
- data/_sass/utilities/_lists.scss +15 -0
- data/_sass/utilities/_spacing.scss +162 -0
- data/_sass/utilities/_typography.scss +85 -0
- data/_sass/utilities/utilities.scss +5 -0
- data/assets/css/just-the-docs-dark.scss +3 -0
- data/assets/css/just-the-docs-default.scss +8 -0
- data/assets/css/just-the-docs-head-nav.css +24 -0
- data/assets/css/just-the-docs-light.scss +3 -0
- data/assets/js/just-the-docs.js +616 -0
- data/assets/js/zzzz-search-data.json +74 -0
- data/bin/just-the-docs +16 -0
- data/favicon.ico +0 -0
- data/lib/tasks/search.rake +88 -0
- metadata +201 -0
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Patrick Marsceill
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
<p align="right">
|
2
|
+
<a href="https://badge.fury.io/rb/just-the-docs"><img src="https://badge.fury.io/rb/just-the-docs.svg" alt="Gem version"></a> <a href="https://github.com/just-the-docs/just-the-docs/actions/workflows/ci.yml"><img src="https://github.com/just-the-docs/just-the-docs/actions/workflows/ci.yml/badge.svg" alt="CI Build status"></a> <a href="https://app.netlify.com/sites/just-the-docs/deploys"><img src="https://api.netlify.com/api/v1/badges/9dc0386d-c2a4-4077-ad83-f02c33a6c0ca/deploy-status" alt="Netlify Status"></a>
|
3
|
+
</p>
|
4
|
+
<br><br>
|
5
|
+
<p align="center">
|
6
|
+
<h1 align="center">Just the Docs</h1>
|
7
|
+
<p align="center">A modern, highly customizable, and responsive Jekyll theme for documentation with built-in search.<br>Easily hosted on GitHub Pages with few dependencies.</p>
|
8
|
+
<p align="center"><strong><a href="https://just-the-docs.com/">See it in action!</a></strong></p>
|
9
|
+
<br><br><br>
|
10
|
+
</p>
|
11
|
+
|
12
|
+
<p align="center">A video walkthrough of various Just the Docs features</p>
|
13
|
+
|
14
|
+
https://user-images.githubusercontent.com/85418632/211225192-7e5d1116-2f4f-4305-bb9b-437fe47df071.mp4
|
15
|
+
|
16
|
+
## Installation
|
17
|
+
|
18
|
+
### Use the template
|
19
|
+
|
20
|
+
The [Just the Docs Template] provides the simplest, quickest, and easiest way to create a new website that uses the Just the Docs theme. To get started with creating a site, just click "[use the template]"!
|
21
|
+
|
22
|
+
Note: To use the theme, you do ***not*** need to clone or fork the [Just the Docs repo]! You should do that only if you intend to browse the theme docs locally, contribute to the development of the theme, or develop a new theme based on Just the Docs.
|
23
|
+
|
24
|
+
You can easily set the site created by the template to be published on [GitHub Pages] – the [template README] file explains how to do that, along with other details.
|
25
|
+
|
26
|
+
If [Jekyll] is installed on your computer, you can also build and preview the created site *locally*. This lets you test changes before committing them, and avoids waiting for GitHub Pages.[^2] And you will be able to deploy your local build to a different platform than GitHub Pages.
|
27
|
+
|
28
|
+
More specifically, the created site:
|
29
|
+
|
30
|
+
- uses a gem-based approach, i.e. uses a `Gemfile` and loads the `just-the-docs` gem
|
31
|
+
- uses the [GitHub Pages / Actions workflow] to build and publish the site on GitHub Pages
|
32
|
+
|
33
|
+
Other than that, you're free to customize sites that you create with the template, however you like. You can easily change the versions of `just-the-docs` and Jekyll it uses, as well as adding further plugins.
|
34
|
+
|
35
|
+
### Use RubyGems
|
36
|
+
|
37
|
+
Alternatively, you can install the theme as a Ruby Gem, without creating a new site.
|
38
|
+
|
39
|
+
Add this line to your Jekyll site's `Gemfile`:
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
gem "just-the-docs"
|
43
|
+
```
|
44
|
+
|
45
|
+
And add this line to your Jekyll site's `_config.yml`:
|
46
|
+
|
47
|
+
```yaml
|
48
|
+
theme: just-the-docs
|
49
|
+
```
|
50
|
+
|
51
|
+
And then execute:
|
52
|
+
|
53
|
+
$ bundle
|
54
|
+
|
55
|
+
Or install it yourself as:
|
56
|
+
|
57
|
+
$ gem install just-the-docs
|
58
|
+
|
59
|
+
Alternatively, you can run it inside Docker while developing your site
|
60
|
+
|
61
|
+
$ docker-compose up
|
62
|
+
|
63
|
+
## Usage
|
64
|
+
|
65
|
+
[View the documentation][Just the Docs] for usage information.
|
66
|
+
|
67
|
+
## Contributing
|
68
|
+
|
69
|
+
Bug reports, proposals of new features, and pull requests are welcome on GitHub at https://github.com/just-the-docs/just-the-docs. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
70
|
+
|
71
|
+
### Submitting code changes:
|
72
|
+
|
73
|
+
- Submit an [Issue](https://github.com/just-the-docs/just-the-docs/issues) that motivates the changes, using the appropriate template
|
74
|
+
- Discuss the proposed changes with other users and the maintainers
|
75
|
+
- Open a [Pull Request](https://github.com/just-the-docs/just-the-docs/pulls)
|
76
|
+
- Ensure all CI tests pass
|
77
|
+
- Provide instructions to check the effect of the changes
|
78
|
+
- Await code review
|
79
|
+
|
80
|
+
### Design and development principles of this theme:
|
81
|
+
|
82
|
+
1. As few dependencies as possible
|
83
|
+
2. No build script needed
|
84
|
+
3. First class mobile experience
|
85
|
+
4. Make the content shine
|
86
|
+
|
87
|
+
## Development
|
88
|
+
|
89
|
+
To set up your environment to develop this theme: fork this repo, the run `bundle install` from the root directory.
|
90
|
+
|
91
|
+
A modern [devcontainer configuration](https://code.visualstudio.com/docs/remote/containers) for VSCode is included.
|
92
|
+
|
93
|
+
Your theme is set up just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
|
94
|
+
|
95
|
+
When this theme is released, only the files in `_layouts`, `_includes`, and `_sass` tracked with Git will be included in the gem.
|
96
|
+
|
97
|
+
## License
|
98
|
+
|
99
|
+
The theme is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
100
|
+
|
101
|
+
[^2]: [It can take up to 10 minutes for changes to your site to publish after you push the changes to GitHub](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll#creating-your-site).
|
102
|
+
|
103
|
+
[Jekyll]: https://jekyllrb.com
|
104
|
+
[Just the Docs Template]: https://just-the-docs.github.io/just-the-docs-template/
|
105
|
+
[Just the Docs]: https://just-the-docs.com
|
106
|
+
[Just the Docs repo]: https://github.com/just-the-docs/just-the-docs
|
107
|
+
[GitHub Pages]: https://pages.github.com/
|
108
|
+
[Template README]: https://github.com/just-the-docs/just-the-docs-template/blob/main/README.md
|
109
|
+
[GitHub Pages / Actions workflow]: https://github.blog/changelog/2022-07-27-github-pages-custom-github-actions-workflows-beta/
|
110
|
+
[use the template]: https://github.com/just-the-docs/just-the-docs-template/generate
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir.glob('lib/tasks/*.rake').each {|r| import r}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<nav aria-label="Auxiliary" class="aux-nav">
|
2
|
+
<ul class="aux-nav-list">
|
3
|
+
{% for link in site.aux_links %}
|
4
|
+
<li class="aux-nav-list-item">
|
5
|
+
<a href="{{ link.last }}" class="site-button"
|
6
|
+
{% if site.aux_links_new_tab %}
|
7
|
+
target="_blank" rel="noopener noreferrer"
|
8
|
+
{% endif %}
|
9
|
+
>
|
10
|
+
{{ link.first }}
|
11
|
+
</a>
|
12
|
+
</li>
|
13
|
+
{% endfor %}
|
14
|
+
</ul>
|
15
|
+
</nav>
|
@@ -0,0 +1,144 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Include as: {%- include components/breadcrumbs.html -%}
|
3
|
+
Depends on: page, site.
|
4
|
+
Results in: HTML for the breadcrumbs component.
|
5
|
+
Overwrites:
|
6
|
+
node, pages_list, parent_page, grandparent_page.
|
7
|
+
{%- endcomment -%}
|
8
|
+
|
9
|
+
{%- if page.url != "/" and page.parent -%}
|
10
|
+
|
11
|
+
{%- capture nav_list_link -%}
|
12
|
+
<a href="{{ page.url | relative_url }}" class="nav-list-link">
|
13
|
+
{%- endcapture -%}
|
14
|
+
|
15
|
+
{%- capture site_nav -%}
|
16
|
+
{%- include_cached components/site_nav.html -%}
|
17
|
+
{%- endcapture -%}
|
18
|
+
|
19
|
+
{%- if site_nav contains nav_list_link -%}
|
20
|
+
|
21
|
+
{%- capture nav_list_simple -%}
|
22
|
+
<ul class="nav-list">
|
23
|
+
{%- endcapture -%}
|
24
|
+
|
25
|
+
{%- capture nav_list_link_class %} class="nav-list-link">
|
26
|
+
{%- endcapture -%}
|
27
|
+
|
28
|
+
{%- capture nav_category -%}
|
29
|
+
<div class="nav-category">
|
30
|
+
{%- endcapture -%}
|
31
|
+
|
32
|
+
{%- assign nav_anchor_splits =
|
33
|
+
site_nav | split: nav_list_link |
|
34
|
+
first | split: nav_category |
|
35
|
+
last | split: "</a>" -%}
|
36
|
+
|
37
|
+
{%- comment -%}
|
38
|
+
The ordinary pages (if any) and the collections pages (if any) are separated by
|
39
|
+
occurrences of nav_category.
|
40
|
+
|
41
|
+
Any ancestor nav-links of the page are contained in the last group of pages,
|
42
|
+
immediately preceding nav-lists. After splitting at "</a>", the anchor that
|
43
|
+
was split is a potential ancestor link when the following split starts with
|
44
|
+
a nav-list.
|
45
|
+
|
46
|
+
The array nav_breadcrumbs is the stack of current potential ancestors of the
|
47
|
+
current page. A split that contains one or more "</ul>"s requires that number
|
48
|
+
of potential ancestors to be popped from the stack.
|
49
|
+
|
50
|
+
The number of occurrences of a string in nav_split_next is computed by removing
|
51
|
+
them all, then dividing the resulting size difference by the length of the string.
|
52
|
+
{%- endcomment %}
|
53
|
+
|
54
|
+
{%- assign nav_breadcrumbs = "" | split: "" -%}
|
55
|
+
|
56
|
+
{%- for nav_split in nav_anchor_splits -%}
|
57
|
+
{%- unless forloop.last -%}
|
58
|
+
|
59
|
+
{%- assign nav_split_next = nav_anchor_splits[forloop.index] | strip -%}
|
60
|
+
|
61
|
+
{%- assign nav_split_test =
|
62
|
+
nav_split_next | remove_first: nav_list_simple | prepend: nav_list_simple -%}
|
63
|
+
{%- if nav_split_test == nav_split_next -%}
|
64
|
+
{%- assign nav_breadcrumb_link =
|
65
|
+
nav_split | split: "<a " | last | prepend: "<a " |
|
66
|
+
replace: nav_list_link_class, ">" | append: "</a>" -%}
|
67
|
+
{%- assign nav_breadcrumbs = nav_breadcrumbs | push: nav_breadcrumb_link -%}
|
68
|
+
{%- endif -%}
|
69
|
+
|
70
|
+
{%- if nav_split_next contains "</ul>" -%}
|
71
|
+
{%- assign nav_list_end_less = nav_split_next | remove: "</ul>" -%}
|
72
|
+
{%- assign nav_list_end_count =
|
73
|
+
nav_split_next.size | minus: nav_list_end_less.size | divided_by: 5 -%}
|
74
|
+
{% for nav_end_index in (1..nav_list_end_count) %}
|
75
|
+
{%- assign nav_breadcrumbs = nav_breadcrumbs | pop -%}
|
76
|
+
{%- endfor -%}
|
77
|
+
{%- endif -%}
|
78
|
+
|
79
|
+
{%- endunless -%}
|
80
|
+
{%- endfor -%}
|
81
|
+
|
82
|
+
{%- assign nav_parent_link = nav_breadcrumbs[-1] -%}
|
83
|
+
{%- assign nav_grandparent_link = nav_breadcrumbs[-2] -%}
|
84
|
+
|
85
|
+
{%- else -%}
|
86
|
+
|
87
|
+
{%- comment -%}
|
88
|
+
Pages whose links are excluded from the main navigation may still have
|
89
|
+
breadcrumbs. Determining them appears to require inspecting the front matter
|
90
|
+
of all the pages in the same group. For sites with 100s of pages, this is too
|
91
|
+
inefficient in Jekyll 3 (also when the for-loop is replaced by where-filters).
|
92
|
+
{%- endcomment -%}
|
93
|
+
|
94
|
+
{%- assign pages_list = site[page.collection] | default: site.html_pages -%}
|
95
|
+
|
96
|
+
{%- assign parent_page = nil -%}
|
97
|
+
{%- assign grandparent_page = nil -%}
|
98
|
+
|
99
|
+
{%- for node in pages_list -%}
|
100
|
+
|
101
|
+
{%- if node.has_children and page.grand_parent -%}
|
102
|
+
|
103
|
+
{%- if node.title == page.parent and node.parent == page.grand_parent -%}
|
104
|
+
{%- assign parent_page = node -%}
|
105
|
+
{%- endif -%}
|
106
|
+
{%- if node.title == page.grand_parent -%}
|
107
|
+
{%- assign grandparent_page = node -%}
|
108
|
+
{%- endif -%}
|
109
|
+
{%- if parent_page and grandparent_page -%}
|
110
|
+
{%- break -%}
|
111
|
+
{%- endif -%}
|
112
|
+
|
113
|
+
{%- elsif node.has_children and node.title == page.parent and node.parent == nil -%}
|
114
|
+
|
115
|
+
{%- assign parent_page = node -%}
|
116
|
+
{%- break -%}
|
117
|
+
|
118
|
+
{%- endif -%}
|
119
|
+
|
120
|
+
{%- endfor -%}
|
121
|
+
|
122
|
+
{%- capture nav_parent_link -%}
|
123
|
+
<a href="{{ parent_page.url | relative_url }}">{{ page.parent }}</a>
|
124
|
+
{%- endcapture -%}
|
125
|
+
|
126
|
+
{%- if page.grand_parent %}
|
127
|
+
{%- capture nav_grandparent_link -%}
|
128
|
+
<a href="{{ grandparent_page.url | relative_url }}">{{ page.grand_parent }}</a>
|
129
|
+
{%- endcapture -%}
|
130
|
+
{%- endif -%}
|
131
|
+
|
132
|
+
{%- endif -%}
|
133
|
+
|
134
|
+
<nav aria-label="Breadcrumb" class="breadcrumb-nav">
|
135
|
+
<ol class="breadcrumb-nav-list">
|
136
|
+
{%- if nav_grandparent_link %}
|
137
|
+
<li class="breadcrumb-nav-list-item">{{ nav_grandparent_link }}</li>
|
138
|
+
{%- endif %}
|
139
|
+
<li class="breadcrumb-nav-list-item">{{ nav_parent_link }}</li>
|
140
|
+
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
|
141
|
+
</ol>
|
142
|
+
</nav>
|
143
|
+
|
144
|
+
{%- endif -%}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Include as: {%- include components/children_nav.html -%}
|
3
|
+
Depends on: page, site.
|
4
|
+
Results in: HTML for the children-navigation component.
|
5
|
+
Includes:
|
6
|
+
sorted_pages.html
|
7
|
+
toc_heading_custom.html
|
8
|
+
Overwrites:
|
9
|
+
child_pages.
|
10
|
+
{%- endcomment -%}
|
11
|
+
|
12
|
+
{%- if page.has_children == true and page.has_toc != false -%}
|
13
|
+
{%- assign child_pages = site[page.collection]
|
14
|
+
| default: site.html_pages
|
15
|
+
| where: "parent", page.title
|
16
|
+
| where: "grand_parent", page.parent -%}
|
17
|
+
|
18
|
+
{%- include sorted_pages.html pages = child_pages -%}
|
19
|
+
|
20
|
+
{%- if page.child_nav_order == 'desc' or page.child_nav_order == 'reversed' -%}
|
21
|
+
{%- assign sorted_pages = sorted_pages | reverse -%}
|
22
|
+
{%- endif -%}
|
23
|
+
{%- endif -%}
|
24
|
+
|
25
|
+
<hr>
|
26
|
+
{% include toc_heading_custom.html %}
|
27
|
+
<ul>
|
28
|
+
{% for child in sorted_pages %}
|
29
|
+
<li>
|
30
|
+
<a href="{{ child.url | relative_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
|
31
|
+
</li>
|
32
|
+
{% endfor %}
|
33
|
+
</ul>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
{% capture footer_custom %}
|
2
|
+
{%- include footer_custom.html -%}
|
3
|
+
{% endcapture %}
|
4
|
+
{% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
|
5
|
+
<hr>
|
6
|
+
<footer>
|
7
|
+
{% if site.back_to_top %}
|
8
|
+
<p><a href="#top" id="back-to-top">{{ site.back_to_top_text }}</a></p>
|
9
|
+
{% endif %}
|
10
|
+
|
11
|
+
{{ footer_custom }}
|
12
|
+
|
13
|
+
{% if site.last_edit_timestamp or site.gh_edit_link %}
|
14
|
+
<div class="d-flex mt-2">
|
15
|
+
{% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}
|
16
|
+
<p class="text-small text-grey-dk-000 mb-0 mr-2">
|
17
|
+
Page last modified: <span class="d-inline-block">{{ page.last_modified_date | date: site.last_edit_time_format }}</span>.
|
18
|
+
</p>
|
19
|
+
{% endif %}
|
20
|
+
{% if
|
21
|
+
site.gh_edit_link and
|
22
|
+
site.gh_edit_link_text and
|
23
|
+
site.gh_edit_repository and
|
24
|
+
site.gh_edit_branch and
|
25
|
+
site.gh_edit_view_mode
|
26
|
+
%}
|
27
|
+
<p class="text-small text-grey-dk-000 mb-0">
|
28
|
+
<a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}{% if page.collection and site.collections_dir %}/{{ site.collections_dir }}{% endif %}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
|
29
|
+
</p>
|
30
|
+
{% endif %}
|
31
|
+
</div>
|
32
|
+
{% endif %}
|
33
|
+
</footer>
|
34
|
+
{% endif %}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div id="main-header" class="main-header">
|
2
|
+
{% if site.search_enabled != false %}
|
3
|
+
{% include components/search_header.html %}
|
4
|
+
{% else %}
|
5
|
+
<div></div>
|
6
|
+
{% endif %}
|
7
|
+
{% include header_custom.html %}
|
8
|
+
{% if site.aux_links %}
|
9
|
+
{% include components/aux_nav.html %}
|
10
|
+
{% endif %}
|
11
|
+
</div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
{% comment %}
|
2
|
+
The complexity of this file comes from a breaking change in Mermaid v10; mermaid.init has been deprecated (and supposedly, didn't work earlier?).
|
3
|
+
|
4
|
+
So, we check whether the user's Mermaid version is >= 10; if not, we fall back to the previous init syntax.
|
5
|
+
|
6
|
+
If a user is using a custom mermaid file and doesn't specify a version, we default to the < v10 behaviour. Users who use version v10 or above should specify this in the version key.
|
7
|
+
{% endcomment %}
|
8
|
+
|
9
|
+
{% if site.mermaid.version %}
|
10
|
+
{% assign mermaid_major_version = site.mermaid.version | split: "." | first | plus: 0 %}
|
11
|
+
{% else %}
|
12
|
+
{% assign mermaid_major_version = 9 %}
|
13
|
+
{% endif %}
|
14
|
+
|
15
|
+
{% if mermaid_major_version > 9 %}
|
16
|
+
|
17
|
+
<script type="module">
|
18
|
+
{% if site.mermaid.path %}
|
19
|
+
import mermaid from '{{ site.mermaid.path | relative_url }}';
|
20
|
+
{% else %}
|
21
|
+
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@{{ site.mermaid.version }}/dist/mermaid.esm.min.mjs';
|
22
|
+
{% endif %}
|
23
|
+
|
24
|
+
var config = {% include mermaid_config.js %};
|
25
|
+
mermaid.initialize(config);
|
26
|
+
mermaid.run({
|
27
|
+
querySelector: '.language-mermaid',
|
28
|
+
});
|
29
|
+
</script>
|
30
|
+
|
31
|
+
{% else %}
|
32
|
+
|
33
|
+
{% if site.mermaid.path %}
|
34
|
+
<script src="{{ site.mermaid.path | relative_url }}"></script>
|
35
|
+
{% else %}
|
36
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid@{{ site.mermaid.version }}/dist/mermaid.min.js"></script>
|
37
|
+
{% endif %}
|
38
|
+
|
39
|
+
<script>
|
40
|
+
var config = {% include mermaid_config.js %};
|
41
|
+
mermaid.initialize(config);
|
42
|
+
window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));
|
43
|
+
</script>
|
44
|
+
|
45
|
+
{% endif %}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Include as: {%- include components/nav.html pages=pages -%}
|
3
|
+
Depends on: include.pages.
|
4
|
+
Results in: HTML for the navigation panel.
|
5
|
+
Includes:
|
6
|
+
sorted_pages.html
|
7
|
+
Overwrites:
|
8
|
+
nav_pages, first_level_pages, second_level_pages, third_level_pages,
|
9
|
+
node, children_list, child, grand_children_list, grand_child.
|
10
|
+
{%- endcomment -%}
|
11
|
+
|
12
|
+
{%- assign nav_pages = include.pages
|
13
|
+
| where_exp: "item", "item.title != nil"
|
14
|
+
| where_exp: "item", "item.nav_exclude != true" -%}
|
15
|
+
|
16
|
+
{%- include sorted_pages.html pages = nav_pages -%}
|
17
|
+
|
18
|
+
{%- comment -%}
|
19
|
+
It might be more efficient to sort the pages at each level separately.
|
20
|
+
{%- endcomment -%}
|
21
|
+
|
22
|
+
{%- assign first_level_pages = sorted_pages
|
23
|
+
| where_exp: "item", "item.parent == nil" -%}
|
24
|
+
{%- assign second_level_pages = sorted_pages
|
25
|
+
| where_exp: "item", "item.parent != nil"
|
26
|
+
| where_exp: "item", "item.grand_parent == nil" -%}
|
27
|
+
{%- assign third_level_pages = sorted_pages
|
28
|
+
| where_exp: "item", "item.grand_parent != nil" -%}
|
29
|
+
|
30
|
+
<ul class="nav-list">
|
31
|
+
{%- for node in first_level_pages -%}
|
32
|
+
<li class="nav-list-item">
|
33
|
+
{%- if node.has_children -%}
|
34
|
+
<button class="nav-list-expander btn-reset" aria-label="toggle items in {{ node.title }} category" aria-pressed="false">
|
35
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
36
|
+
</button>
|
37
|
+
{%- endif -%}
|
38
|
+
<a href="{{ node.url | relative_url }}" class="nav-list-link">{{ node.title }}</a>
|
39
|
+
{%- if node.has_children -%}
|
40
|
+
{%- assign children_list = second_level_pages
|
41
|
+
| where: "parent", node.title -%}
|
42
|
+
{%- if node.child_nav_order == 'desc' or node.child_nav_order == 'reversed' -%}
|
43
|
+
{%- assign children_list = children_list | reverse -%}
|
44
|
+
{%- endif -%}
|
45
|
+
<ul class="nav-list">
|
46
|
+
{%- for child in children_list -%}
|
47
|
+
<li class="nav-list-item">
|
48
|
+
{%- if child.has_children -%}
|
49
|
+
<button class="nav-list-expander btn-reset" aria-label="toggle items in {{ child.title }} category" aria-pressed="false">
|
50
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
51
|
+
</button>
|
52
|
+
{%- endif -%}
|
53
|
+
<a href="{{ child.url | relative_url }}" class="nav-list-link">{{ child.title }}</a>
|
54
|
+
{%- if child.has_children -%}
|
55
|
+
{%- assign grand_children_list = third_level_pages
|
56
|
+
| where: "parent", child.title
|
57
|
+
| where: "grand_parent", node.title -%}
|
58
|
+
{%- if child.child_nav_order == 'desc' or child.child_nav_order == 'reversed' -%}
|
59
|
+
{%- assign grand_children_list = grand_children_list | reverse -%}
|
60
|
+
{%- endif -%}
|
61
|
+
<ul class="nav-list">
|
62
|
+
{%- for grand_child in grand_children_list -%}
|
63
|
+
<li class="nav-list-item">
|
64
|
+
<a href="{{ grand_child.url | relative_url }}" class="nav-list-link">{{ grand_child.title }}</a>
|
65
|
+
</li>
|
66
|
+
{%- endfor -%}
|
67
|
+
</ul>
|
68
|
+
{%- endif -%}
|
69
|
+
</li>
|
70
|
+
{%- endfor -%}
|
71
|
+
</ul>
|
72
|
+
{%- endif -%}
|
73
|
+
</li>
|
74
|
+
{%- endfor -%}
|
75
|
+
</ul>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{% if site.search.button %}
|
2
|
+
<button id="search-button" class="search-button btn-reset" aria-label="Focus on search">
|
3
|
+
<svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
|
4
|
+
</button>
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
<div class="search-overlay"></div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
{% capture search_placeholder %}{% include search_placeholder_custom.html %}{% endcapture %}
|
2
|
+
|
3
|
+
<div class="search" role="search">
|
4
|
+
<div class="search-input-wrap">
|
5
|
+
<input type="text" id="search-input" class="search-input" tabindex="0" placeholder="{{ search_placeholder | strip_html | strip }}" aria-label="{{ search_placeholder | strip_html| strip }}" autocomplete="off">
|
6
|
+
<label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label>
|
7
|
+
</div>
|
8
|
+
<div id="search-results" class="search-results"></div>
|
9
|
+
</div>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Include as: {%- include components/sidebar.html -%}
|
3
|
+
Depends on: page(?), site.
|
4
|
+
Results in: HTML for the side bar.
|
5
|
+
Includes:
|
6
|
+
title.html, components/site_nav.html, nav_footer_custom.html
|
7
|
+
Overwrites:
|
8
|
+
nav_footer_custom.
|
9
|
+
Should not be cached, because nav_footer_custom.html might depend on page.
|
10
|
+
{%- endcomment -%}
|
11
|
+
|
12
|
+
<div class="side-bar">
|
13
|
+
<div class="site-header" role="banner">
|
14
|
+
<a href="{{ '/' | relative_url }}" class="site-title lh-tight">{% include title.html %}</a>
|
15
|
+
<button id="menu-button" class="site-button btn-reset" aria-label="Toggle menu" aria-pressed="false">
|
16
|
+
<svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
|
17
|
+
</button>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
{% include_cached components/site_nav.html %}
|
21
|
+
|
22
|
+
{% capture nav_footer_custom %}
|
23
|
+
{%- include nav_footer_custom.html -%}
|
24
|
+
{% endcapture %}
|
25
|
+
{% if nav_footer_custom != "" %}
|
26
|
+
{{ nav_footer_custom }}
|
27
|
+
{% else %}
|
28
|
+
<footer class="site-footer">
|
29
|
+
This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.
|
30
|
+
</footer>
|
31
|
+
{% endif %}
|
32
|
+
</div>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Include as: {%- include_cached components/site_nav.html -%}
|
3
|
+
Depends on: site.
|
4
|
+
Results in: HTML for the site-nav.
|
5
|
+
Includes:
|
6
|
+
components/nav.html
|
7
|
+
Overwrites:
|
8
|
+
pages_top_size, collections_size, collection_entry,
|
9
|
+
collection_key, collection_value, collection.
|
10
|
+
{%- endcomment -%}
|
11
|
+
|
12
|
+
<nav aria-label="Main" id="site-nav" class="site-nav">
|
13
|
+
{% assign pages_top_size = site.html_pages
|
14
|
+
| where_exp:"item", "item.title != nil"
|
15
|
+
| where_exp:"item", "item.parent == nil"
|
16
|
+
| where_exp:"item", "item.nav_exclude != true"
|
17
|
+
| size %}
|
18
|
+
{% if pages_top_size > 0 %}
|
19
|
+
{% include components/nav.html pages=site.html_pages %}
|
20
|
+
{% endif %}
|
21
|
+
{%- if site.nav_external_links -%}
|
22
|
+
<ul class="nav-list">
|
23
|
+
{%- for node in site.nav_external_links -%}
|
24
|
+
<li class="nav-list-item external">
|
25
|
+
<a href="{{ node.url | absolute_url }}" class="nav-list-link external"
|
26
|
+
{% if node.opens_in_new_tab or node.opens_in_new_tab == nil and site.nav_external_links_new_tab %}
|
27
|
+
target="_blank" rel="noopener noreferrer"
|
28
|
+
{% endif %}
|
29
|
+
>
|
30
|
+
{{ node.title }}
|
31
|
+
{% unless node.hide_icon %}<svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg>{% endunless %}
|
32
|
+
</a>
|
33
|
+
</li>
|
34
|
+
{%- endfor -%}
|
35
|
+
</ul>
|
36
|
+
{%- endif -%}
|
37
|
+
{% if site.just_the_docs.collections %}
|
38
|
+
{% assign collections_size = site.just_the_docs.collections | size %}
|
39
|
+
{% for collection_entry in site.just_the_docs.collections %}
|
40
|
+
{% assign collection_key = collection_entry[0] %}
|
41
|
+
{% assign collection_value = collection_entry[1] %}
|
42
|
+
{% assign collection = site[collection_key] %}
|
43
|
+
{% if collection_value.nav_exclude != true %}
|
44
|
+
{% if collections_size > 1 or pages_top_size > 0 %}
|
45
|
+
{% if collection_value.nav_fold == true %}
|
46
|
+
<ul class="nav-list nav-category-list">
|
47
|
+
<li class="nav-list-item">
|
48
|
+
{%- if collection.size > 0 -%}
|
49
|
+
<button class="nav-list-expander btn-reset" aria-label="Toggle collection {{ collection_value.name }}" aria-pressed="false">
|
50
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
51
|
+
</button>
|
52
|
+
{%- endif -%}
|
53
|
+
<div class="nav-category">{{ collection_value.name }}</div>
|
54
|
+
{% include components/nav.html pages=collection %}
|
55
|
+
</li>
|
56
|
+
</ul>
|
57
|
+
{% else %}
|
58
|
+
<div class="nav-category">{{ collection_value.name }}</div>
|
59
|
+
{% include components/nav.html pages=collection %}
|
60
|
+
{% endif %}
|
61
|
+
{% else %}
|
62
|
+
{% include components/nav.html pages=collection %}
|
63
|
+
{% endif %}
|
64
|
+
{% endif %}
|
65
|
+
{% endfor %}
|
66
|
+
{% endif %}
|
67
|
+
</nav>
|