klise 1.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a7b9e5a649c9061c3bc5b95f9ec5e35d3b64142f2b5e2e9ed1c877a9dc9e3d34
4
+ data.tar.gz: 1fdb701edc67a471a1200c2429f9e4bcc0264c9e22d5193f609fef06e7fb307f
5
+ SHA512:
6
+ metadata.gz: 3980a7ee19dae324802266181ffddc007cc6dd94b971f12bcb33e925e28a87448d5b3db726219401da37cdb48350fdec3e3451a8e713116016b778296debcf2d
7
+ data.tar.gz: 9a6cf5513628c915d4e9eea29b0a0f99ebb9e637b5ca92cd4fce1b14ea60777d1e9d66d9d9674a4af4de232b1b453664e9ea4dd1b0fee97b369f38f019204956
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Mahendrata Harpi
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.
@@ -0,0 +1,59 @@
1
+ # Klisé
2
+
3
+ Klisé is minimalist Jekyll theme for running a personal site and blog running on Jekyll.<br>
4
+ For demo <a href="https://klise.now.sh" target="_blank" rel="noopener">klise.now.sh</a>
5
+
6
+ ## Features
7
+
8
+ - [x] Light & Dark Mode support :waxing_crescent_moon:
9
+ - [x] Customizable (using `.scss`)
10
+ - [x] Responsive (desktop, tab and mobile)
11
+ - [x] Mobile First Design
12
+ - [x] SEO Optimized
13
+ - [x] Images of post Organized ([`jekyll-postfiles`](https://github.com/nhoizey/jekyll-postfiles))
14
+ - [x] Generate Sitemap ([`jekyll-sitemap`](https://github.com/jekyll/jekyll-sitemap))
15
+ - [x] RSS Feed ([`jekyll-feed`](https://github.com/jekyll/jekyll-feed))
16
+ - [x] Syntax Highlighter ([`rouge`](https://github.com/rouge-ruby/rouge))
17
+ - [x] Next & Previous Post
18
+ - [x] Comment layout, enable in frontmatter if you wish
19
+ - [x] Google analytics
20
+ - [x] HTML Minify ([`jekyll-compress-html`](https://github.com/penibelst/jekyll-compress-html))
21
+ - [x] W3C **Validated**
22
+ - [x] Lighthouse and PageSpeed **Passed**
23
+
24
+ ![Lighthouse Result](./lighthouse.png)
25
+
26
+ ## Backlogs
27
+
28
+ - [ ] Intergrated with PhotoSwipe.
29
+ - [ ] Add schema.org meta information.
30
+ - [ ] Transform class selector to BEM metodology.
31
+
32
+ ## Installation
33
+
34
+ Run local server:
35
+
36
+ ```bash
37
+ git clone https://github.com/piharpi/jekyll-klise.git
38
+ cd jekyll-klise
39
+ bundle install
40
+ bundle exec jekyll serve
41
+ ```
42
+
43
+ Navigate to `localhost:4000`. You're Welcome, Fork and be Stargazer.
44
+
45
+ [![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/piharpi/jekyll-klise) [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/piharpi/jekyll-klise)
46
+
47
+ ## Limitation
48
+
49
+ - Since [`jekyll-postfiles`](https://github.com/nhoizey/jekyll-postfiles#compatibility) plugin isn't supported by github pages, this cause will make your site problems, path broken or post images won't show up, you can host alternatively using likes [netlify.com](https://netlify.com), [vercel.com](https://vercel.com) or [surge.sh](https://surge.sh) services, which support 3rd party.
50
+
51
+ ## Contributing
52
+
53
+ If you see any typos or formatting errors in a post, or want to helping reduce backlogs or any other issue that needs to be addressed, please do not hesitate to open a pull request and fix it!, please read [contributing](./CONTRIBUTING.md) before PR.
54
+
55
+ Yeaaa feel free to open a pull request.
56
+
57
+ ## License
58
+
59
+ This project is open source and available under the [MIT License](LICENSE).
@@ -0,0 +1,105 @@
1
+ {% capture headingsWorkspace %}
2
+ {% comment %}
3
+ Version 1.0.4
4
+ https://github.com/allejo/jekyll-anchor-headings
5
+
6
+ "Be the pull request you wish to see in the world." ~Ben Balter
7
+
8
+ Usage:
9
+ {% include anchor_headings.html html=content %}
10
+
11
+ Parameters:
12
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
13
+
14
+ Optional Parameters:
15
+ * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content
16
+ * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `<a>` tag; you may NOT use `href`, `class` or `title`
17
+ * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available
18
+ * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space
19
+ * anchorTitle (string) : '' - The `title` attribute that will be used for anchors
20
+ * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored
21
+ * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored
22
+ * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content
23
+ * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content
24
+
25
+ Output:
26
+ The original HTML with the addition of anchors inside of all of the h1-h6 headings.
27
+ {% endcomment %}
28
+
29
+ {% assign minHeader = include.h_min | default: 1 %}
30
+ {% assign maxHeader = include.h_max | default: 6 %}
31
+ {% assign beforeHeading = include.beforeHeading %}
32
+ {% assign nodes = include.html | split: '<h' %}
33
+
34
+ {% capture edited_headings %}{% endcapture %}
35
+
36
+ {% for _node in nodes %}
37
+ {% capture node %}{{ _node | strip }}{% endcapture %}
38
+
39
+ {% if node == "" %}
40
+ {% continue %}
41
+ {% endif %}
42
+
43
+ {% assign nextChar = node | replace: '"', '' | strip | slice: 0, 1 %}
44
+ {% assign headerLevel = nextChar | times: 1 %}
45
+
46
+ <!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's try to fix it -->
47
+ {% if headerLevel == 0 %}
48
+ {% if nextChar != '<' and nextChar != '' %}
49
+ {% capture node %}<h{{ node }}{% endcapture %}
50
+ {% endif %}
51
+
52
+ {% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %}
53
+ {% continue %}
54
+ {% endif %}
55
+
56
+ {% assign _workspace = node | split: '</h' %}
57
+ {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
58
+ {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
59
+ {% assign html_id = _idWorkspace[0] %}
60
+
61
+ {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
62
+ {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
63
+
64
+ <!-- Build the anchor to inject for our heading -->
65
+ {% capture anchor %}{% endcapture %}
66
+
67
+ {% if html_id and headerLevel >= minHeader and headerLevel <= maxHeader %}
68
+ {% capture anchor %}href="#{{ html_id }}"{% endcapture %}
69
+
70
+ {% if include.anchorClass %}
71
+ {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %}
72
+ {% endif %}
73
+
74
+ {% if include.anchorTitle %}
75
+ {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', header }}"{% endcapture %}
76
+ {% endif %}
77
+
78
+ {% if include.anchorAttrs %}
79
+ {% capture anchor %}{{ anchor }} {{ include.anchorAttrs }}{% endcapture %}
80
+ {% endif %}
81
+
82
+ {% capture anchor %}<a {{ anchor }}>{{ include.anchorBody | replace: '%heading%', header | default: '' }}</a>{% endcapture %}
83
+
84
+ <!-- In order to prevent adding extra space after a heading, we'll let the 'anchor' value contain it -->
85
+ {% if beforeHeading %}
86
+ {% capture anchor %}{{ anchor }} {% endcapture %}
87
+ {% else %}
88
+ {% capture anchor %} {{ anchor }}{% endcapture %}
89
+ {% endif %}
90
+ {% endif %}
91
+
92
+ {% capture new_heading %}
93
+ <h{{ _hAttrToStrip }}
94
+ {{ include.bodyPrefix }}
95
+ {% if beforeHeading %}
96
+ {{ anchor }}{{ header }}
97
+ {% else %}
98
+ {{ header }}{{ anchor }}
99
+ {% endif %}
100
+ {{ include.bodySuffix }}
101
+ </h{{ _workspace | last }}
102
+ {% endcapture %}
103
+ {% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %}
104
+ {% endfor %}
105
+ {% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }}
@@ -0,0 +1,9 @@
1
+ <div class="author">
2
+ <img
3
+ class="author-avatar"
4
+ src="{{ site.author.avatar }}"
5
+ alt="{{ site.author.username }}"
6
+ />
7
+ <h2 class="author-name">{{ site.author.name }}</h2>
8
+ <p class="author-bio">{{ site.author.bio }}</p>
9
+ </div>
@@ -0,0 +1,10 @@
1
+ <!-- unnecessary file, however you can still use for comment section, e.g disqus -->
2
+ <script
3
+ src="https://utteranc.es/client.js"
4
+ repo="username/reponame"
5
+ issue-term="pathname"
6
+ label="✨ comment ✨"
7
+ theme="github-light"
8
+ crossorigin="anonymous"
9
+ async
10
+ ></script>
@@ -0,0 +1,38 @@
1
+ <footer class="footer">
2
+ <a class="footer_item" href="/thanks">ack.</a>
3
+ <a class="footer_item" href="javascript::void(0)">resume</a>
4
+ <a class="footer_item" href="/feed.xml">rss</a>
5
+ <span class="footer_item">&copy; {{ site.time | date: "%Y" }}</span>
6
+ <small class="footer_copyright">
7
+ <!-- Klisé Theme: https://github.com/piharpi/jekyll-klise -->
8
+ <a
9
+ href="https://github.com/piharpi/jekyll-klise"
10
+ target="_blank"
11
+ rel="noreferrer noopener"
12
+ >klisé</a
13
+ >
14
+ theme on
15
+ <a href="https://jekyllrb.com" target="_blank" rel="noreferrer noopener"
16
+ >jekyll</a
17
+ >
18
+ </small>
19
+ </footer>
20
+ <script src="/assets/js/main.js" defer="defer"></script>
21
+
22
+ {%- if page.google_analytics -%}
23
+ <script src="/assets/js/galite.js"></script>
24
+ <script>
25
+ var galite = galite || {};
26
+ galite.UA = "{{ site.google_analytics }}";
27
+ </script>
28
+ {%- endif -%}
29
+ {%- if page.url == '/archive/' -%}
30
+ <script src="/assets/js/search.min.js"></script>
31
+ <script>
32
+ var sjs = SimpleJekyllSearch({
33
+ searchInput: document.getElementById('search-input'),
34
+ resultsContainer: document.getElementById('search-results'),
35
+ json: '/assets/search.json',
36
+ });
37
+ </script>
38
+ {%- endif -%}
@@ -0,0 +1,164 @@
1
+ <head prefix="og: http://ogp.me/ns#">
2
+ <meta charset="UTF-8" />
3
+ <meta http-equiv="X-UA-Compatible" content="ie=edge" />
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
+ <meta name="mobile-web-app-capable" content="yes" />
6
+ <meta name="apple-mobile-web-app-capable" content="yes" />
7
+ <meta name="application-name" content="{{ site.title }}" />
8
+ <meta name="apple-mobile-web-app-status-bar-style" content="#fff" />
9
+ <meta name="apple-mobile-web-app-title" content="{{ site.title }}" />
10
+ <title>
11
+ {% if page.title %}{{ page.title | escape }} - {{ site.title }}{% else %}{{
12
+ site.title | escape }}{% endif %}
13
+ </title>
14
+ <link
15
+ rel="alternate"
16
+ href="{{
17
+ page.url | remove: 'index.html' | remove: '.html' | absolute_url
18
+ }}"
19
+ hreflang="{{ site.lang }}"
20
+ />
21
+ <link
22
+ rel="canonical"
23
+ href="{{
24
+ page.url | remove: 'index.html' | remove: '.html' | absolute_url
25
+ }}"
26
+ />
27
+ {% if paginator.previous_page %}
28
+ <link
29
+ rel="prev"
30
+ href="{{
31
+ paginator.previous_page_path
32
+ | remove: 'index.html'
33
+ | remove: '.html'
34
+ }}"
35
+ />
36
+ {% endif %} {% if paginator.next_page %}
37
+ <link
38
+ rel="next"
39
+ href="{{
40
+ paginator.next_page_path
41
+ | remove: 'index.html'
42
+ | remove: '.html'
43
+ }}"
44
+ />
45
+ {% endif %}
46
+ <meta
47
+ name="description"
48
+ content="{{
49
+ page.description
50
+ | default: site.description
51
+ | strip_html
52
+ | normalize_whitespace
53
+ | truncate: 200
54
+ | escape
55
+ }}"
56
+ />
57
+ <meta name="referrer" content="no-referrer-when-downgrade" />
58
+ <meta property="fb:app_id" content="{{ site.fb_appid }}" />
59
+ <meta
60
+ property="og:site_name"
61
+ content="{% if page.title %}{{ page.title | escape }} | {{
62
+ site.author.facebook
63
+ }}{% else %}{{ site.title | escape }}{% endif %}"
64
+ />
65
+ <meta
66
+ property="og:title"
67
+ content="{% if page.title %}{{ page.title | escape }} | {{
68
+ site.author.facebook
69
+ }}{% else %}{{ site.title | escape }}{% endif %}"
70
+ />
71
+ {% if page.location %}
72
+ <meta property="og:type" content="article" />
73
+ <meta
74
+ property="article:publisher"
75
+ content="https://web.facebook.com/{{ site.author.facebook }}"
76
+ />
77
+ {% else %}
78
+ <meta property="og:type" content="website" />
79
+ {% endif %}
80
+ <meta
81
+ property="og:url"
82
+ content="{{
83
+ page.url | remove: 'index.html' | remove: '.html' | absolute_url
84
+ }}"
85
+ />
86
+ <meta
87
+ property="og:description"
88
+ content="{{
89
+ page.description
90
+ | default: site.description
91
+ | strip_html
92
+ | normalize_whitespace
93
+ | truncate: 200
94
+ | escape
95
+ }}"
96
+ />
97
+ {% if page.image %}
98
+ <meta property="og:image" content="{{ page.image | absolute_url }}" />
99
+ {% else %}
100
+ <meta property="og:image" content="{{ site.image | absolute_url }}" />
101
+ {% endif %}
102
+ <meta property="og:image:width" content="640" />
103
+ <meta property="og:image:height" content="640" />
104
+ <meta name="twitter:card" content="summary" />
105
+ <meta
106
+ name="twitter:title"
107
+ content="{% if page.title %}{{ page.title | escape }} | {{
108
+ site.author.twitter
109
+ }}{% else %}{{ site.title | escape }}{% endif %}"
110
+ />
111
+ <meta
112
+ name="twitter:url"
113
+ content="{{
114
+ page.url | remove: 'index.html' | remove: '.html' | absolute_url
115
+ }}"
116
+ />
117
+ <meta name="twitter:site" content="@{{ site.author.twitter }}" />
118
+ <meta name="twitter:creator" content="@{{ site.author.twitter }}" />
119
+ <meta
120
+ name="twitter:description"
121
+ content="{{
122
+ page.description
123
+ | default: site.description
124
+ | strip_html
125
+ | normalize_whitespace
126
+ | truncate: 200
127
+ | escape
128
+ }}"
129
+ />
130
+ {% if page.image %}
131
+ <meta name="twitter:image" content="{{ page.image | absolute_url }}" />
132
+ {% else %}
133
+ <meta name="twitter:image" content="{{ site.image | absolute_url }}" />
134
+ {% endif %} {% feed_meta %}
135
+ <link
136
+ rel="apple-touch-icon"
137
+ sizes="180x180"
138
+ href="/assets/favicons/apple-touch-icon.png"
139
+ />
140
+ <link
141
+ rel="icon"
142
+ type="image/png"
143
+ sizes="32x32"
144
+ href="/assets/favicons/favicon-32x32.png"
145
+ />
146
+ <link
147
+ rel="icon"
148
+ type="image/png"
149
+ sizes="16x16"
150
+ href="/assets/favicons/favicon-16x16.png"
151
+ />
152
+ <link rel="manifest" href="/assets/favicons/site.webmanifest" />
153
+ <link
154
+ rel="mask-icon"
155
+ href="/assets/favicons/safari-pinned-tab.svg"
156
+ color="#5bbad5"
157
+ />
158
+ <meta name="apple-mobile-web-app-title" content="Jekyll Klise" />
159
+ <meta name="application-name" content="Jekyll Klise" />
160
+ <meta name="msapplication-TileColor" content="#da532c" />
161
+ <meta name="theme-color" content="#2c2c2c" />
162
+
163
+ <link rel="stylesheet" href="/assets/css/style.css" />
164
+ </head>
@@ -0,0 +1,211 @@
1
+ <div class="navbar" role="navigation">
2
+ <nav class="menu">
3
+ <input type="checkbox" id="menu-trigger" class="menu-trigger" />
4
+ <label for="menu-trigger">
5
+ <span class="menu-icon">
6
+ <svg
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ width="24"
9
+ height="24"
10
+ viewBox="0 0 512 512"
11
+ >
12
+ <path
13
+ d="M64,384H448V341.33H64Zm0-106.67H448V234.67H64ZM64,128v42.67H448V128Z"
14
+ />
15
+ </svg>
16
+ </span>
17
+ </label>
18
+ <a id="mode">
19
+ <svg
20
+ class="mode-sunny"
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ width="24"
23
+ height="24"
24
+ viewBox="0 0 512 512"
25
+ >
26
+ <title>LIGHT</title>
27
+ <line
28
+ x1="256"
29
+ y1="48"
30
+ x2="256"
31
+ y2="96"
32
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
33
+ />
34
+ <line
35
+ x1="256"
36
+ y1="416"
37
+ x2="256"
38
+ y2="464"
39
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
40
+ />
41
+ <line
42
+ x1="403.08"
43
+ y1="108.92"
44
+ x2="369.14"
45
+ y2="142.86"
46
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
47
+ />
48
+ <line
49
+ x1="142.86"
50
+ y1="369.14"
51
+ x2="108.92"
52
+ y2="403.08"
53
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
54
+ />
55
+ <line
56
+ x1="464"
57
+ y1="256"
58
+ x2="416"
59
+ y2="256"
60
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
61
+ />
62
+ <line
63
+ x1="96"
64
+ y1="256"
65
+ x2="48"
66
+ y2="256"
67
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
68
+ />
69
+ <line
70
+ x1="403.08"
71
+ y1="403.08"
72
+ x2="369.14"
73
+ y2="369.14"
74
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
75
+ />
76
+ <line
77
+ x1="142.86"
78
+ y1="142.86"
79
+ x2="108.92"
80
+ y2="108.92"
81
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
82
+ />
83
+ <circle
84
+ cx="256"
85
+ cy="256"
86
+ r="80"
87
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
88
+ />
89
+ </svg>
90
+ <svg
91
+ class="mode-moon"
92
+ xmlns="http://www.w3.org/2000/svg"
93
+ width="24"
94
+ height="24"
95
+ viewBox="0 0 512 512"
96
+ >
97
+ <title>DARK</title>
98
+ <line
99
+ x1="256"
100
+ y1="48"
101
+ x2="256"
102
+ y2="96"
103
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
104
+ />
105
+ <line
106
+ x1="256"
107
+ y1="416"
108
+ x2="256"
109
+ y2="464"
110
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
111
+ />
112
+ <line
113
+ x1="403.08"
114
+ y1="108.92"
115
+ x2="369.14"
116
+ y2="142.86"
117
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
118
+ />
119
+ <line
120
+ x1="142.86"
121
+ y1="369.14"
122
+ x2="108.92"
123
+ y2="403.08"
124
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
125
+ />
126
+ <line
127
+ x1="464"
128
+ y1="256"
129
+ x2="416"
130
+ y2="256"
131
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
132
+ />
133
+ <line
134
+ x1="96"
135
+ y1="256"
136
+ x2="48"
137
+ y2="256"
138
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
139
+ />
140
+ <line
141
+ x1="403.08"
142
+ y1="403.08"
143
+ x2="369.14"
144
+ y2="369.14"
145
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
146
+ />
147
+ <line
148
+ x1="142.86"
149
+ y1="142.86"
150
+ x2="108.92"
151
+ y2="108.92"
152
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
153
+ />
154
+ <circle
155
+ cx="256"
156
+ cy="256"
157
+ r="80"
158
+ style="stroke-linecap:round;stroke-miterlimit:10;stroke-width:32px"
159
+ />
160
+ </svg>
161
+ </a>
162
+ <div class="trigger">
163
+ <div class="trigger-container">
164
+ {%- assign url = page.url -%}
165
+ {%- assign menus = site.data.menus -%}
166
+ {%- if menus %}
167
+ {%- for menu in menus -%}
168
+ {%- if url == menu.url -%}
169
+ <a class="menu-link active" href="{{ menu.url }}">{{ menu.title }}</a>
170
+ {%- else -%}
171
+ {%- if menu.external -%}
172
+ <a
173
+ class="menu-link"
174
+ href="{{ menu.url }}"
175
+ target="_blank"
176
+ rel="noopener"
177
+ >{{ menu.title }}</a
178
+ >
179
+ {%- else -%}
180
+ <a class="menu-link" href="{{ menu.url }}">{{ menu.title }}</a>
181
+ {%- endif -%}
182
+ {%- endif -%}
183
+ {%- endfor -%}
184
+ {%- else -%}
185
+ <a class="menu-link {% if url == '/' %}active{% endif %}" href="/">home</a>
186
+ <a class="menu-link {% if url == '/about/' %}active{% endif %}" href="/about">about</a>
187
+ {%- endif -%}
188
+ <a class="menu-link rss" href="/feed.xml">
189
+ <svg
190
+ xmlns="http://www.w3.org/2000/svg"
191
+ width="17"
192
+ height="17"
193
+ viewBox="0 0 512 512"
194
+ fill="#ED812E"
195
+ >
196
+ <title>RSS</title>
197
+ <path
198
+ d="M108.56,342.78a60.34,60.34,0,1,0,60.56,60.44A60.63,60.63,0,0,0,108.56,342.78Z"
199
+ />
200
+ <path
201
+ d="M48,186.67v86.55c52,0,101.94,15.39,138.67,52.11s52,86.56,52,138.67h86.66C325.33,312.44,199.67,186.67,48,186.67Z"
202
+ />
203
+ <path
204
+ d="M48,48v86.56c185.25,0,329.22,144.08,329.22,329.44H464C464,234.66,277.67,48,48,48Z"
205
+ />
206
+ </svg>
207
+ </a>
208
+ </div>
209
+ </div>
210
+ </nav>
211
+ </div>