jekyll-theme-amethyst 0.2.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/.github/workflows/doc-search.yaml +25 -0
- data/.github/workflows/gem.yaml +25 -0
- data/.github/workflows/github-pages.yaml +47 -0
- data/.github/workflows/spider-check.yaml +52 -0
- data/.gitignore +4 -0
- data/404.md +9 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +35 -0
- data/_config.yml +91 -0
- data/_data/sidebar_api.yml +13 -0
- data/_data/sidebar_blog.yml +11 -0
- data/_data/sitenav.yml +11 -0
- data/_includes/opengraph.html +49 -0
- data/_includes/search-js.html +113 -0
- data/_includes/search.html +14 -0
- data/_includes/sidebar.html +89 -0
- data/_includes/version.html +28 -0
- data/_layouts/group.html +14 -0
- data/_layouts/home.html +25 -0
- data/_layouts/page-api.html +32 -0
- data/_layouts/page.html +17 -0
- data/_layouts/post.html +37 -0
- data/_layouts/posts-archive.html +17 -0
- data/_layouts/posts-author.html +21 -0
- data/_layouts/posts-tag.html +24 -0
- data/_layouts/posts-year.html +24 -0
- data/_layouts/posts.html +28 -0
- data/_layouts/wrapper.html +132 -0
- data/_posts/2006-01-26-announcing-the-blog.md +13 -0
- data/_posts/2006-10-18-foo-110.md +13 -0
- data/_posts/2007-10-18-foo-112.md +13 -0
- data/_posts/2008-10-18-foo-126.md +13 -0
- data/_posts/2009-10-18-foo-132.md +13 -0
- data/_posts/2010-10-18-foo-143.md +13 -0
- data/_posts/2011-10-18-foo-171.md +13 -0
- data/_posts/2012-10-18-foo-183.md +13 -0
- data/_posts/2013-10-18-foo-191.md +13 -0
- data/_posts/2014-10-18-foo-211.md +13 -0
- data/_posts/2015-10-18-foo-300.md +13 -0
- data/_posts/2017-10-18-foo-321.md +13 -0
- data/_posts/2018-10-18-foo-331.md +13 -0
- data/_posts/2019-10-18-foo-341.md +13 -0
- data/_posts/2020-04-01-foo-350.md +13 -0
- data/_posts/2020-10-18-foo-351.md +13 -0
- data/_posts/2021-04-01-hello-world.md +51 -0
- data/_sass/amethyst-variables.scss +22 -0
- data/_sass/amethyst.scss +906 -0
- data/_sass/custom.scss +2 -0
- data/_sass/highlight.scss +131 -0
- data/about.md +28 -0
- data/amethyst.gemspec +23 -0
- data/api/deprecated.md +5 -0
- data/api/foo/baz.md +49 -0
- data/api/foo/index.md +5 -0
- data/api/foo/quux.md +9 -0
- data/api/index.md +8 -0
- data/api/lorem/dolor.md +14 -0
- data/api/lorem/index.md +5 -0
- data/api/lorem/sit.md +15 -0
- data/api/removed.md +5 -0
- data/assets/logo-algolia.svg +1 -0
- data/assets/styles.scss +7 -0
- data/blog-archive.md +4 -0
- data/blog.md +4 -0
- data/docs/config.md +122 -0
- data/docs/getting-started.md +77 -0
- data/favicon.svg +3 -0
- data/guides.md +11 -0
- data/index.md +51 -0
- data/intro.md +41 -0
- data/lib/jekyll-theme-amethyst.rb +39 -0
- data/tag/event.md +5 -0
- data/tag/release.md +5 -0
- metadata +222 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<form class="site-search" id="site-search-form" action="https://duckduckgo.com">
|
|
2
|
+
<label class="screen-reader-text" for="aa-search-input">Search</label>
|
|
3
|
+
<input type="search" name="q" id="aa-search-input" class="aa-input-search" placeholder="Search..." autocomplete="off">
|
|
4
|
+
<input type="hidden" name="sites" value="{{ site.url | remove_first: 'http://' | remove_first: 'https://' }}">
|
|
5
|
+
<svg class="aa-input-icon" viewBox="654 -372 1664 1664" height="20">
|
|
6
|
+
<path d="M1806,332c0-123.3-43.8-228.8-131.5-316.5C1586.8-72.2,1481.3-116,1358-116s-228.8,43.8-316.5,131.5 C953.8,103.2,910,208.7,910,332s43.8,228.8,131.5,316.5C1129.2,736.2,1234.7,780,1358,780s228.8-43.8,316.5-131.5 C1762.2,560.8,1806,455.3,1806,332z M2318,1164c0,34.7-12.7,64.7-38,90s-55.3,38-90,38c-36,0-66-12.7-90-38l-343-342 c-119.3,82.7-252.3,124-399,124c-95.3,0-186.5-18.5-273.5-55.5s-162-87-225-150s-113-138-150-225S654,427.3,654,332 s18.5-186.5,55.5-273.5s87-162,150-225s138-113,225-150S1262.7-372,1358-372s186.5,18.5,273.5,55.5s162,87,225,150s113,138,150,225 S2062,236.7,2062,332c0,146.7-41.3,279.7-124,399l343,343C2305.7,1098.7,2318,1128.7,2318,1164z"/>
|
|
7
|
+
</svg>
|
|
8
|
+
</form>
|
|
9
|
+
|
|
10
|
+
{%- comment -%}
|
|
11
|
+
|
|
12
|
+
See also search-js.html
|
|
13
|
+
|
|
14
|
+
{%- endcomment -%}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
|
|
3
|
+
Parameters:
|
|
4
|
+
|
|
5
|
+
* blocks:
|
|
6
|
+
Key in `site.data` corresponding to a `_data/*.yml` file.
|
|
7
|
+
|
|
8
|
+
Block data:
|
|
9
|
+
|
|
10
|
+
* type: [Default: "group"]
|
|
11
|
+
What type of block to add to the sidebar.
|
|
12
|
+
- "group" to query a list of pages from a page group.
|
|
13
|
+
- "list" to specify your own custom list.
|
|
14
|
+
- "archive" to query a list of chronological pages based on their layout.
|
|
15
|
+
- "tags" to query a list of alphabetical pages based on their layout.
|
|
16
|
+
|
|
17
|
+
* title: [Default: group_page.title or ""]
|
|
18
|
+
For a "group" block this defaults to the title of the group index page.
|
|
19
|
+
For a custom "list" block, this is required.
|
|
20
|
+
|
|
21
|
+
* url: [Default: group_page.url or null]
|
|
22
|
+
For a "group" block this defaults to the URL of the group index page.
|
|
23
|
+
If null, the block title will not be linked.
|
|
24
|
+
|
|
25
|
+
* group:
|
|
26
|
+
When using a "group" block, the ID of the group to query for.
|
|
27
|
+
|
|
28
|
+
* list:
|
|
29
|
+
When using a "list" block, an array of objects with "title"
|
|
30
|
+
and "url" properties.
|
|
31
|
+
|
|
32
|
+
* expand: [Default: active]
|
|
33
|
+
Whether a block should be expanded.
|
|
34
|
+
- true: Always expanded.
|
|
35
|
+
- false: Never expanded.
|
|
36
|
+
- active: Expand when the current page is in the list.
|
|
37
|
+
|
|
38
|
+
{%- endcomment -%}
|
|
39
|
+
<section class="sidebar">
|
|
40
|
+
{%- for block in site.data[include.blocks] -%}
|
|
41
|
+
{%- assign block_type = block.type | default: "group" -%}
|
|
42
|
+
{%- assign block_title = block.title -%}
|
|
43
|
+
{%- assign block_url = block.url -%}
|
|
44
|
+
{%- assign block_contents = block.list -%}
|
|
45
|
+
{%- assign block_expand = block.expand -%}
|
|
46
|
+
{%- if block_expand != true and block_expand != false -%}
|
|
47
|
+
{%- assign block_expand = "active" -%}
|
|
48
|
+
{%- endif -%}
|
|
49
|
+
|
|
50
|
+
{%- if block_type == "group" -%}
|
|
51
|
+
{%- assign group_page = site.pages | where: "layout", "group" | where: "group", block.group | first -%}
|
|
52
|
+
{%- assign block_title = block.title | default: group_page.title | default: block.group -%}
|
|
53
|
+
{%- assign block_url = block.url | default: group_page.url -%}
|
|
54
|
+
{%- assign block_contents = site.pages | where: 'groups', block.group | sort_natural: 'title' -%}
|
|
55
|
+
{%- elsif block_type == "recent" -%}
|
|
56
|
+
{%- assign block_contents = site.posts | slice: 0, 5 -%}
|
|
57
|
+
{%- elsif block_type == "archive" -%}
|
|
58
|
+
{%- assign block_contents = site.pages | where: "layout", "posts-year" | sort_natural: 'date' | reverse -%}
|
|
59
|
+
{%- elsif block_type == "tags" -%}
|
|
60
|
+
{%- assign block_contents = site.pages | where: "layout", "posts-tag" | sort_natural: 'title' -%}
|
|
61
|
+
{%- endif -%}
|
|
62
|
+
|
|
63
|
+
{%- if block_expand == "active" -%}
|
|
64
|
+
{%- assign self_in_contents = block_contents | where: 'url', page.url | size -%}
|
|
65
|
+
{%- if page.url == block_url or self_in_contents > 0 -%}
|
|
66
|
+
{%- assign block_expand = true -%}
|
|
67
|
+
{%- else -%}
|
|
68
|
+
{%- assign block_expand = false -%}
|
|
69
|
+
{%- endif -%}
|
|
70
|
+
{%- endif %}
|
|
71
|
+
|
|
72
|
+
<h4 {%- if block_expand %} class="sidebar-title-open"{% endif %}>{% if block_url %}<a href="{{ block_url | relative_url }}">{{ block_title }}</a>{% else %}{{ block_title }}{% endif %}</h4>
|
|
73
|
+
{% if block_expand -%}
|
|
74
|
+
<ul class="sidebar-list">
|
|
75
|
+
{%- for entry in block_contents -%}
|
|
76
|
+
<li class="sidebar-item{% if page.url == entry.url %} sidebar-item-active{% endif %}">
|
|
77
|
+
<a href="{{ entry.url | relative_url }}">
|
|
78
|
+
{%- assign entry_title = entry.title -%}
|
|
79
|
+
{%- if entry.title == nil and entry.date -%}
|
|
80
|
+
{%- assign entry_title = entry.date | date: '%Y' -%}
|
|
81
|
+
{%- endif -%}
|
|
82
|
+
{{- entry_title -}}
|
|
83
|
+
</a>
|
|
84
|
+
</li>
|
|
85
|
+
{%- endfor -%}
|
|
86
|
+
</ul>
|
|
87
|
+
{%- endif -%}
|
|
88
|
+
{%- endfor %}
|
|
89
|
+
</section>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
|
|
3
|
+
Parameters:
|
|
4
|
+
|
|
5
|
+
* version:
|
|
6
|
+
Like "1.0", "2.2", or "unreleased".
|
|
7
|
+
|
|
8
|
+
* label:
|
|
9
|
+
Like "version added".
|
|
10
|
+
|
|
11
|
+
{%- endcomment -%}
|
|
12
|
+
|
|
13
|
+
{%- comment -%}
|
|
14
|
+
These releases have original release notes published under a v-prefixed tag.
|
|
15
|
+
{%- endcomment -%}
|
|
16
|
+
{%- assign _old_releases = " v1.9.0 v1.10.0 v1.11.0 v1.12.0 " -%}
|
|
17
|
+
|
|
18
|
+
{%- assign _full_version = include.version -%}
|
|
19
|
+
{%- assign _old_version = _full_version | prepend: "v" -%}
|
|
20
|
+
{%- if _old_releases contains _old_version -%}
|
|
21
|
+
{%- assign _full_version = _old_version -%}
|
|
22
|
+
{%- endif -%}
|
|
23
|
+
|
|
24
|
+
{%- if include.version == "unreleased" -%}
|
|
25
|
+
not yet released
|
|
26
|
+
{%- else -%}
|
|
27
|
+
{{ include.label }}: {% if site.amethyst.release_base %}<a href="{{ site.amethyst.release_base }}{{ _full_version | escape }}">{{ include.version | escape }}</a>{% else %}{{ include.version | escape }}{% endif %}
|
|
28
|
+
{%- endif -%}
|
data/_layouts/group.html
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: page-api
|
|
3
|
+
---
|
|
4
|
+
{{ content }}
|
|
5
|
+
|
|
6
|
+
{%- assign pages = site.pages | where: 'groups', page.group | sort_natural: 'title' -%}
|
|
7
|
+
{% for page in pages %}
|
|
8
|
+
<h2 id="{{ page.title | slugify }}"><a href="{{ page.url | relative_url }}">{{ page.title }}</a></h2>
|
|
9
|
+
<p>
|
|
10
|
+
{%- if page.version_removed %}<strong>REMOVED</strong> {% endif -%}
|
|
11
|
+
{%- if page.version_removed == nil and page.version_deprecated %}<strong>DEPRECATED</strong> {% endif -%}
|
|
12
|
+
{{ page.excerpt -}}
|
|
13
|
+
</p>
|
|
14
|
+
{% endfor -%}
|
data/_layouts/home.html
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<section class="hero">
|
|
6
|
+
<div class="wrapper">
|
|
7
|
+
<h1 class="hero-title">
|
|
8
|
+
{%- if page.home_img -%}
|
|
9
|
+
<img src="{{ page.home_img | escape }}" alt="{{ page.home_title | default: site.title | escape }}">
|
|
10
|
+
{%- else -%}
|
|
11
|
+
{{ page.home_title | default: site.title | escape }}
|
|
12
|
+
{%- endif -%}
|
|
13
|
+
</h1>
|
|
14
|
+
<h2 class="hero-description">{{ page.home_description | default: site.description | escape }}</h2>
|
|
15
|
+
{%- if page.home_primary_btn -%}
|
|
16
|
+
<a class="hero-button button" href="{{ page.home_primary_btn.href | relative_url | escape }}">{{ page.home_primary_btn.name | escape }}</a>
|
|
17
|
+
{% endif -%}
|
|
18
|
+
{%- if page.home_secondary_btn -%}
|
|
19
|
+
<a class="hero-button button secondary" href="{{ page.home_secondary_btn.href | relative_url | escape }}">{{ page.home_secondary_btn.name | escape }}</a>
|
|
20
|
+
{% endif -%}
|
|
21
|
+
</div>
|
|
22
|
+
</section>
|
|
23
|
+
<div class="main wrapper content layout-home">
|
|
24
|
+
{{ content }}
|
|
25
|
+
</div>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_api" %}
|
|
7
|
+
<div class="content" role="main">
|
|
8
|
+
<h1>{{ page.title }}</h1>
|
|
9
|
+
{%- if page.version_added or page.version_deprecated -%}
|
|
10
|
+
{%- assign warning = false -%}
|
|
11
|
+
{%- if page.version_added == "unreleased" or page.version_deprecated or page.version_removed -%}
|
|
12
|
+
{%- assign warning = true -%}
|
|
13
|
+
{%- endif -%}
|
|
14
|
+
|
|
15
|
+
<p class="version-details{% if warning %} note--warning{% endif %}">
|
|
16
|
+
{%- capture lines -%}
|
|
17
|
+
{%- if page.version_added %}
|
|
18
|
+
{% include version.html version=page.version_added label="version added" %}
|
|
19
|
+
{%- endif -%}
|
|
20
|
+
{%- if page.version_deprecated %}
|
|
21
|
+
{% include version.html version=page.version_deprecated label="deprecated" %}
|
|
22
|
+
{%- endif -%}
|
|
23
|
+
{%- if page.version_removed %}
|
|
24
|
+
{% include version.html version=page.version_removed label="removed" %}
|
|
25
|
+
{%- endif -%}
|
|
26
|
+
{%- endcapture -%}
|
|
27
|
+
{{ lines | strip | newline_to_br }}
|
|
28
|
+
</p>
|
|
29
|
+
{%- endif %}
|
|
30
|
+
{{- content }}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
data/_layouts/page.html
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
{%- unless page.amethyst.hero == false %}
|
|
6
|
+
<section class="hero">
|
|
7
|
+
<div class="wrapper">
|
|
8
|
+
<h1 class="hero-title">{{ page.title }}</h1>
|
|
9
|
+
</div>
|
|
10
|
+
</section>
|
|
11
|
+
{% endunless -%}
|
|
12
|
+
<div class="main wrapper content">
|
|
13
|
+
{%- if page.amethyst.hero == false -%}
|
|
14
|
+
<h1>{{ page.title }}</h1>
|
|
15
|
+
{%- endif -%}
|
|
16
|
+
{{ content }}
|
|
17
|
+
</div>
|
data/_layouts/post.html
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_blog" %}
|
|
7
|
+
<div class="content">
|
|
8
|
+
<article class="content">
|
|
9
|
+
<header>
|
|
10
|
+
<h1>{{ page.title | escape }}</h1>
|
|
11
|
+
{%- assign date_format = site.amethyst.date_format | default: "%e %B %Y" -%}
|
|
12
|
+
<p class="post-meta byline">Posted on <a href="{{ page.url | relative_url }}" rel="bookmark"><time itemprop="pubdate" datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: date_format }}</time></a>{% if page.author %} by <span class="vcard"><span class="fn n" rel="author">{{ page.author | escape }}</span></span>{% endif %}</p>
|
|
13
|
+
</header>
|
|
14
|
+
{{ content }}
|
|
15
|
+
</article>
|
|
16
|
+
{%- comment -%}
|
|
17
|
+
Support basic read-only rendering of imported comments.
|
|
18
|
+
|
|
19
|
+
Docs: <https://en.gravatar.com/site/implement/images/>
|
|
20
|
+
{%- endcomment -%}
|
|
21
|
+
{%- if page.amethyst.comments.size > 0 -%}
|
|
22
|
+
<div id="comments" class="comments">
|
|
23
|
+
<h2 id="comments-title">{{ page.amethyst.comments.size }} archived comment{% if page.amethyst.comments.size != 1 %}s{% endif %}</h2>
|
|
24
|
+
<ol class="comment-list">
|
|
25
|
+
{%- for comment in page.amethyst.comments -%}
|
|
26
|
+
<li class="comment" id="comment-{{ forloop.index }}">
|
|
27
|
+
<div class="comment-meta">
|
|
28
|
+
<img alt="" src="https://gravatar.com/avatar/{{ comment.gravatar | default: 'none' }}?s=68&d=mm&r=g" srcset="https://gravatar.com/avatar/{{ comment.gravatar | default: 'none' }}?s=136&d=mm&r=g 2x" class="comment-avatar" loading="lazy" width="68" height="68">
|
|
29
|
+
<span class="comment-author">{{ comment.author | escape }}</span> on <a href="#comment-{{ forloop.index }}"><time datetime="{{ comment.date | date_to_xmlschema }}">{{ comment.date | date: date_format }}</time></a> said:</div>
|
|
30
|
+
<div class="comment-content">{{ comment.content | markdownify }}</div>
|
|
31
|
+
</li>
|
|
32
|
+
{%- endfor -%}
|
|
33
|
+
</ol>
|
|
34
|
+
</div>
|
|
35
|
+
{%- endif -%}
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_blog" %}
|
|
7
|
+
{%- assign date_format = site.amethyst.date_format | default: "%e %B %Y" -%}
|
|
8
|
+
{%- assign posts = site.posts -%}
|
|
9
|
+
<div class="posts content">
|
|
10
|
+
<h1>{{ page.title }}</h1>
|
|
11
|
+
<ul>
|
|
12
|
+
{% for post in posts -%}
|
|
13
|
+
<li><a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>, <time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: date_format }}</time>.</li>
|
|
14
|
+
{%- endfor -%}
|
|
15
|
+
</ul>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_blog" %}
|
|
7
|
+
{%- assign date_format = site.amethyst.date_format | default: "%e %B %Y" -%}
|
|
8
|
+
{%- assign posts = site.posts | where: 'author', page.author -%}
|
|
9
|
+
<div class="posts content">
|
|
10
|
+
<h1>Author: {{ page.title | escape }}</h1>
|
|
11
|
+
{%- for post in posts -%}
|
|
12
|
+
<div class="post-row">
|
|
13
|
+
<h2><a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a></h2>
|
|
14
|
+
<p class="post-meta">Posted on <time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: date_format }}</time></p>
|
|
15
|
+
<div class="post">
|
|
16
|
+
{{- post.excerpt -}}
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
{%- endfor -%}
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_blog" %}
|
|
7
|
+
{%- assign date_format = site.amethyst.date_format | default: "%e %B %Y" -%}
|
|
8
|
+
{%- assign posts = site.tags[page.tag] -%}
|
|
9
|
+
<div class="posts content">
|
|
10
|
+
<h1>Tag: {{ page.title | escape }}</h1>
|
|
11
|
+
{%- for post in posts -%}
|
|
12
|
+
<div class="post-row">
|
|
13
|
+
<h2><a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a></h2>
|
|
14
|
+
<p class="post-meta">Posted on <time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: date_format }}</time>{% if post.author %} by {{ post.author | escape }}{% endif %}</p>
|
|
15
|
+
<div class="post">
|
|
16
|
+
{{- post.excerpt -}}
|
|
17
|
+
{%- if post.excerpt != post.content %}
|
|
18
|
+
<a class="screen-reader-text" href="{{ post.url | relative_url }}">Continue reading "{{ post.title | escape }}".</a>
|
|
19
|
+
{%- endif -%}
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
{%- endfor -%}
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_blog" %}
|
|
7
|
+
{%- assign date_format = site.amethyst.date_format | default: "%e %B %Y" -%}
|
|
8
|
+
{%- assign posts = page.posts -%}
|
|
9
|
+
<div class="posts content">
|
|
10
|
+
<h1>Archive: {{ page.date | date: '%Y' }}</h1>
|
|
11
|
+
{%- for post in posts -%}
|
|
12
|
+
<div class="post-row">
|
|
13
|
+
<h2><a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a></h2>
|
|
14
|
+
<p class="post-meta">Posted on <time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: date_format }}</time>{% if post.author %} by {{ post.author | escape }}{% endif %}</p>
|
|
15
|
+
<div class="post">
|
|
16
|
+
{{- post.excerpt -}}
|
|
17
|
+
{%- if post.excerpt != post.content %}
|
|
18
|
+
<a class="screen-reader-text" href="{{ post.url | relative_url }}">Continue reading "{{ post.title | escape }}".</a>
|
|
19
|
+
{%- endif -%}
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
{%- endfor -%}
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
data/_layouts/posts.html
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: wrapper
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div class="main main--columns wrapper">
|
|
6
|
+
{% include sidebar.html blocks="sidebar_blog" %}
|
|
7
|
+
{%- assign date_format = site.amethyst.date_format | default: "%e %B %Y" -%}
|
|
8
|
+
{%- assign posts = site.posts | slice: 0, 10 -%}
|
|
9
|
+
<div class="posts content">
|
|
10
|
+
<h1>{{ page.title }}</h1>
|
|
11
|
+
{% for post in posts -%}
|
|
12
|
+
<div class="post-row">
|
|
13
|
+
<h2><a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a></h2>
|
|
14
|
+
<p class="post-meta">Posted on <time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: date_format }}</time>{% if post.author %} by {{ post.author | escape }}{% endif %}</p>
|
|
15
|
+
<div class="post">
|
|
16
|
+
{{- post.excerpt -}}
|
|
17
|
+
{%- if post.excerpt != post.content %}
|
|
18
|
+
<a class="screen-reader-text" href="{{ post.url | relative_url }}">Continue reading "{{ post.title | escape }}".</a>
|
|
19
|
+
{%- endif -%}
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
{%- endfor -%}
|
|
23
|
+
{%- assign archive_page = site.pages | where: "layout", "posts-archive" | first -%}
|
|
24
|
+
{%- if site.posts.size > 10 and archive_page %}
|
|
25
|
+
<a href="{{ archive_page.url | relative_url }}">Older posts</a>
|
|
26
|
+
{%- endif -%}
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<meta charset="utf-8">
|
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
|
+
<link rel="icon" href="{{ site.amethyst.favicon | default: '/favicon.svg' | relative_url }}">
|
|
6
|
+
<link rel="stylesheet" href="{{ '/assets/styles.css' | file_version_query: '/_sass/amethyst-variables.scss', '/_sass/amethyst.scss', '/_sass/highlight.scss', '/_sass/custom.scss' | relative_url }}" media="screen">
|
|
7
|
+
{% include opengraph.html -%}
|
|
8
|
+
<body>
|
|
9
|
+
<header class="site-header" role="banner">
|
|
10
|
+
<div class="site-header-wrapper wrapper">
|
|
11
|
+
<a class="site-logo" href="{{ site.amethyst.home_href | default: '/' | relative_url }}">
|
|
12
|
+
{%- if site.amethyst.header_logo.src -%}
|
|
13
|
+
<img src="{{ site.amethyst.header_logo.src | relative_url | escape }}" alt="{{ site.title | escape }}" width="{{ site.amethyst.header_logo.width | escape }}" height="{{ site.amethyst.header_logo.height | escape }}">
|
|
14
|
+
{%- else -%}
|
|
15
|
+
{{ site.title | escape }}
|
|
16
|
+
{%- endif -%}
|
|
17
|
+
</a>
|
|
18
|
+
{%- if site.amethyst.algolia.search_only_api_key -%}
|
|
19
|
+
{%- include search.html -%}
|
|
20
|
+
{%- endif -%}
|
|
21
|
+
<nav class="site-nav"><ul class="site-nav-list">
|
|
22
|
+
{%- for item in site.data.sitenav -%}
|
|
23
|
+
<li class="site-nav-item{%- if item.sub %} has-sub-list{% endif %}">
|
|
24
|
+
<a class="site-nav-link{%- if item.sub %} has-sub-list{% endif %}" href="{{ item.href | relative_url | escape }}">{{ item.name }}</a>
|
|
25
|
+
{%- if item.sub -%}
|
|
26
|
+
<ul class="site-nav-sub-list">
|
|
27
|
+
{%- for sub in item.sub -%}
|
|
28
|
+
<li><a class="site-sub-nav-link" href="{{ sub.href | relative_url | escape }}">{{ sub.name | escape }}</a></li>
|
|
29
|
+
{%- endfor -%}
|
|
30
|
+
</ul>
|
|
31
|
+
{%- endif -%}
|
|
32
|
+
</li>
|
|
33
|
+
{%- endfor -%}
|
|
34
|
+
</ul></nav>
|
|
35
|
+
<div class="site-toggles">
|
|
36
|
+
{%- if site.amethyst.algolia.search_only_api_key %}
|
|
37
|
+
<button class="search-toggle toggle" data-opens=".site-search" aria-expanded="false">
|
|
38
|
+
<span class="screen-reader-text">Search</span>
|
|
39
|
+
<svg class="icon aa-input-icon" aria-hidden="true" viewBox="654 -372 1664 1664" height="20">
|
|
40
|
+
<path d="M1806,332c0-123.3-43.8-228.8-131.5-316.5C1586.8-72.2,1481.3-116,1358-116s-228.8,43.8-316.5,131.5 C953.8,103.2,910,208.7,910,332s43.8,228.8,131.5,316.5C1129.2,736.2,1234.7,780,1358,780s228.8-43.8,316.5-131.5 C1762.2,560.8,1806,455.3,1806,332z M2318,1164c0,34.7-12.7,64.7-38,90s-55.3,38-90,38c-36,0-66-12.7-90-38l-343-342 c-119.3,82.7-252.3,124-399,124c-95.3,0-186.5-18.5-273.5-55.5s-162-87-225-150s-113-138-150-225S654,427.3,654,332 s18.5-186.5,55.5-273.5s87-162,150-225s138-113,225-150S1262.7-372,1358-372s186.5,18.5,273.5,55.5s162,87,225,150s113,138,150,225 S2062,236.7,2062,332c0,146.7-41.3,279.7-124,399l343,343C2305.7,1098.7,2318,1128.7,2318,1164z"/>
|
|
41
|
+
</svg>
|
|
42
|
+
</button>
|
|
43
|
+
<script type="module">
|
|
44
|
+
const searchToggle = document.querySelector('.search-toggle');
|
|
45
|
+
const searchToggleOpens = document.querySelector(searchToggle.dataset.opens);
|
|
46
|
+
searchToggle.addEventListener('click', () => {
|
|
47
|
+
const state = searchToggle.classList.contains('opened');
|
|
48
|
+
searchToggle.classList.toggle('opened', !state);
|
|
49
|
+
searchToggle.setAttribute('aria-expanded', !state);
|
|
50
|
+
searchToggleOpens.classList.toggle('opened', !state);
|
|
51
|
+
searchToggleOpens.setAttribute('aria-expanded', !state);
|
|
52
|
+
});
|
|
53
|
+
</script>
|
|
54
|
+
{%- endif %}
|
|
55
|
+
<button class="nav-toggle toggle" data-opens=".site-nav" aria-expanded="false">
|
|
56
|
+
<span class="screen-reader-text">Menu</span>
|
|
57
|
+
<svg class="icon icon-nav-toggle" aria-hidden="true" viewBox="0 0 100 100" height="20">
|
|
58
|
+
<path d="M5,16h90v16H5z"/>
|
|
59
|
+
<path d="M5,48h90v16H5z"/>
|
|
60
|
+
<path d="M5,80h90v16H5z"/>
|
|
61
|
+
</svg>
|
|
62
|
+
</button>
|
|
63
|
+
<script type="module">
|
|
64
|
+
const navToggle = document.querySelector('.nav-toggle');
|
|
65
|
+
const navToggleOpens = document.querySelector(navToggle.dataset.opens);
|
|
66
|
+
navToggle.addEventListener('click', () => {
|
|
67
|
+
const state = navToggle.classList.contains('opened');
|
|
68
|
+
navToggle.classList.toggle('opened', !state);
|
|
69
|
+
navToggle.setAttribute('aria-expanded', !state);
|
|
70
|
+
navToggleOpens.classList.toggle('opened', !state);
|
|
71
|
+
navToggleOpens.setAttribute('aria-expanded', !state);
|
|
72
|
+
});
|
|
73
|
+
</script>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</header>
|
|
77
|
+
{{ content }}
|
|
78
|
+
<footer class="site-footer">
|
|
79
|
+
<div class="wrapper">
|
|
80
|
+
<p class="external-links">
|
|
81
|
+
<a href="https://github.com/{{ site.amethyst.github | escape }}" target="_blank" rel="noopener noreferrer">GitHub</a>
|
|
82
|
+
{%- if site.amethyst.mastodon %}
|
|
83
|
+
<a href="{{ site.amethyst.mastodon | escape }}" target="_blank" rel="noopener noreferrer">Mastodon</a>
|
|
84
|
+
{% endif -%}
|
|
85
|
+
{%- if site.amethyst.twitter %}
|
|
86
|
+
<a href="https://twitter.com/{{ site.amethyst.twitter | escape }}" target="_blank" rel="noopener noreferrer">Twitter</a>
|
|
87
|
+
{% endif -%}
|
|
88
|
+
{%- if site.amethyst.gitter %}
|
|
89
|
+
<a href="https://gitter.im/{{ site.amethyst.gitter | escape }}" target="_blank" rel="noopener noreferrer">Chat</a>
|
|
90
|
+
{%- endif %}
|
|
91
|
+
</p>
|
|
92
|
+
<p class="copyright">Copyright <a href="https://openjsf.org/" target="_blank" rel="noopener noreferrer">OpenJS Foundation</a> and contributors.
|
|
93
|
+
{%- comment -%}
|
|
94
|
+
Ignore non-markdown source paths, which are likely generated and thus
|
|
95
|
+
don't have a corresponding file in the repository (e.g. an archive page)
|
|
96
|
+
{%- endcomment -%}
|
|
97
|
+
{%- assign pathext = page.path | split: '.' | last -%}
|
|
98
|
+
{%- if site.amethyst.edituri_base and pathext == 'md' -%}
|
|
99
|
+
<br><a href="{{ site.amethyst.edituri_base | escape }}{{ page.path | escape }}">Edit this page</a>
|
|
100
|
+
{%- endif -%}
|
|
101
|
+
</p>
|
|
102
|
+
</div>
|
|
103
|
+
</footer>
|
|
104
|
+
{%- if site.amethyst.algolia.search_only_api_key -%}
|
|
105
|
+
{%- include search-js.html -%}
|
|
106
|
+
{%- endif -%}
|
|
107
|
+
<script type="module">
|
|
108
|
+
window.addEventListener('DOMContentLoaded', function setupSubNav() {
|
|
109
|
+
const siteNav = document.querySelector('.site-nav-list');
|
|
110
|
+
const closeSubNav = () => {
|
|
111
|
+
const prevSub = siteNav.querySelector('.is-open');
|
|
112
|
+
if (prevSub) {
|
|
113
|
+
prevSub.classList.remove('is-open');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
siteNav.addEventListener('click', (event) => {
|
|
117
|
+
if (event.target.classList.contains('has-sub-list')) {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
event.stopPropagation();
|
|
120
|
+
|
|
121
|
+
if (event.target.parentNode.classList.contains('is-open')) {
|
|
122
|
+
closeSubNav();
|
|
123
|
+
} else {
|
|
124
|
+
closeSubNav();
|
|
125
|
+
event.target.parentNode.classList.add('is-open');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
</script>
|
|
131
|
+
</body>
|
|
132
|
+
</html>
|