jekyll-theme-primerpages 2.3.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/LICENSE +21 -0
- data/README.md +65 -0
- data/_config.yml +149 -0
- data/_includes/awesome-nav-breadcrumb-trail.html +33 -0
- data/_includes/awesome-nav-breadcrumbs.html +51 -0
- data/_includes/awesome-nav-menu-tree.html +21 -0
- data/_includes/awesome-nav-menu.html +68 -0
- data/_includes/awesome-nav-sidebar.html +7 -0
- data/_includes/awesome-nav-tree.html +52 -0
- data/_includes/breadcrumbs.html +62 -0
- data/_includes/category_index.html +18 -0
- data/_includes/collection-menu.html +79 -0
- data/_includes/collection-sidebar.html +23 -0
- data/_includes/custom-colors.html +99 -0
- data/_includes/footer.html +13 -0
- data/_includes/head.html +43 -0
- data/_includes/header-appbar.html +53 -0
- data/_includes/header-sidebar.html +60 -0
- data/_includes/header-stacked.html +33 -0
- data/_includes/header-topbar.html +59 -0
- data/_includes/link-card.html +52 -0
- data/_includes/links.html +12 -0
- data/_includes/masthead.html +18 -0
- data/_includes/mini-repo-info-card.html +30 -0
- data/_includes/nav-overlay.html +53 -0
- data/_includes/nav.html +51 -0
- data/_includes/navbar-underline.html +51 -0
- data/_includes/paginator_nav.html +28 -0
- data/_includes/post-card.html +27 -0
- data/_includes/post-feature-card.html +24 -0
- data/_includes/post-gallery.html +52 -0
- data/_includes/post-index.html +35 -0
- data/_includes/post-tease-image-card.html +22 -0
- data/_includes/post-tease-text-card.html +12 -0
- data/_includes/post-timeline-card.html +84 -0
- data/_includes/post-timeline.html +31 -0
- data/_includes/posts.html +12 -0
- data/_includes/related.html +116 -0
- data/_includes/repo-card.html +43 -0
- data/_includes/repositories.html +27 -0
- data/_includes/resolve-versioning.html +16 -0
- data/_includes/social.html +390 -0
- data/_includes/toggle.html +4 -0
- data/_includes/user-metadata.html +36 -0
- data/_includes/version-selector.html +22 -0
- data/_includes/version-warning.html +15 -0
- data/_layouts/category_index.html +16 -0
- data/_layouts/category_layout.html +33 -0
- data/_layouts/default.html +33 -0
- data/_layouts/docs.html +189 -0
- data/_layouts/docs_index.html +32 -0
- data/_layouts/home.html +3 -0
- data/_layouts/landing.html +38 -0
- data/_layouts/linktree.html +36 -0
- data/_layouts/page.html +22 -0
- data/_layouts/paginate.html +16 -0
- data/_layouts/paginate_timeline.html +17 -0
- data/_layouts/post.html +136 -0
- data/_layouts/profile.html +48 -0
- data/_layouts/repositories.html +11 -0
- data/_layouts/tag_index.html +16 -0
- data/_layouts/tags.html +12 -0
- data/_sass/_admonitions.scss +69 -0
- data/_sass/_highlight-syntax.scss +96 -0
- data/_sass/_language-colors.scss +1443 -0
- data/_sass/_main.scss +274 -0
- data/_sass/jekyll-theme-primerpages-compat.scss +5 -0
- data/_sass/jekyll-theme-primerpages.scss +7 -0
- data/assets/css/style.scss +2 -0
- data/assets/css/theme.scss +16 -0
- data/assets/img/default.png +0 -0
- data/assets/img/favicon.ico +0 -0
- data/assets/img/social-preview.png +0 -0
- data/assets/img/user-image.jpg +0 -0
- data/assets/js/anchor-links.js +47 -0
- data/assets/js/mermaid.js +61 -0
- data/assets/js/theme-toggle.js +84 -0
- data/assets/js/topbar.js +19 -0
- data/assets/js/versioning.js +300 -0
- metadata +184 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 8e85788fbafe6d2a972e879708ea14bced190302c46573bf269d2891316de630
|
|
4
|
+
data.tar.gz: 68c72c917ec48322cbbb9d6f268b840ad8033eaddd52726200872a6083c15227
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: cbd956cc3bcf6f95217a1dab4f08fe08f5847bef838e1311bb24b45caa433536551d1c23639be5298ab1795e2e7eaee18307b4736587e0ef305925dd89d5ae3a
|
|
7
|
+
data.tar.gz: 64abeff7b9ca357b8afce82229811ee638841d6b8eb99a5a40743276cf4b93c70a690344983649938c428cf0d1936dea06d8fe8ed6a412c235bcc82bc992f545
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Allison Thackston
|
|
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 all
|
|
13
|
+
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 THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# PrimerPages Jekyll Theme
|
|
2
|
+
|
|
3
|
+
PrimerPages is a Jekyll theme for GitHub-flavored project sites, profile pages,
|
|
4
|
+
documentation, blogs, and link pages. It is built with GitHub Primer styles and
|
|
5
|
+
published as the `jekyll-theme-primerpages` gem.
|
|
6
|
+
|
|
7
|
+
> [!NOTE]
|
|
8
|
+
> This theme was renamed from `jekyll-theme-profile` to
|
|
9
|
+
> `jekyll-theme-primerpages`. New sites should use the PrimerPages package name.
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
Add the theme to your site's `Gemfile`:
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
source "https://rubygems.org"
|
|
17
|
+
|
|
18
|
+
gem "jekyll-theme-primerpages"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Install the gem:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
bundle install
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Enable the theme in `_config.yml`:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
theme: jekyll-theme-primerpages
|
|
31
|
+
title: My Site
|
|
32
|
+
description: A site built with PrimerPages
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Create an `index.md` page:
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
---
|
|
39
|
+
layout: profile
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
# Hello, PrimerPages
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Run the site locally:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
bundle exec jekyll serve
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Then open `http://localhost:4000`.
|
|
52
|
+
|
|
53
|
+
## Documentation
|
|
54
|
+
|
|
55
|
+
Full documentation is available at [primerpages.com](https://www.primerpages.com).
|
|
56
|
+
|
|
57
|
+
## Contributing
|
|
58
|
+
|
|
59
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development and contribution
|
|
60
|
+
guidelines.
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
The theme is available as open source under the terms of the
|
|
65
|
+
[MIT License](LICENSE).
|
data/_config.yml
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# ######## Jekyll Site Settings ##########
|
|
2
|
+
theme: jekyll-theme-primerpages
|
|
3
|
+
title: PrimerPages
|
|
4
|
+
description: Theme built with jekyll-theme-primerpages
|
|
5
|
+
# image: /assets/img/social-preview.png
|
|
6
|
+
repository: PrimerPages/jekyll-theme-primerpages
|
|
7
|
+
|
|
8
|
+
defaults:
|
|
9
|
+
- scope:
|
|
10
|
+
path: "" # an empty string here means all files in the project
|
|
11
|
+
type: "posts"
|
|
12
|
+
values:
|
|
13
|
+
image: /assets/img/default.png # The default image used for social and posts.
|
|
14
|
+
layout: "post"
|
|
15
|
+
permalink: :year/:month/:day/:title:output_ext
|
|
16
|
+
toc: true
|
|
17
|
+
- scope:
|
|
18
|
+
path: "" # an empty string here means all files in the project
|
|
19
|
+
type: "pages"
|
|
20
|
+
values:
|
|
21
|
+
layout: "page"
|
|
22
|
+
image: /assets/img/default.png # The default image used for social and posts.
|
|
23
|
+
|
|
24
|
+
# ########### Theme settings ###############
|
|
25
|
+
# The style of the website
|
|
26
|
+
style: appbar # One of "stacked", "sidebar", "topbar", "appbar"
|
|
27
|
+
# The user/project avatar. If not set the avatar of the project owner will be used.
|
|
28
|
+
# user_image: /assets/img/user-image.jpg
|
|
29
|
+
# The header brand icon. Use "none", "favicon", or an Octicon name like "mark-github".
|
|
30
|
+
# header_icon: favicon
|
|
31
|
+
# The themes to use for dark and light
|
|
32
|
+
dark_theme: dark # One of dark, dark_dimmed, dark_colorblind, dark_high_contrast, dark_tritanopia
|
|
33
|
+
light_theme: light # One of light, light_colorblind, light_high_contrast, light_tritanopia
|
|
34
|
+
|
|
35
|
+
repo_info: true # Show the information for the source of this project
|
|
36
|
+
user_metadata: true # Show the metadata associated with the user
|
|
37
|
+
profile_link: true # Show a link to the github profile for the user
|
|
38
|
+
|
|
39
|
+
####################
|
|
40
|
+
# Versioned docs settings
|
|
41
|
+
# versions:
|
|
42
|
+
# enabled: true
|
|
43
|
+
# config: /versions.json
|
|
44
|
+
# prefix: ""
|
|
45
|
+
# # config and prefix are emitted exactly as configured here
|
|
46
|
+
# # versioning is enabled only when this block is present, or when enabled is explicitly true
|
|
47
|
+
# show_warning: true
|
|
48
|
+
# warning_title: Non-default version
|
|
49
|
+
# warning_message: You are viewing a non-default version of these docs.
|
|
50
|
+
# unavailable_label: Version info unavailable
|
|
51
|
+
|
|
52
|
+
##########################
|
|
53
|
+
# # Social media settings
|
|
54
|
+
# icon_color: "#959da5" # The color of the social media icons on the site
|
|
55
|
+
# social_media: # Your social media accounts
|
|
56
|
+
# behance: your_username
|
|
57
|
+
# dribbble: your_username
|
|
58
|
+
# docker: your_username
|
|
59
|
+
# facebook: your_username
|
|
60
|
+
# github: your_username
|
|
61
|
+
# hackerrank: your_username
|
|
62
|
+
# instagram: your_username
|
|
63
|
+
# keybase: your_username
|
|
64
|
+
# linkedin: your_username
|
|
65
|
+
# mail: email@address
|
|
66
|
+
# mastodon: your_username
|
|
67
|
+
# medium: your_username
|
|
68
|
+
# stackoverflow: your_user_id
|
|
69
|
+
# telegram: your_username
|
|
70
|
+
# threads: your_username
|
|
71
|
+
# tiktok: your_username
|
|
72
|
+
# twitter: your_username
|
|
73
|
+
# unsplash: your_username
|
|
74
|
+
# vk: your_username
|
|
75
|
+
# vscode: your_username
|
|
76
|
+
# youtube: your_username
|
|
77
|
+
# x: your_username
|
|
78
|
+
|
|
79
|
+
####################
|
|
80
|
+
# Navigation links
|
|
81
|
+
# nav:
|
|
82
|
+
# - name: Posts
|
|
83
|
+
# url: /blog
|
|
84
|
+
# - name: Categories
|
|
85
|
+
# url: /category/
|
|
86
|
+
|
|
87
|
+
####################
|
|
88
|
+
# List of links for link cards
|
|
89
|
+
# links:
|
|
90
|
+
# - name: All blog posts
|
|
91
|
+
# url: /blog
|
|
92
|
+
# thumbnail: /assets/img/blog-post-icon.png
|
|
93
|
+
# - name: Browse by category
|
|
94
|
+
# url: /category/
|
|
95
|
+
# thumbnail: /assets/img/category-icon.png
|
|
96
|
+
|
|
97
|
+
###################
|
|
98
|
+
# Repositories to show on home page
|
|
99
|
+
repositories:
|
|
100
|
+
sort_by: stars #pushed or stars
|
|
101
|
+
limit: 24
|
|
102
|
+
exclude:
|
|
103
|
+
archived: true
|
|
104
|
+
forks: true
|
|
105
|
+
repositories:
|
|
106
|
+
# - list of repositories to exclude
|
|
107
|
+
|
|
108
|
+
########################
|
|
109
|
+
# Post settings
|
|
110
|
+
related_by: "tags or categories"
|
|
111
|
+
|
|
112
|
+
# ########### Plugin settings ###############
|
|
113
|
+
plugins:
|
|
114
|
+
# - jekyll-github-metadata
|
|
115
|
+
# - jekyll-meta
|
|
116
|
+
# - jekyll-octicons
|
|
117
|
+
- jekyll-seo-tag
|
|
118
|
+
# - jekyll-toc
|
|
119
|
+
- jemoji
|
|
120
|
+
|
|
121
|
+
####################
|
|
122
|
+
# jekyll-paginate settings
|
|
123
|
+
# Include `gem jekyll-paginate` in your gemfile
|
|
124
|
+
# paginate: 6 # The number of posts to show per page of pagination of blog posts
|
|
125
|
+
# paginate_path: "/blog/page:num"
|
|
126
|
+
# ###################
|
|
127
|
+
# jekyll-tagging settings
|
|
128
|
+
# Include `gem jekyll-tagging` in your gemfile
|
|
129
|
+
# tag_page_layout: tags
|
|
130
|
+
# tag_page_dir: tags
|
|
131
|
+
# ####################
|
|
132
|
+
# jekyll-category-pages settings
|
|
133
|
+
# Include `gem jekyll-category-pages` in your gemfile
|
|
134
|
+
# category_path: category
|
|
135
|
+
# category_layout: category_layout.html
|
|
136
|
+
######################
|
|
137
|
+
|
|
138
|
+
# ########### Build settings ###############
|
|
139
|
+
exclude:
|
|
140
|
+
- spec
|
|
141
|
+
- demo
|
|
142
|
+
- .sass-cache
|
|
143
|
+
- .jekyll-cache
|
|
144
|
+
- gemfiles
|
|
145
|
+
- Gemfile
|
|
146
|
+
- Gemfile.lock
|
|
147
|
+
- node_modules
|
|
148
|
+
- vendor/
|
|
149
|
+
- integration/
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{% for nav_item in include.items %}
|
|
2
|
+
{% assign item_url = nav_item.url | default: "" %}
|
|
3
|
+
{% assign is_current = nav_item.current | default: false %}
|
|
4
|
+
{% assign contains_current = nav_item.contains_current | default: false %}
|
|
5
|
+
{% assign has_children = nav_item.children and nav_item.children.size > 0 %}
|
|
6
|
+
{% assign skip_item = false %}
|
|
7
|
+
|
|
8
|
+
{% if include.root_url and item_url != "" and item_url == include.root_url %}
|
|
9
|
+
{% assign skip_item = true %}
|
|
10
|
+
{% endif %}
|
|
11
|
+
|
|
12
|
+
{% if is_current or contains_current %}
|
|
13
|
+
{% unless skip_item %}
|
|
14
|
+
{% if is_current %}
|
|
15
|
+
<li class="breadcrumb-item breadcrumb-item-selected" aria-current="page">
|
|
16
|
+
{{ nav_item.title }}
|
|
17
|
+
</li>
|
|
18
|
+
{% elsif item_url != "" %}
|
|
19
|
+
<li class="breadcrumb-item">
|
|
20
|
+
<a href="{{ item_url | relative_url }}">{{ nav_item.title }}</a>
|
|
21
|
+
</li>
|
|
22
|
+
{% else %}
|
|
23
|
+
<li class="breadcrumb-item">
|
|
24
|
+
{{ nav_item.title }}
|
|
25
|
+
</li>
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% endunless %}
|
|
28
|
+
|
|
29
|
+
{% if has_children %}
|
|
30
|
+
{% include awesome-nav-breadcrumb-trail.html items=nav_item.children root_url=include.root_url %}
|
|
31
|
+
{% endif %}
|
|
32
|
+
{% endif %}
|
|
33
|
+
{% endfor %}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<div class="Breadcrumb d-flex flex-items-center">
|
|
2
|
+
<nav aria-label="Breadcrumb" class="f5">
|
|
3
|
+
<ol class="breadcrumb">
|
|
4
|
+
{% assign root_crumb = nil %}
|
|
5
|
+
{% if page.breadcrumbs and page.breadcrumbs.size > 0 %}
|
|
6
|
+
{% assign root_crumb = page.breadcrumbs.first %}
|
|
7
|
+
{% endif %}
|
|
8
|
+
|
|
9
|
+
{% if root_crumb %}
|
|
10
|
+
<li class="breadcrumb-item">
|
|
11
|
+
<a href="{{ root_crumb.url | relative_url }}">{{ root_crumb.title }}</a>
|
|
12
|
+
</li>
|
|
13
|
+
{% endif %}
|
|
14
|
+
|
|
15
|
+
{% capture awesome_nav_trail %}
|
|
16
|
+
{% if page.awesome_nav and page.awesome_nav.size > 0 %}
|
|
17
|
+
{% include awesome-nav-breadcrumb-trail.html items=page.awesome_nav root_url=root_crumb.url %}
|
|
18
|
+
{% endif %}
|
|
19
|
+
{% endcapture %}
|
|
20
|
+
|
|
21
|
+
{% assign awesome_nav_trail = awesome_nav_trail | strip %}
|
|
22
|
+
|
|
23
|
+
{% if awesome_nav_trail != "" %}
|
|
24
|
+
{{ awesome_nav_trail }}
|
|
25
|
+
{% elsif page.breadcrumbs and page.breadcrumbs.size > 0 %}
|
|
26
|
+
{% for crumb in page.breadcrumbs %}
|
|
27
|
+
{% if forloop.first %}
|
|
28
|
+
{% continue %}
|
|
29
|
+
{% endif %}
|
|
30
|
+
{% if forloop.last %}
|
|
31
|
+
<li class="breadcrumb-item breadcrumb-item-selected" aria-current="page">
|
|
32
|
+
{{ crumb.title }}
|
|
33
|
+
</li>
|
|
34
|
+
{% elsif crumb.url %}
|
|
35
|
+
<li class="breadcrumb-item">
|
|
36
|
+
<a href="{{ crumb.url | relative_url }}">{{ crumb.title }}</a>
|
|
37
|
+
</li>
|
|
38
|
+
{% else %}
|
|
39
|
+
<li class="breadcrumb-item">
|
|
40
|
+
{{ crumb.title }}
|
|
41
|
+
</li>
|
|
42
|
+
{% endif %}
|
|
43
|
+
{% endfor %}
|
|
44
|
+
{% else %}
|
|
45
|
+
<li class="breadcrumb-item breadcrumb-item-selected" aria-current="page">
|
|
46
|
+
{{ page.title }}
|
|
47
|
+
</li>
|
|
48
|
+
{% endif %}
|
|
49
|
+
</ol>
|
|
50
|
+
</nav>
|
|
51
|
+
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{% for nav_item in include.items %}
|
|
2
|
+
{% assign item_url = nav_item.url | default: "" %}
|
|
3
|
+
{% assign has_children = nav_item.children and nav_item.children.size > 0 %}
|
|
4
|
+
{% assign is_current = nav_item.current | default: false %}
|
|
5
|
+
|
|
6
|
+
{% if item_url != "" %}
|
|
7
|
+
<a href="{{ item_url | relative_url }}" class="menu-item border-0" role="menuitem" {% if is_current %}aria-current="page"{% endif %}>
|
|
8
|
+
{{ nav_item.title }}
|
|
9
|
+
</a>
|
|
10
|
+
{% else %}
|
|
11
|
+
<div class="menu-item color-fg-muted border-0">
|
|
12
|
+
{{ nav_item.title }}
|
|
13
|
+
</div>
|
|
14
|
+
{% endif %}
|
|
15
|
+
|
|
16
|
+
{% if has_children %}
|
|
17
|
+
<div class="ml-3">
|
|
18
|
+
{% include awesome-nav-menu-tree.html items=nav_item.children %}
|
|
19
|
+
</div>
|
|
20
|
+
{% endif %}
|
|
21
|
+
{% endfor %}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
awesome-nav-menu.html
|
|
3
|
+
|
|
4
|
+
Mobile dropdown menu for awesome_nav-powered docs navigation.
|
|
5
|
+
|
|
6
|
+
Parameters:
|
|
7
|
+
- nav: Navigation items to render.
|
|
8
|
+
- name: Display name for the menu header.
|
|
9
|
+
- index_url: Optional URL for the docs root page.
|
|
10
|
+
- id (default: "awesome-nav-menu"): HTML ID for the menu container.
|
|
11
|
+
{%- endcomment -%}
|
|
12
|
+
|
|
13
|
+
{%- assign nav_items = include.nav | default: page.awesome_nav %}
|
|
14
|
+
{%- assign menu_name = include.name | default: "Documentation" %}
|
|
15
|
+
{%- assign menu_index_url = include.index_url %}
|
|
16
|
+
{%- assign menu_id = include.id | default: "awesome-nav-menu" %}
|
|
17
|
+
|
|
18
|
+
<script>
|
|
19
|
+
$(document).ready(function () {
|
|
20
|
+
const $menu = $("#{{ menu_id }}");
|
|
21
|
+
const $closeButton = $menu.find(".close-menu");
|
|
22
|
+
|
|
23
|
+
if ($menu.length && $closeButton.length) {
|
|
24
|
+
$closeButton.click(() => $menu.removeAttr("open"));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<details class="details-reset details-overlay" id="{{ menu_id }}">
|
|
30
|
+
<summary class="btn btn-invisible" aria-haspopup="true">
|
|
31
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
32
|
+
<path d="M4 6H20M4 12H20M4 18H20" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
|
|
33
|
+
</svg>
|
|
34
|
+
</summary>
|
|
35
|
+
<div class="awesome-nav-menu-drawer position-fixed top-0 left-0 right-0 bottom-0">
|
|
36
|
+
<button class="awesome-nav-menu-backdrop close-menu position-fixed top-0 left-0 right-0 bottom-0 color-bg-backdrop border-0 p-0 m-0"
|
|
37
|
+
type="button" aria-label="Close navigation menu"></button>
|
|
38
|
+
<div class="awesome-nav-menu-panel position-fixed top-0 left-0 bottom-0 color-bg-default border-right d-flex flex-column">
|
|
39
|
+
<div class="d-flex flex-justify-between flex-items-center p-3 border-bottom">
|
|
40
|
+
<div tabindex="-1" class="SelectMenu-title">
|
|
41
|
+
{%- if menu_index_url %}
|
|
42
|
+
<a href="{{ menu_index_url | relative_url }}"
|
|
43
|
+
class="AppHeader-link d-flex flex-items-center no-underline mr-3">
|
|
44
|
+
<span class="h3 color-fg-default text-bold">{{ menu_name }}</span>
|
|
45
|
+
</a>
|
|
46
|
+
{%- else %}
|
|
47
|
+
<div class="AppHeader-link d-flex flex-items-center no-underline mr-3">
|
|
48
|
+
<span class="h3 color-fg-default text-bold">{{ menu_name }}</span>
|
|
49
|
+
</div>
|
|
50
|
+
{%- endif %}
|
|
51
|
+
</div>
|
|
52
|
+
<button class="SelectMenu-closeButton close-menu" type="button">
|
|
53
|
+
<span class="octicon octicon-x-16"></span>
|
|
54
|
+
</button>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="SideNav color-bg-default flex-1 overflow-y-auto pl-1">
|
|
57
|
+
{%- if menu_index_url %}
|
|
58
|
+
<a href="{{ menu_index_url | relative_url }}" class="SideNav-item border-0" role="menuitem">
|
|
59
|
+
{{ menu_name }}
|
|
60
|
+
</a>
|
|
61
|
+
{%- else %}
|
|
62
|
+
<div class="SideNav-item no-underline h4 border-0">{{ menu_name }}</div>
|
|
63
|
+
{%- endif %}
|
|
64
|
+
{% include awesome-nav-menu-tree.html items=nav_items %}
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</details>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{% assign nav_items = include.nav | default: page.awesome_nav %}
|
|
2
|
+
{% assign nav_title = include.title | default: include.name | default: page.docs_name | default: "Documentation" %}
|
|
3
|
+
{% if nav_items and nav_items.size > 0 %}
|
|
4
|
+
<ul data-overflow-nav class="menu ActionList border-0 ml-3">
|
|
5
|
+
{% include awesome-nav-tree.html items=nav_items level=0 %}
|
|
6
|
+
</ul>
|
|
7
|
+
{% endif %}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{% for nav_item in include.items %}
|
|
2
|
+
{% assign item_url = nav_item.url | default: "" %}
|
|
3
|
+
{% assign has_children = nav_item.children and nav_item.children.size > 0 %}
|
|
4
|
+
{% assign is_expanded = nav_item.contains_current | default: false %}
|
|
5
|
+
{% assign is_current = nav_item.current | default: false %}
|
|
6
|
+
|
|
7
|
+
{% if has_children %}
|
|
8
|
+
<li class="list-style-none">
|
|
9
|
+
<details class="details-reset" {% if is_expanded %}open{% endif %}>
|
|
10
|
+
<summary class="list-style-none color-fg-default">
|
|
11
|
+
{% if item_url != "" %}
|
|
12
|
+
<a href="{{ item_url | relative_url }}" class="ActionListItem-label no-underline">
|
|
13
|
+
<div class="menu-item ActionList-item border-0 d-flex flex-items-center flex-justify-between" {% if is_current %}aria-current="page"{% endif %}>
|
|
14
|
+
<span>{{ nav_item.title }}</span>
|
|
15
|
+
<span class="awesome-nav-chevron color-fg-muted d-flex flex-items-center" aria-hidden="true">
|
|
16
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
|
|
17
|
+
<path d="M12.78 6.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L3.22 7.28a.75.75 0 1 1 1.06-1.06L8 9.94l3.72-3.72a.75.75 0 0 1 1.06 0Z"></path>
|
|
18
|
+
</svg>
|
|
19
|
+
</span>
|
|
20
|
+
</div>
|
|
21
|
+
</a>
|
|
22
|
+
{% else %}
|
|
23
|
+
<div class="menu-item ActionList-item border-0 d-flex flex-items-center flex-justify-between">
|
|
24
|
+
<span>{{ nav_item.title }}</span>
|
|
25
|
+
<span class="awesome-nav-chevron color-fg-muted d-flex flex-items-center" aria-hidden="true">
|
|
26
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
|
|
27
|
+
<path d="M12.78 6.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L3.22 7.28a.75.75 0 1 1 1.06-1.06L8 9.94l3.72-3.72a.75.75 0 0 1 1.06 0Z"></path>
|
|
28
|
+
</svg>
|
|
29
|
+
</span>
|
|
30
|
+
</div>
|
|
31
|
+
{% endif %}
|
|
32
|
+
</summary>
|
|
33
|
+
<ul class="ml-3">
|
|
34
|
+
{% assign next_level = include.level | default: 0 | plus: 1 %}
|
|
35
|
+
{% include awesome-nav-tree.html items=nav_item.children level=next_level %}
|
|
36
|
+
</ul>
|
|
37
|
+
</details>
|
|
38
|
+
</li>
|
|
39
|
+
{% elsif item_url != "" %}
|
|
40
|
+
<li class="list-style-none">
|
|
41
|
+
<a href="{{ item_url | relative_url }}" class="ActionListItem-label no-underline">
|
|
42
|
+
<div class="menu-item ActionList-item border-0" {% if is_current %}aria-current="page"{% endif %}>
|
|
43
|
+
{{ nav_item.title }}
|
|
44
|
+
</div>
|
|
45
|
+
</a>
|
|
46
|
+
</li>
|
|
47
|
+
{% else %}
|
|
48
|
+
<li class="menu-item ActionList-item border-0 color-fg-default">
|
|
49
|
+
{{ nav_item.title }}
|
|
50
|
+
</li>
|
|
51
|
+
{% endif %}
|
|
52
|
+
{% endfor %}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{% assign collection = include.collection | default: site.docs %}
|
|
2
|
+
<div class="Breadcrumb d-flex flex-items-center">
|
|
3
|
+
<nav aria-label="Breadcrumb" class="f5">
|
|
4
|
+
<ol class="breadcrumb">
|
|
5
|
+
{%- assign crumbs = page.url | split: '/' %}
|
|
6
|
+
{%- assign url = "/" %}
|
|
7
|
+
{%- for crumb in crumbs %}
|
|
8
|
+
{%- if crumb == "" %}
|
|
9
|
+
<li class="breadcrumb-item">
|
|
10
|
+
<a href="{{ site.baseurl}}/">home</a>
|
|
11
|
+
</li>
|
|
12
|
+
{%- continue %}
|
|
13
|
+
{%- endif %}
|
|
14
|
+
{%- if crumb == crumbs.last %}
|
|
15
|
+
{%- continue %}
|
|
16
|
+
{%- endif %}
|
|
17
|
+
{%- assign index_url = url | append: crumb | append: "/index.html" %}
|
|
18
|
+
{%- assign isa_index = site.pages | where: "url", index_url | first %}
|
|
19
|
+
{%- assign folder_url = url | append: crumb | append: "/" %}
|
|
20
|
+
{%- assign isa_folder = site.pages | where: "url", folder_url | first %}
|
|
21
|
+
{%- assign url = url | append: crumb %}
|
|
22
|
+
{%- assign isa_page = site.pages | where: "url", url | first %}
|
|
23
|
+
{%- assign isa_post = site.posts | where: "url", url | first %}
|
|
24
|
+
{%- assign isa_collection = collection | where: "url", index_url | first %}
|
|
25
|
+
|
|
26
|
+
{%- assign nice_crumb = crumb | url_decode | replace: ".html", "" | replace: "-", " " | replace: "_", " " |
|
|
27
|
+
downcase %}
|
|
28
|
+
|
|
29
|
+
{% comment %}
|
|
30
|
+
Checking the crumb: {{ crumb }}
|
|
31
|
+
[asset url: {{ asset_url }}]
|
|
32
|
+
[index url: {{ index_url }}]
|
|
33
|
+
[folder_url: {{ folder_url }}]
|
|
34
|
+
[url: {{ url }}]
|
|
35
|
+
{% for p in collection %}
|
|
36
|
+
{{ p.url }}
|
|
37
|
+
{% endfor %}
|
|
38
|
+
|
|
39
|
+
[Page?: {% if isa_page %}page!{% endif %}]
|
|
40
|
+
[Post?: {% if isa_post %}post!{% endif %}]
|
|
41
|
+
[Collection?: {% if isa_collection %}collection!{% endif %}]
|
|
42
|
+
{% endcomment %}
|
|
43
|
+
|
|
44
|
+
{%- if page.url == url or page.url == index_url or page.url == folder_url %}
|
|
45
|
+
<li class="breadcrumb-item breadcrumb-item-selected" aria-current="page">
|
|
46
|
+
<a href="{{ page.url | relative_url }}">{{ nice_crumb }}</a>
|
|
47
|
+
</li>
|
|
48
|
+
{%- break %}
|
|
49
|
+
{%- elsif isa_page or isa_post or isa_index or isa_folder or isa_collection %}
|
|
50
|
+
<li class="breadcrumb-item">
|
|
51
|
+
<a href="{{ url | relative_url }}">{{ nice_crumb }}</a>
|
|
52
|
+
</li>
|
|
53
|
+
{%- else %}
|
|
54
|
+
<li class="breadcrumb-item">
|
|
55
|
+
{{ nice_crumb }}
|
|
56
|
+
</li>
|
|
57
|
+
{%- endif %}
|
|
58
|
+
{%- assign url = url | append: "/" %}
|
|
59
|
+
{%- endfor %}
|
|
60
|
+
</ol>
|
|
61
|
+
</nav>
|
|
62
|
+
</div>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
Required:
|
|
3
|
+
- category (String)
|
|
4
|
+
- pages (Array of documents)
|
|
5
|
+
=====================================
|
|
6
|
+
{% endcomment %}
|
|
7
|
+
{%- assign entries = include.pages %}
|
|
8
|
+
{%- assign category = include.category %}
|
|
9
|
+
<div class="d-flex flex-column col-12 col-sm-6 col-lg-4 col-xl-3 pb-4">
|
|
10
|
+
<h3 class="h3">{{ category | capitalize }}</h3>
|
|
11
|
+
<div class="pt-2 mb-4 text-normal">
|
|
12
|
+
<ul class="list-style-none pl-0">
|
|
13
|
+
{% for entry in entries %}
|
|
14
|
+
<li><a class="pt-2" href="{{ entry.url | relative_url }}">{{ entry.title }}</a></li>
|
|
15
|
+
{% endfor %}
|
|
16
|
+
</ul>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
collection-menu.html
|
|
3
|
+
|
|
4
|
+
Generates a dropdown menu for a Jekyll collection, grouping items by their "category" front matter.
|
|
5
|
+
Useful for documentation, guides, or any collection-based navigation.
|
|
6
|
+
|
|
7
|
+
Parameters:
|
|
8
|
+
- collection: The Jekyll collection to display.
|
|
9
|
+
- name: Display name for the collection header.
|
|
10
|
+
- index: Optional index page object for the collection (e.g., site.docs_index).
|
|
11
|
+
- id (default: "collection-menu"): HTML ID for the menu container (useful when multiple menus are present).
|
|
12
|
+
|
|
13
|
+
Example Usage:
|
|
14
|
+
{% include collection-menu.html collection=docs name="Documentation" index="docs/index.html" %}
|
|
15
|
+
{%- endcomment -%}
|
|
16
|
+
|
|
17
|
+
{%- assign collection = include.collection | default: nil %}
|
|
18
|
+
{%- assign collection_name = include.name | default: include.index.title | default: "Collection" %}
|
|
19
|
+
{%- assign collection_index = include.index %}
|
|
20
|
+
{%- assign collection_id = include.id | default: "collection-menu" %}
|
|
21
|
+
{% comment %}computed variables{% endcomment %}
|
|
22
|
+
{%- assign index_url = collection_index.url %}
|
|
23
|
+
{%- assign collection_without_index = collection | where_exp: "item", "item.url != index_url" %}
|
|
24
|
+
|
|
25
|
+
<script>
|
|
26
|
+
$(document).ready(function () {
|
|
27
|
+
const $menu = $("#{{ collection_id }}");
|
|
28
|
+
const $closeButton = $(".close-menu");
|
|
29
|
+
|
|
30
|
+
if ($menu.length && $closeButton.length) {
|
|
31
|
+
$closeButton.click(() => $menu.removeAttr("open")); // Properly closes the dropdown
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<details class="details-reset details-overlay" id="{{ collection_id }}">
|
|
37
|
+
<summary class="btn btn-invisible" aria-haspopup="true">
|
|
38
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
39
|
+
<path d="M4 6H20M4 12H20M4 18H20" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
|
|
40
|
+
</svg>
|
|
41
|
+
</summary>
|
|
42
|
+
<details-menu class="SelectMenu" role="menu">
|
|
43
|
+
<div class="SelectMenu-modal">
|
|
44
|
+
|
|
45
|
+
<div class="SelectMenu-header">
|
|
46
|
+
<div tabindex="-1" class="SelectMenu-title" id="github-logo">
|
|
47
|
+
{%- if collection_index %}
|
|
48
|
+
<a href="{{ collection_index.url | relative_url }}"
|
|
49
|
+
class="AppHeader-link d-flex flex-items-center no-underline mr-3">
|
|
50
|
+
<span class="h3 color-fg-default text-bold">{{ collection_name }}</span>
|
|
51
|
+
</a>
|
|
52
|
+
{%- else %}
|
|
53
|
+
<div class="AppHeader-link d-flex flex-items-center no-underline mr-3">
|
|
54
|
+
<span class="h3 color-fg-default text-bold">{{ collection_name }}</span>
|
|
55
|
+
</div>
|
|
56
|
+
{%- endif %}
|
|
57
|
+
</div>
|
|
58
|
+
<div class="d-flex flex-justify-end">
|
|
59
|
+
<button class="SelectMenu-closeButton close-menu" type="button">
|
|
60
|
+
<span class="octicon octicon-x-16"></span>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="SideNav border overflow-y-auto">
|
|
65
|
+
{%- assign collection_categories = collection_without_index | group_by: "category" %}
|
|
66
|
+
{%- for category in collection_categories %}
|
|
67
|
+
{%- assign category_name = category.name | default: collection_name %}
|
|
68
|
+
<div class="SideNav-item no-underline h4">{{ category_name | capitalize }}</div>
|
|
69
|
+
{%- for nav_item in category.items %}
|
|
70
|
+
{%- if nav_item.url and nav_item.title %}
|
|
71
|
+
<a href="{{ nav_item.url | relative_url }}" class="SideNav-item" role="menuitem" {% if page.url contains nav_item.url
|
|
72
|
+
%} aria-current="page" {% endif %}>{{ nav_item.title }}</a>
|
|
73
|
+
{%- endif %}
|
|
74
|
+
{%- endfor %}
|
|
75
|
+
{%- endfor %}
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</details-menu>
|
|
79
|
+
</details>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{% assign categories = include.categories | default: doc_categories %}
|
|
2
|
+
{% assign current_page_url = include.current_page_url | default: page.url %}
|
|
3
|
+
{% assign excluded_url = include.excluded_url | default: category_page.url %}
|
|
4
|
+
{% assign default_category_name = include.default_category | default: "" %}
|
|
5
|
+
|
|
6
|
+
<ul data-overflow-nav class="menu ActionList border-0 ml-3">
|
|
7
|
+
{%- for category in categories %}
|
|
8
|
+
{%- assign category_name = category.name | default: default_category_name %}
|
|
9
|
+
<li class="h4">{{ category_name | capitalize }}
|
|
10
|
+
<ul>
|
|
11
|
+
{%- for nav_item in category.items %}
|
|
12
|
+
{% unless nav_item.url == excluded_url %}
|
|
13
|
+
<a href="{{ nav_item.url | relative_url }}" class="ActionListItem-label no-underline">
|
|
14
|
+
<li class="menu-item ActionList-item border-0" {% if current_page_url == nav_item.url %}aria-current="page"{% endif %}>
|
|
15
|
+
{{ nav_item.title }}
|
|
16
|
+
</li>
|
|
17
|
+
</a>
|
|
18
|
+
{% endunless %}
|
|
19
|
+
{%- endfor %}
|
|
20
|
+
</ul>
|
|
21
|
+
</li>
|
|
22
|
+
{%- endfor %}
|
|
23
|
+
</ul>
|