jekyll-theme-horizon-flow 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +675 -0
  4. data/_config.yml +103 -0
  5. data/_includes/404.html +26 -0
  6. data/_includes/footer.html +104 -0
  7. data/_includes/header.html +23 -0
  8. data/_includes/read_time.html +39 -0
  9. data/_includes/toc.html +182 -0
  10. data/_layouts/archive.html +82 -0
  11. data/_layouts/categories.html +85 -0
  12. data/_layouts/default.html +26 -0
  13. data/_layouts/home.html +58 -0
  14. data/_layouts/post.html +73 -0
  15. data/_layouts/search.html +45 -0
  16. data/_layouts/tags.html +77 -0
  17. data/_posts/2021-01-01-markdown-test-page.md +179 -0
  18. data/_posts/2022-01-18-pirates.md +44 -0
  19. data/_posts/2022-06-21-leopards.md +42 -0
  20. data/_posts/2022-12-12-chatgpt-testpost-all-markdown-elements.md +121 -0
  21. data/_posts/2023-06-01-getting-started-with-jekyll.md +49 -0
  22. data/_posts/2023-06-03-customizing-your-jekyll-site.md +25 -0
  23. data/_posts/2023-06-06-welcome-to-jekyll.md +29 -0
  24. data/_posts/2023-07-13-title-for-champions.md +284 -0
  25. data/_sass/default/_base.scss +31 -0
  26. data/_sass/default/_footer.scss +162 -0
  27. data/_sass/default/_header.scss +62 -0
  28. data/_sass/external/_highlighter_rougify_base16dark.scss +84 -0
  29. data/_sass/external/_normalize.scss +349 -0
  30. data/_sass/functions/_mixins.scss +192 -0
  31. data/_sass/functions/_values.scss +21 -0
  32. data/_sass/jekyll-theme-horizon-flow.scss +16 -0
  33. data/_sass/layouts/_archive.scss +89 -0
  34. data/_sass/layouts/_categories.scss +93 -0
  35. data/_sass/layouts/_home.scss +120 -0
  36. data/_sass/layouts/_post.scss +322 -0
  37. data/_sass/layouts/_search.scss +66 -0
  38. data/_sass/layouts/_tags.scss +91 -0
  39. data/assets/search.json +20 -0
  40. data/assets/style.scss +6 -0
  41. metadata +182 -0
data/_config.yml ADDED
@@ -0,0 +1,103 @@
1
+ # Welcome to Jekyll!
2
+ #
3
+ # This config file is meant for settings that affect your whole blog, values
4
+ # which you are expected to set up once and rarely edit after that. If you find
5
+ # yourself editing this file very often, consider using Jekyll's data files
6
+ # feature for the data you need to update frequently.
7
+ #
8
+ # For technical reasons, this file is *NOT* reloaded automatically when you use
9
+ # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10
+ #
11
+ # If you need help with YAML syntax, here are some quick references for you:
12
+ # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
13
+ # https://learnxinyminutes.com/docs/yaml/
14
+ #
15
+ # Site settings
16
+ # These are used to personalize your new site. If you look in the HTML files,
17
+ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
18
+ # You can create any custom variable you would like, and they will be accessible
19
+ # in the templates via {{ site.myvariable }}.
20
+
21
+ title: Horizon Flow
22
+ description: >- # this means to ignore newlines until "baseurl:"
23
+ Write an awesome description for your new site here. You can edit this
24
+ line in _config.yml. It will appear in your document head meta (for
25
+ Google search results) and in your feed.xml site description.
26
+ baseurl: "" # the subpath of your site, e.g. /blog
27
+ url: "" # the base hostname & protocol for your site, e.g. http://example.com
28
+
29
+ # Build settings
30
+ theme: jekyll-theme-horizon-flow
31
+ plugins:
32
+ - jekyll-feed
33
+ - jekyll-paginate
34
+ - jekyll-seo-tag
35
+ - jekyll-sitemap
36
+
37
+ # Exclude from processing.
38
+ # The following items will not be processed, by default.
39
+ # Any item listed under the `exclude:` key here will be automatically added to
40
+ # the internal "default list".
41
+ #
42
+ # Excluded items can be processed by explicitly listing the directories or
43
+ # their entries' file path in the `include:` list.
44
+ #
45
+ # exclude:
46
+ # - .sass-cache/
47
+ # - .jekyll-cache/
48
+ # - gemfiles/
49
+ # - Gemfile
50
+ # - Gemfile.lock
51
+ # - node_modules/
52
+ # - vendor/bundle/
53
+ # - vendor/cache/
54
+ # - vendor/gems/
55
+ # - vendor/ruby/
56
+
57
+ #------------------------------------Horizon Flow specific------------------------------------
58
+
59
+ navigation:
60
+ - title: Home
61
+ url: /index.html
62
+
63
+ footer_sidebar:
64
+ arrangement:
65
+ - description
66
+ - tags
67
+ - categories
68
+ - recentposts
69
+ description:
70
+ enabled: true
71
+ categories:
72
+ enabled: true
73
+ count: 100
74
+ columns: 1
75
+ tags:
76
+ enabled: true
77
+ count: 100
78
+ columns: 3
79
+ recentposts:
80
+ enabled: true
81
+ count: 10
82
+ columns: 2
83
+
84
+ footer_links:
85
+ - title: Feed
86
+ url: /feed.xml
87
+ icon: fa fa-rss
88
+
89
+ defaults:
90
+ -
91
+ scope:
92
+ path: "_posts"
93
+ values:
94
+ toc: yes
95
+ display_toc: true
96
+
97
+ paginate: 5
98
+ paginate_path: "/:num/"
99
+
100
+ read_time_after: "min read"
101
+ words_per_minute: 180
102
+
103
+ permalink: /posts/:title #remove date from link
@@ -0,0 +1,26 @@
1
+ ---
2
+ permalink: /404.html
3
+ layout: default
4
+ ---
5
+
6
+ <style type="text/css" media="screen">
7
+ .container {
8
+ margin: 10px auto;
9
+ margin-top: 4em;
10
+ max-width: 600px;
11
+ text-align: center;
12
+ }
13
+ h1 {
14
+ margin: 30px 0;
15
+ font-size: 4em;
16
+ line-height: 1;
17
+ letter-spacing: -1px;
18
+ }
19
+ </style>
20
+
21
+ <div class="container">
22
+ <h1>404</h1>
23
+
24
+ <p><strong>Page not found :(</strong></p>
25
+ <p>The requested page could not be found.</p>
26
+ </div>
@@ -0,0 +1,104 @@
1
+ <link
2
+ rel="stylesheet"
3
+ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"
4
+ integrity="sha512-5A8nwdMOWrSz20fDsjczgUidUBR8liPYU+WymTZP1lmY9G6Oc7HlZv156XqnsgNUzTyMefFTcsFH/tnJE/+xBg=="
5
+ crossorigin="anonymous"
6
+ referrerpolicy="no-referrer" />
7
+
8
+
9
+ <footer>
10
+
11
+
12
+ {% if site.footer_sidebar.arrangement %}
13
+ <aside class="footer_sidebar">
14
+ {% for section in site.footer_sidebar.arrangement %}
15
+ {% if section == 'description' and site.footer_sidebar.description.enabled %}
16
+ <section class="footer_sitedescription">
17
+ {{ site.description }}
18
+ </section>
19
+ {% elsif section == 'extracontent' and site.footer_sidebar.extracontent.enabled %}
20
+ <section class="footer_extracontent">
21
+ {{ site.footer_sidebar.extracontent.data }}
22
+ </section>
23
+ {% elsif section == 'extracontent2' and site.footer_sidebar.extracontent2.enabled %}
24
+ <section class="footer_extracontent">
25
+ {{ site.footer_sidebar.extracontent2.data }}
26
+ </section>
27
+ {% elsif section == 'categories' and site.footer_sidebar.categories.enabled %}
28
+ <section class="footer_categories">
29
+ <h3>Categories</h3>
30
+ <ul>
31
+ {% assign all_categories = "" %}
32
+ {% for post in site.posts %}
33
+ {% assign post_categories = post.categories %}
34
+ {% for category in post_categories %}
35
+ {% assign all_categories = all_categories | append: category | append: "," %}
36
+ {% endfor %}
37
+ {% endfor %}
38
+ {% assign unique_categories = all_categories | split: "," | uniq %}
39
+
40
+ {% assign categories_count = site.footer_sidebar.categories.count | default: 100 %}
41
+ {% assign categories_to_display = unique_categories | slice: 0, categories_count %}
42
+
43
+ {% for category in categories_to_display %}
44
+ <li><a href="categories.html#{{ category }}">{{ category }}</a></li>
45
+ {% endfor %}
46
+ </ul>
47
+ </section>
48
+ {% elsif section == 'tags' and site.footer_sidebar.tags.enabled %}
49
+ <section class="footer_tags">
50
+ <h3>Tags</h3>
51
+ <ul>
52
+ {% assign all_tags = "" %}
53
+ {% for post in site.posts %}
54
+ {% assign post_tags = post.tags %}
55
+ {% for tag in post_tags %}
56
+ {% assign all_tags = all_tags | append: tag | append: "," %}
57
+ {% endfor %}
58
+ {% endfor %}
59
+ {% assign unique_tags = all_tags | split: "," | uniq %}
60
+
61
+ {% assign tags_count = site.footer_sidebar.tags.count | default: 100 %}
62
+ {% assign tags_to_display = unique_tags | slice: 0, tags_count %}
63
+
64
+ {% for tag in tags_to_display %}
65
+ <li><a href="/tags#{{ tag }}">{{ tag }}</a></li>
66
+ {% endfor %}
67
+ </ul>
68
+ </section>
69
+ {% elsif section == 'recentposts' and site.footer_sidebar.recentposts.enabled %}
70
+ <section class="footer_recentposts">
71
+ <h3>Recent Posts</h3>
72
+ <ul>
73
+ {% assign recentposts_count = site.footer_sidebar.recentposts.count | default: 10 %}
74
+ {% assign recent_posts = site.posts | reverse | limit: recentposts_count %}
75
+ {% for post in recent_posts %}
76
+ <li><a href="{{ post.url }}">{{ post.title }}</a></li>
77
+ {% endfor %}
78
+ </ul>
79
+ </section>
80
+ {% endif %}
81
+ {% endfor %}
82
+ </aside>
83
+ {% endif %}
84
+
85
+
86
+
87
+
88
+
89
+ {% if site.footer_links.size > 0 %}
90
+ <div class="social-icons item3">
91
+ {% for link in site.footer_links %}
92
+ {% if link.icon %}
93
+ <a href="{{ link.url }}" class="{{ link.icon }}" target="_blank"></a>
94
+ {% else %}
95
+ <a href="{{ link.url }}">{{ link.title }}</a>
96
+ {% endif %}
97
+ {% unless forloop.last %}
98
+ <span class="divider"></span>
99
+ {% endunless %}
100
+ {% endfor %}
101
+ </div>
102
+ {% endif %}
103
+
104
+ </footer>
@@ -0,0 +1,23 @@
1
+ {% assign current = page.url | downcase | split: '/' %}
2
+
3
+ <header>
4
+
5
+ <hr id="header_hr" />
6
+
7
+ <nav>
8
+ <ul>
9
+ {% for item in site.navigation %}
10
+ {% assign class = nil %}
11
+ {% if page.url contains item.url %} <!--or (page.url == '/' and item.url == '/index.html')-->
12
+ {% assign class = 'navi_current' %}
13
+ {% endif %}
14
+ <li><a href="{{ item.url }}" class="{{ class }}">
15
+ {{ item.title }}
16
+ </a></li>
17
+ {% endfor %}
18
+ </ul>
19
+ </nav>
20
+ </header>
21
+
22
+
23
+
@@ -0,0 +1,39 @@
1
+ <!-- https://carlosbecker.com/posts/jekyll-reading-time-without-plugins/ -->
2
+
3
+ {% if post.content.size > 0 %}
4
+ {% assign words = post.content | number_of_words %}
5
+ {% endif %}
6
+ {% if content.size > 0 %}
7
+ {% assign words = content | number_of_words %}
8
+ {% endif %}
9
+ {% if words < site.words_per_minute %}
10
+ <i class="fa fa-clock-o"></i> {% if site.data.configurable_lables.read_time_before and site.data.configurable_lables.read_time_after %}
11
+ {{ site.data.configurable_lables.read_time_before }} 1 {{ site.data.configurable_lables.read_time_after }}
12
+ {% elsif site.data.configurable_lables.read_time_before %}
13
+ {{ site.data.configurable_lables.read_time_before }} 1
14
+ {% elsif site.data.configurable_lables.read_time_after %}
15
+ 1 {{ site.data.configurable_lables.read_time_after }}
16
+ {% else %}
17
+ 1 min read
18
+ {% endif %}
19
+ {% elsif words < site.words_per_minute*2 %}
20
+ <i class="fa fa-clock-o"></i> {% if site.data.configurable_lables.read_time_before and site.data.configurable_lables.read_time_after %}
21
+ {{ site.data.configurable_lables.read_time_before }} 2 {{ site.data.configurable_lables.read_time_after }}
22
+ {% elsif site.data.configurable_lables.read_time_before %}
23
+ {{ site.data.configurable_lables.read_time_before }} 2
24
+ {% elsif site.data.configurable_lables.read_time_after %}
25
+ 2 {{ site.data.configurable_lables.read_time_after }}
26
+ {% else %}
27
+ 2 min read
28
+ {% endif %}
29
+ {% else %}
30
+ <i class="fa fa-clock-o"></i> {% if site.data.configurable_lables.read_time_before and site.data.configurable_lables.read_time_after %}
31
+ {{ site.data.configurable_lables.read_time_before }} {{ words | divided_by:site.words_per_minute }} {{ site.data.configurable_lables.read_time_after }}
32
+ {% elsif site.data.configurable_lables.read_time_before %}
33
+ {{ site.data.configurable_lables.read_time_before }} {{ words | divided_by:site.words_per_minute }}
34
+ {% elsif site.data.configurable_lables.read_time_after %}
35
+ {{ words | divided_by:site.words_per_minute }} {{ site.data.configurable_lables.read_time_after }}
36
+ {% else %}
37
+ {{ words | divided_by:site.words_per_minute }} min read
38
+ {% endif %}
39
+ {% endif %}
@@ -0,0 +1,182 @@
1
+ {% capture tocWorkspace %}
2
+ {% comment %}
3
+ Copyright (c) 2017 Vladimir "allejo" Jimenez
4
+
5
+ Permission is hereby granted, free of charge, to any person
6
+ obtaining a copy of this software and associated documentation
7
+ files (the "Software"), to deal in the Software without
8
+ restriction, including without limitation the rights to use,
9
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the
11
+ Software is furnished to do so, subject to the following
12
+ conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24
+ OTHER DEALINGS IN THE SOFTWARE.
25
+ {% endcomment %}
26
+ {% comment %}
27
+ Version 1.2.0
28
+ https://github.com/allejo/jekyll-toc
29
+
30
+ "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
31
+
32
+ Usage:
33
+ {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
34
+
35
+ Parameters:
36
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
37
+
38
+ Optional Parameters:
39
+ * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
40
+ * class (string) : '' - a CSS class assigned to the TOC
41
+ * id (string) : '' - an ID to assigned to the TOC
42
+ * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
43
+ * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
44
+ * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
45
+ * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
46
+ * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
47
+ * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
48
+ * anchor_class (string) : '' - add custom class(es) for each anchor element
49
+ * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
50
+
51
+ Output:
52
+ An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
53
+ generate the table of contents and will NOT output the markdown given to it
54
+ {% endcomment %}
55
+
56
+ {% capture newline %}
57
+ {% endcapture %}
58
+ {% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
59
+
60
+ {% capture deprecation_warnings %}{% endcapture %}
61
+
62
+ {% if include.baseurl %}
63
+ {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
64
+ {% endif %}
65
+
66
+ {% if include.skipNoIDs %}
67
+ {% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
68
+ {% endif %}
69
+
70
+ {% capture jekyll_toc %}{% endcapture %}
71
+ {% assign orderedList = include.ordered | default: false %}
72
+ {% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
73
+ {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
74
+ {% assign minHeader = include.h_min | default: 1 %}
75
+ {% assign maxHeader = include.h_max | default: 6 %}
76
+ {% assign nodes = include.html | strip | split: '<h' %}
77
+
78
+ {% assign firstHeader = true %}
79
+ {% assign currLevel = 0 %}
80
+ {% assign lastLevel = 0 %}
81
+
82
+ {% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
83
+
84
+ {% for node in nodes %}
85
+ {% if node == "" %}
86
+ {% continue %}
87
+ {% endif %}
88
+
89
+ {% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
90
+
91
+ {% if currLevel < minHeader or currLevel > maxHeader %}
92
+ {% continue %}
93
+ {% endif %}
94
+
95
+ {% assign _workspace = node | split: '</h' %}
96
+
97
+ {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
98
+ {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
99
+ {% assign htmlID = _idWorkspace[0] %}
100
+
101
+ {% assign _classWorkspace = _workspace[0] | split: 'class="' %}
102
+ {% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
103
+ {% assign htmlClass = _classWorkspace[0] %}
104
+
105
+ {% if htmlClass contains "no_toc" %}
106
+ {% continue %}
107
+ {% endif %}
108
+
109
+ {% if firstHeader %}
110
+ {% assign minHeader = currLevel %}
111
+ {% endif %}
112
+
113
+ {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
114
+ {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
115
+
116
+ {% if include.item_class and include.item_class != blank %}
117
+ {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
118
+ {% endif %}
119
+
120
+ {% if include.submenu_class and include.submenu_class != blank %}
121
+ {% assign subMenuLevel = currLevel | minus: 1 %}
122
+ {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
123
+ {% endif %}
124
+
125
+ {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
126
+
127
+ {% if htmlID %}
128
+ {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
129
+
130
+ {% if include.anchor_class %}
131
+ {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
132
+ {% endif %}
133
+
134
+ {% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
135
+ {% elsif skipNoIDs == true %}
136
+ {% continue %}
137
+ {% else %}
138
+ {% capture listItem %}{{ anchorBody }}{% endcapture %}
139
+ {% endif %}
140
+
141
+ {% if currLevel > lastLevel %}
142
+ {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
143
+ {% elsif currLevel < lastLevel %}
144
+ {% assign repeatCount = lastLevel | minus: currLevel %}
145
+
146
+ {% for i in (1..repeatCount) %}
147
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
148
+ {% endfor %}
149
+
150
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
151
+ {% else %}
152
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
153
+ {% endif %}
154
+
155
+ {% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
156
+
157
+ {% assign lastLevel = currLevel %}
158
+ {% assign firstHeader = false %}
159
+ {% endfor %}
160
+
161
+ {% assign repeatCount = minHeader | minus: 1 %}
162
+ {% assign repeatCount = lastLevel | minus: repeatCount %}
163
+ {% for i in (1..repeatCount) %}
164
+ {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
165
+ {% endfor %}
166
+
167
+ {% if jekyll_toc != '' %}
168
+ {% assign rootAttributes = '' %}
169
+ {% if include.class and include.class != blank %}
170
+ {% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
171
+ {% endif %}
172
+
173
+ {% if include.id and include.id != blank %}
174
+ {% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
175
+ {% endif %}
176
+
177
+ {% if rootAttributes %}
178
+ {% assign nodes = jekyll_toc | split: '>' %}
179
+ {% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
180
+ {% endif %}
181
+ {% endif %}
182
+ {% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}}
@@ -0,0 +1,82 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <main id="archive">
6
+ <section>
7
+ <h1>{% if site.data.configurable_lables.archive_title %}{{site.data.configurable_lables.archive_title}}{% else %}Archive{% endif %}</h1>
8
+
9
+ {% if site.posts.size > 0 %}
10
+ <!-- show all years -->
11
+ <div class="archive_all_years{% if site.layouts.archive.columns and site.layouts.archive.columns >= 1 and site.layouts.archive.columns <= 5 %}{{site.layouts.archive.columns}}{% else %}2{% endif %}">
12
+ <ul>
13
+ {% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %}
14
+ {% for year in postsByYear %}
15
+ <li>
16
+ <a href="#{{ year.name }}">
17
+ <span class="archive_linktitle">{{ year.name }}</span>
18
+ <span class="archive_yearcount">{{ year.items | size }}</span>
19
+ </a>
20
+ </li>
21
+ {% endfor %}
22
+ </ul>
23
+ </div>
24
+ {% else %}
25
+ <!-- Display an empty list when there are no posts -->
26
+ <div class="archive_all_years">
27
+ <ul>
28
+ <li>{% if site.data.configurable_lables.archive_found %}{{site.data.configurable_lables.archive_found}}{% else %}No archive years available.{% endif %}</li>
29
+ </ul>
30
+ </div>
31
+ {% endif %}
32
+
33
+
34
+
35
+
36
+ <!-- show posts for certain year -->
37
+ <div class="archive_results">
38
+ {% if site.data.configurable_lables.archive_found %}{{site.data.configurable_lables.archive_found}}{% else %}Found Posts per selected Year{% endif %}
39
+ <br/><br/><br/><br/>
40
+
41
+ {% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %}
42
+ {% for year in postsByYear %}
43
+ <div id="{{ year.name }}" class="archive_year" >
44
+ <h2>{{ year.name }}</h2>
45
+
46
+ {% for post in year.items %}
47
+ {% if post.id %}
48
+ {% assign title = post.title | markdownify | strip_html %}
49
+ {% else %}
50
+ {% assign title = post.title %}
51
+ {% endif %}
52
+
53
+ <div class="archive_findresults">
54
+
55
+ <span class="archive_date">
56
+
57
+ <a href="{{ post.url }}">
58
+ <i class="archive_day">{{ post.date | date: "%d" }}</i>
59
+ </a>
60
+ <a href="{{ post.url }}">
61
+ <span>{{ post.date | date: "%b/%Y" }}</span>
62
+ </a>
63
+
64
+ </span>
65
+
66
+ <span class="archive_summary">
67
+ <h3>
68
+ <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
69
+ </h3>
70
+ {{ post.content | markdownify | strip_html | truncatewords: 50 }}
71
+ </span>
72
+
73
+ </div>
74
+
75
+ {% endfor %}
76
+
77
+ </div>
78
+ {% endfor %}
79
+ </div>
80
+
81
+ </section>
82
+ </main>
@@ -0,0 +1,85 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <main id="categories">
6
+ <section>
7
+ <h1>{% if site.data.configurable_lables.categories_title %}{{site.data.configurable_lables.categories_title}}{% else %}Categories{% endif %}</h1>
8
+
9
+ <!-- Capture and sort categories by count -->
10
+ {% capture site_categories %}
11
+ {% for category in site.categories %}
12
+ {{ category[1] | size | plus: 1000 }}&#x1F;{{ category[0] }}
13
+ {% unless forloop.last %}&#x1E;{% endunless %}
14
+ {% endfor %}
15
+ {% endcapture %}
16
+ {% assign sortedCategories = site_categories | split: '&#x1E;' | sort | reverse %}
17
+
18
+ {% if sortedCategories.size > 0 %}
19
+ <!-- Show all categories sorted by count -->
20
+ <div class="categories_all{% if site.layouts.categories.columns and site.layouts.categories.columns >= 1 and site.layouts.categories.columns <= 5 %}{{site.layouts.categories.columns}}{% else %}3{% endif %}">
21
+ <ul>
22
+ {% for category in sortedCategories %}
23
+ {% assign categoryParts = category | split: '&#x1F;' %}
24
+ {% assign categoryName = categoryParts[1] %}
25
+ {% assign categoryCount = categoryParts[0] | minus: 1000 %}
26
+ <li>
27
+ <a href="#{{ categoryName }}">
28
+ <span class="category_linktitle">{{ categoryName }}</span>
29
+ <span class="category_count">{{ categoryCount }}</span>
30
+ </a>
31
+ </li>
32
+ {% endfor %}
33
+ </ul>
34
+ </div>
35
+ {% else %}
36
+ <!-- Display an empty list when sortedCategories is empty -->
37
+ <div class="categories_all">
38
+ <ul>
39
+ <li>{% if site.data.configurable_lables.categories_found %}{{site.data.configurable_lables.categories_found}}{% else %}No categories available.{% endif %}</li>
40
+ </ul>
41
+ </div>
42
+ {% endif %}
43
+
44
+
45
+
46
+
47
+ <!-- show posts for certain categorie -->
48
+ <div class="categories_results">
49
+ {% if site.data.configurable_lables.categories_found %}{{site.data.configurable_lables.categories_found}}{% else %}Found Posts per selected Categorie{% endif %}
50
+ <br/><br/><br/><br/>
51
+
52
+ {% for category in site.categories %}
53
+ <div id="{{ category[0] }}" class="category_posts">
54
+ <h2>{{category[0]}}</h2>
55
+
56
+ {% for post in category[1] %}
57
+ <div class="categories_findresult">
58
+ <span class="categories_date">
59
+
60
+ <a href="{{ post.url }}">
61
+ <i class="categories_day">{{ post.date | date: "%d" }}</i>
62
+ </a>
63
+ <a href="{{ post.url }}">
64
+ <span>{{ post.date | date: "%b/%Y" }}</span>
65
+ </a>
66
+
67
+ </span>
68
+
69
+ <span class="categories_summary">
70
+ <h3>
71
+ <a href="{{ post.url }}">{{ post.title }}</a>
72
+ </h3>
73
+ {{ post.content | markdownify | strip_html | truncatewords: 50 }}
74
+ </span>
75
+
76
+ </div>
77
+
78
+ {% endfor %}
79
+ </div>
80
+ {% endfor %}
81
+ </div>
82
+
83
+
84
+ </section>
85
+ </main>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ Horizon Flow Theme 0.0.1
4
+ Copyright 2023 Markus Schiller - https://papierkorp.github.io/
5
+ Free for personal and commercial use under the MIT license
6
+ https://github.com/papierkorp/jekyll-theme-horizon-flow/blob/main/LICENSE.txt
7
+ -->
8
+ <html>
9
+ <head lang="{{ site.locale | default: "en" }}">
10
+ {% seo %}
11
+ {% feed_meta %}
12
+ <title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
13
+ <meta name="description" content="{{ page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 | escape }}">
14
+ <link rel="canonical" href="{{ page.url | replace:'index.html', '' | absolute_url }}">
15
+ </head>
16
+
17
+ <body>
18
+ <link rel="stylesheet" href="{{ '/assets/style.css' | relative_url }}">
19
+ {% include header.html %}
20
+
21
+ {{ content }}
22
+
23
+ {% include footer.html %}
24
+ </body>
25
+
26
+ </html>