jekyll-theme-kagami 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +49 -16
  3. data/_includes/font-fix.html +12 -0
  4. data/_includes/gitalk.html +18 -0
  5. data/_includes/head.html +4 -3
  6. data/_includes/header.html +1 -9
  7. data/_includes/mermaid.html +14 -0
  8. data/_includes/site-nav.html +8 -0
  9. data/_layouts/default.html +5 -0
  10. data/_layouts/home.html +1 -1
  11. data/_layouts/page.html +2 -1
  12. data/_layouts/post-list.html +23 -16
  13. data/_layouts/post.html +8 -14
  14. data/_sass/kagami/_layout.scss +47 -5
  15. data/_sass/kagami/_typography.scss +33 -2
  16. data/_sass/kagami/_utility.scss +4 -4
  17. data/assets/font/LICENSE.md +26 -0
  18. data/assets/font/fontello.eot +0 -0
  19. data/assets/font/fontello.svg +86 -0
  20. data/assets/font/fontello.ttf +0 -0
  21. data/assets/font/fontello.woff +0 -0
  22. data/assets/font/fontello.woff2 +0 -0
  23. data/assets/styles/core.scss +4 -0
  24. data/assets/styles/fontello.css +95 -0
  25. data/assets/styles/highlighting/README.md +23 -0
  26. data/assets/styles/highlighting/UNLICENSE.txt +24 -0
  27. data/assets/styles/highlighting/autumn.css +58 -0
  28. data/assets/styles/highlighting/borland.css +46 -0
  29. data/assets/styles/highlighting/bw.css +34 -0
  30. data/assets/styles/highlighting/colorful.css +61 -0
  31. data/assets/styles/highlighting/default.css +61 -0
  32. data/assets/styles/highlighting/emacs.css +61 -0
  33. data/assets/styles/highlighting/friendly.css +61 -0
  34. data/assets/styles/highlighting/fruity.css +70 -0
  35. data/assets/styles/highlighting/github.css +61 -0
  36. data/assets/styles/highlighting/manni.css +61 -0
  37. data/assets/styles/highlighting/monokai.css +65 -0
  38. data/assets/styles/highlighting/murphy.css +61 -0
  39. data/assets/styles/highlighting/native.css +70 -0
  40. data/assets/styles/highlighting/pastie.css +60 -0
  41. data/assets/styles/highlighting/perldoc.css +58 -0
  42. data/assets/styles/highlighting/tango.css +69 -0
  43. data/assets/styles/highlighting/trac.css +59 -0
  44. data/assets/styles/highlighting/vim.css +70 -0
  45. data/assets/styles/highlighting/vs.css +33 -0
  46. data/assets/styles/highlighting/zenburn.css +136 -0
  47. metadata +46 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9519b985559d00cd17536b8a5765c66340785f2c
4
- data.tar.gz: 0ab019dafd70d6d683790d4312a1bd4554195041
2
+ SHA256:
3
+ metadata.gz: 19895b30a3f5482123635a2a024a0bc5a643d95dc76c0076f2d0a302436c62e5
4
+ data.tar.gz: 8f26714b5bb4ae0c9ebb56df2541eb9d4d3a673cc4a2ed7838c19e2a36446b68
5
5
  SHA512:
6
- metadata.gz: 01cb2200b9862b0b286016b97ce6915d25385ba512b87c973f3eff34e80c2821e07931d9daa190a23f1f9be46bdd42b95710bd5add3e0ebe1aaab6f3842d499a
7
- data.tar.gz: 1d7e832a297a9a1c1e97218823689ccf50c09c62a14dffd9a59c67c72189d617c331d6f0f7716f1dcb137ba3b784f872e984b651108db99faaf4a91ee585035b
6
+ metadata.gz: c1e2358a12f50e7fb89cd8fe8fb161eeda4363af06a5d7b565d8ac9ce9c2c18e6df581b98e8ca8fb950563ca0e5e18799c7cd4b8e02462bd13103abec6511cfb
7
+ data.tar.gz: d80d68bd36f4c1fd7b0daaf91e43c3060715c568240cdbd19286893317cc90608fbc63691484834e2a18070ad4008599697eb2bbdeaab7ff855f899647461d31
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Build Status](https://travis-ci.org/kamikat/jekyll-theme-kagami.svg?branch=master)](https://travis-ci.org/kamikat/jekyll-theme-kagami)
4
4
  [![Gem Version](https://badge.fury.io/rb/jekyll-theme-kagami.svg)](https://badge.fury.io/rb/jekyll-theme-kagami)
5
5
 
6
- A peaceful theme for Jekyll and GitHub Pages.
6
+ Simple and clean theme for Jekyll and GitHub Pages.
7
7
 
8
8
  ![Screenshot](https://s2.banana.moe/docs/kagami-preview@2x.png)
9
9
 
@@ -29,6 +29,19 @@ Or install it yourself as:
29
29
 
30
30
  $ gem install jekyll-theme-kagami
31
31
 
32
+ ### GitHub Pages
33
+
34
+ Jekyll build is integrated with GitHub Pages with limited function. This section is intended for those who
35
+ want to use the theme with GitHub Pages hosted sites.
36
+
37
+ 1. Download latest gem file from https://rubygems.org/gems/jekyll-theme-kagami
38
+ 2. Run `gem unpack [path-to-downloaded-gem-file] --target=.` on jekyll site project folder
39
+ 3. Delete the line `theme: ...` in `_config.yml`
40
+
41
+ Zip archive downloaded from release page may not work because GitHub does not pack necessary files from submodules.
42
+
43
+ Instruction 1 and 2 can also work when you decide to upgrade your installation.
44
+
32
45
  ## Usage
33
46
 
34
47
  ### Social account links
@@ -53,11 +66,9 @@ Add the following lines to choose a color scheme:
53
66
  color_scheme: github
54
67
  ```
55
68
 
56
- ### Enabling comments (via Disqus)
57
-
58
- Optionally, if you have a Disqus account, you can tell Jekyll to use it to show a comments section below each post.
69
+ ### Comment service (Disqus or Gitalk)
59
70
 
60
- To enable it, add the following lines to your Jekyll site:
71
+ Add the following lines to your Jekyll site to enable Disqus comment service:
61
72
 
62
73
  ```yaml
63
74
  disqus_shortname: my_disqus_shortname
@@ -65,11 +76,23 @@ disqus_shortname: my_disqus_shortname
65
76
 
66
77
  You can find out more about Disqus' shortnames [here](https://help.disqus.com/customer/portal/articles/466208).
67
78
 
68
- Comments are enabled by default and will only appear in production, i.e., `JEKYLL_ENV=production`
79
+ For [Gitalk](https://github.com/gitalk/gitalk#options):
80
+
81
+ ```yaml
82
+ gitalk:
83
+ id: <clientID>
84
+ secret: <clientSecret>
85
+ repo: <repo>
86
+ owner: <owner> # (optional) if not set, value of `github_username` will be used
87
+ admin: <admin> # (optional) if not set, value of `github_username` will be used
88
+ proxy: ... # (optional)
89
+ ```
90
+
91
+ By default, comment service will only be enabled in production mode, set an environment `JEKYLL_ENV=production` for local test.
69
92
 
70
- If you don't want to display comments for a particular post you can disable them by adding `comments: false` to that post's YAML Front Matter.
93
+ If you don't want to comments for particular posts you can disable that by adding `comments: false` to the post's YAML Front Matter.
71
94
 
72
- ### Enabling Google Analytics
95
+ ### Google Analytics
73
96
 
74
97
  To enable Google Anaytics, add the following lines to your Jekyll site:
75
98
 
@@ -79,16 +102,15 @@ google_analytics: UA-NNNNNNNN-N
79
102
 
80
103
  Google Analytics will only appear in production, i.e., `JEKYLL_ENV=production`
81
104
 
82
- ### Navigation
105
+ ### Navigation Bar
83
106
 
84
- Pages and posts can be listed as navigation item in header of pages. Add following frontmatter will make it
107
+ Pages and posts can be registered as navigation item with following frontmatter:
85
108
 
86
109
  ```yaml
87
- navlevel: header
88
- navtitle: Awesome Title # optional, specifies the text to display on navigation item
110
+ navbar_title: Awesome Title # specifies the text to display as navigation item
89
111
  ```
90
112
 
91
- Navigation items are ordered in alphabetical order by default in Jekyll. While you can adjust the order manually using
113
+ Navigation items are ordered in alphabetical order by default in Jekyll. Adjust the order manually with a `position` value:
92
114
 
93
115
  ```yaml
94
116
  position: 999
@@ -96,7 +118,7 @@ position: 999
96
118
 
97
119
  ### Tags and category
98
120
 
99
- Layout file `post-list` supports filters by tag or category. Create pages with following frontmatter will generate a filtered post list.
121
+ Layout file `post-list` supports filtering by tag or category. Create pages with following frontmatter will generate a filtered post list.
100
122
 
101
123
  ```yaml
102
124
  title: Title of Tag Page
@@ -117,7 +139,7 @@ Results from multiple filters are combined (logical 'or') into the result.
117
139
 
118
140
  A more flexible filter strategy is supported by supplying liquid expression to `by_expression` parameter in which post object can be referenced by the name `post`.
119
141
 
120
- ### Enabling MathJax
142
+ ### MathJax
121
143
 
122
144
  You can use MathJax with Kramdown's [built-in support](https://kramdown.gettalong.org/syntax.html#math-blocks).
123
145
 
@@ -128,6 +150,17 @@ or post's front matter stuff:
128
150
  mathjax: true
129
151
  ```
130
152
 
153
+ ### Mermaid
154
+
155
+ To enable [mermaid](https://mermaid-js.github.io/mermaid/), add following line to
156
+ the site configuration or post's front matter stuff:
157
+
158
+ ```yaml
159
+ mermaid: true
160
+ ```
161
+
162
+ Code blocks with `mermaid` language tag should be transformed into diagrams.
163
+
131
164
  ### Use `.side-note` and `.retina2x`
132
165
 
133
166
  Taking advantages of [Block/span IAL](https://kramdown.gettalong.org/syntax.html#block-ials),
@@ -153,7 +186,7 @@ Bug reports and pull requests are welcome on GitHub at <https://github.com/kamik
153
186
 
154
187
  To set up your environment to develop this theme, run `bundle install`.
155
188
 
156
- Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
189
+ Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve -s example` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
157
190
 
158
191
  When your theme is released, only the files in `_layouts`, `_includes`, and `_sass` tracked with Git will be released.
159
192
 
@@ -0,0 +1,12 @@
1
+ <script>
2
+ (function(elements) {
3
+ var elements = Array.prototype.slice.call(document.getElementsByClassName('baseline-fix'));
4
+ for (var i = 0; i != elements.length; i++) {
5
+ var el = elements[i];
6
+ el.innerHTML = el.innerHTML.replace(/[\u2000-\u206e⸀-\u2e7e⺀-\u2efe⼀-\u2fde⿰-\u2ffe\u3000-〾\u3040-ゞ゠-ヾ\u3100-\u312e\u3130-ㆎ㆐-㆞ㆠ-\u31be㇀-\u31eeㇰ-ㇾ㈀-㋾㌀-㏾㐀-\u4dbe一-\u9ffe\ua960-\ua97e가-\ud7ae\ud7b0-\ud7fe豈-\ufafe︰-﹎\uff00-○]|[\ud840-\ud868\ud86a-\ud86c][\udc00-\udfff]|\ud82c[\udc00-\udcfe]|\ud869[\udc00-\udede\udf00-\udfff]|\ud86d[\udc00-\udf3e\udf40-\udfff]|\ud86e[\udc00-\udc1e]|\ud87e[\udc00-\ude1e]/g, function (ch) {
7
+ return '<span class="baseline-fix-block">' + ch + '<' + '/span>';
8
+ });
9
+ el.classList.remove('baseline-fix');
10
+ }
11
+ })(Array.prototype.slice.call(document.getElementsByClassName('baseline-fix')));
12
+ </script>
@@ -0,0 +1,18 @@
1
+ <div id="gitalk-container"></div>
2
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
3
+ <script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
4
+ <script>
5
+ var gitalk = new Gitalk({
6
+ id: '{{ page.title }}',
7
+ clientID: '{{ site.gitalk.id }}',
8
+ clientSecret: '{{ site.gitalk.secret }}',
9
+ repo: '{{ site.gitalk.repo | default: site.gitalk.repository }}',
10
+ owner: '{{ site.gitalk.owner | default: site.github_username }}',
11
+ admin: ['{{ site.gitalk.admin | default: site.github_username }}'],
12
+ body: location.href,
13
+ proxy: '{{ site.gitalk.proxy | default: "https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token" }}',
14
+ language: '{{ site.lang | default: "en" }}',
15
+ distractionFreeMode: false
16
+ })
17
+ gitalk.render('gitalk-container')
18
+ </script>
data/_includes/head.html CHANGED
@@ -6,9 +6,10 @@
6
6
  <title>{% if page.title %}{{ page.title | append: " - " | append: site.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
7
7
  <meta name="description" content="{{ page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 | escape }}">
8
8
 
9
- <link rel="stylesheet" href="{{ "/assets/styles/core.css" | relative_url }}">
10
- <link rel="stylesheet" href="{{ "/assets/styles/fontello.css" | relative_url }}">
11
- <link rel="stylesheet" href="{{ page.color_scheme | default: site.color_scheme | default: "default" | prepend: "/assets/styles/highlighting/" | append: ".css" | relative_url }}">
9
+ {% assign v = site.time | date: "%Y%m%d%H%M%S" %}
10
+ <link rel="stylesheet" href="{{ "/assets/styles/core.css?v=" | append: v | relative_url }}">
11
+ <link rel="stylesheet" href="{{ "/assets/styles/fontello.css?v=" | append: v | relative_url }}">
12
+ <link rel="stylesheet" href="{{ page.color_scheme | default: site.color_scheme | default: "default" | prepend: "/assets/styles/highlighting/" | append: ".css?v=" | append: v | relative_url }}">
12
13
 
13
14
  <link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
14
15
  <link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/feed.xml" | relative_url }}">
@@ -1,14 +1,6 @@
1
1
  <header class="post-header">
2
2
  <a class="site-title" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
3
- <h1 class="post-title">{{ page.title }}</h1>
4
- <nav class="site-nav">
5
- <div class="page-list">
6
- {% assign sorted_pages = site.pages | where_exp: "page", "page.navlevel == 'header'" | sort: "position" %}
7
- {% for my_page in sorted_pages %}
8
- <a class="page-link" href="{{ my_page.url | relative_url }}" >{{ my_page.navtitle | default: my_page.title | escape }}</a>
9
- {% endfor %}
10
- </div>
11
- </nav>
3
+ <h1 class="post-title baseline-fix" itemprop="name headline">{{ page.title | escape | replace: "​", "<wbr>" }}</h1>
12
4
  </header>
13
5
 
14
6
  {% if page.cover_url %}
@@ -0,0 +1,14 @@
1
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
2
+ <script type="text/javascript">
3
+ (function () {
4
+ mermaid.init({ startOnLoad: true }, "pre code.language-mermaid", function () {
5
+ const codeBlock = document.querySelector('code.language-mermaid');
6
+ codeBlock.style.backgroundColor = 'initial';
7
+
8
+ const preBlock = codeBlock.parentNode;
9
+ preBlock.style.border = 'none';
10
+ preBlock.style.textAlign = 'center';
11
+ preBlock.style.backgroundColor = 'initial';
12
+ });
13
+ })();
14
+ </script>
@@ -0,0 +1,8 @@
1
+ <nav class="site-nav">
2
+ {% assign sorted_pages = site.pages | sort: "position" %}
3
+ {% for _page in sorted_pages %}
4
+ {% if _page.navbar_title or _page.navtitle or _page.navlevel == "header" or _page.navbar %}
5
+ <a class="page-link" href="{{ _page.url | relative_url }}" >{{ _page.navbar_title | default: _page.navtitle | default: _page.title | escape }}</a>
6
+ {% endif %}
7
+ {% endfor %}
8
+ </nav>
@@ -9,8 +9,13 @@ layout: blank
9
9
  {{ content }}
10
10
  </div>
11
11
  {% include retina-image.html %}
12
+ {% if site.mermaid or page.mermaid %}
13
+ {% include mermaid.html %}
14
+ {% endif %}
12
15
  </main>
13
16
 
14
17
  {% include footer.html %}
15
18
 
19
+ {% include font-fix.html %}
20
+
16
21
  </body>
data/_layouts/home.html CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- layout: blank
2
+ layout: post-list
3
3
  ---
4
4
 
5
5
  {{ content }}
data/_layouts/page.html CHANGED
@@ -2,8 +2,9 @@
2
2
  layout: default
3
3
  ---
4
4
 
5
- {% include header.html %}
5
+ {% include site-nav.html %}
6
6
 
7
7
  <article class="page" lang="{{ page.lang | default: site.lang | default: "en" }}" itemscope itemtype="http://schema.org/BlogPosting">
8
+ {% include header.html %}
8
9
  {{ content }}
9
10
  </article>
@@ -2,6 +2,8 @@
2
2
  layout: default
3
3
  ---
4
4
 
5
+ {% include site-nav.html %}
6
+
5
7
  {% include header.html %}
6
8
 
7
9
  <ul class="post-list">
@@ -28,24 +30,29 @@ layout: default
28
30
  {% endif %}
29
31
  {% for post in posts %}
30
32
  <li class="post-list-item" data-tags="{{ post.tags | join: " " }}">
31
- <a class="post-item-link" href="{{ post.url | relative_url }}" data-date="{{ post.date | date: "%m-%d" }}">
32
- {{ post.title | escape }}
33
- </a>
34
- {% if post.description %}
35
- <p class="post-description">{{ post.description }}</p>
33
+ {% if post.cover_url %}
34
+ <div class="post-item-cover" style="background-image: url('{{ post.cover_url }}')"></div>
36
35
  {% endif %}
37
- <div class="post-item-meta">
38
- {{ post.date | date: "%B %-d, %Y" }}
39
- /
40
- {% capture lang %}{{ post.lang | default: site.lang | default: "en" }}{% endcapture %}
41
- {% if lang == "en" %}
42
- {% capture words %}{{ post.content | strip_html | number_of_words }}{% endcapture %}
43
- {% else %}
44
- {% capture words %}{{ post.content | strip_html | size }}{% endcapture %}
36
+ <div class="post-item-label">
37
+ <a class="post-item-link baseline-fix" href="{{ post.url | relative_url }}" data-date="{{ post.date | date: "%m-%d" }}">
38
+ {{ post.title | escape }}
39
+ </a>
40
+ {% if post.description %}
41
+ <p class="post-description">{{ post.description }}</p>
45
42
  {% endif %}
46
- {% unless words contains "-" %}
47
- {{ words | plus: 250 | divided_by: 250 | append: " minute read" }}
48
- {% endunless %}
43
+ <div class="post-item-meta">
44
+ {{ post.date | date: "%B %-d, %Y" }}
45
+ /
46
+ {% capture lang %}{{ post.lang | default: site.lang | default: "en" }}{% endcapture %}
47
+ {% if lang == "en" %}
48
+ {% capture words %}{{ post.content | strip_html | number_of_words }}{% endcapture %}
49
+ {% else %}
50
+ {% capture words %}{{ post.content | strip_html | size }}{% endcapture %}
51
+ {% endif %}
52
+ {% unless words contains "-" %}
53
+ {{ words | plus: 250 | divided_by: 250 | append: " minute read" }}
54
+ {% endunless %}
55
+ </div>
49
56
  </div>
50
57
  </li>
51
58
  {% endfor %}
data/_layouts/post.html CHANGED
@@ -1,21 +1,10 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
+
4
5
  <article class="post" lang="{{ page.lang | default: site.lang | default: "en" }}" itemscope itemtype="http://schema.org/BlogPosting" >
5
6
 
6
- <header class="post-header">
7
- <a class="site-title" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
8
- <h1 class="post-title" itemprop="name headline">{{ page.title | escape | replace: "​", "<wbr>" }}</h1>
9
- </header>
10
-
11
- {% if page.cover_url %}
12
- <div class="post-cover" aria-label="Cover">
13
- <div class="post-cover-wrapper">
14
- <img src="{{ page.cover_url }}" alt="" />
15
- </div>
16
- <div class="cover-meta">{{ page.cover_meta | markdownify }}</div>
17
- </div>
18
- {% endif %}
7
+ {% include header.html %}
19
8
 
20
9
  <div class="post-content" itemprop="articleBody">
21
10
  {{ content }}
@@ -36,7 +25,12 @@ layout: default
36
25
  {% endif %}
37
26
  </footer>
38
27
 
39
- {% if jekyll.environment == 'production' and site.disqus_shortname and page.comments != false %}
28
+ {% if jekyll.environment == 'production' and page.comments != false %}
29
+ {% if site.disqus_shortname %}
40
30
  {% include disqus.html %}
31
+ {% elsif site.gitalk %}
32
+ {% include gitalk.html %}
33
+ {% endif %}
41
34
  {% endif %}
35
+
42
36
  </article>
@@ -41,7 +41,16 @@ article {
41
41
  margin-bottom: 0;
42
42
  }
43
43
 
44
- .highlight {
44
+ .task-list-item {
45
+ list-style-type: none;
46
+ }
47
+
48
+ .task-list-item-checkbox {
49
+ margin: 0 .5em .3em -1.6em;
50
+ vertical-align: middle;
51
+ }
52
+
53
+ pre {
45
54
  position: relative;
46
55
  overflow: hidden;
47
56
 
@@ -50,11 +59,11 @@ article {
50
59
  overflow-x: auto;
51
60
  }
52
61
 
53
- @include exdent-horizontally($hspacing);
54
- @include exdent-vertically(0.5 * $vspacing);
62
+ @include exdent-horizontally($hspacing, "code");
63
+ @include exdent-vertically(0.5 * $vspacing, "code");
55
64
 
56
65
  @media screen and (min-width: $content-width) {
57
- @include exdent-horizontally(2 * $hspacing);
66
+ @include exdent-horizontally(2 * $hspacing, "code");
58
67
  }
59
68
  }
60
69
 
@@ -119,8 +128,25 @@ article {
119
128
  margin-bottom: $post-footer-spacing;
120
129
  }
121
130
 
131
+ .site-nav {
132
+ display: flex;
133
+ flex-flow: row wrap;
134
+ align-items: top;
135
+ justify-content: center;
136
+ margin-left: -$post-margin-width;
137
+ margin-right: -$post-margin-width;
138
+ }
139
+
140
+ @media screen and (min-width: $content-width) {
141
+ .site-nav {
142
+ height: 0;
143
+ justify-content: flex-end;
144
+ }
145
+ }
146
+
122
147
  .page-link {
123
- margin-right: 0.25em;
148
+ display: block;
149
+ padding: 0.5em;
124
150
  }
125
151
 
126
152
  .site-footer {
@@ -149,10 +175,26 @@ article {
149
175
  }
150
176
 
151
177
  .post-list-item {
178
+ position: relative;
152
179
  margin-top: $spacing-unit;
153
180
  margin-bottom: $spacing-unit;
154
181
  }
155
182
 
183
+ .post-item-cover {
184
+ width: 100vw;
185
+ position: absolute;
186
+ top: -.5 * $spacing-unit;
187
+ bottom: -.5 * $spacing-unit;
188
+ margin-left: 50%;
189
+ transform: translateX(-50%);
190
+ background-size: cover;
191
+ background-position: center;
192
+ }
193
+
194
+ .post-item-label {
195
+ position: relative;
196
+ }
197
+
156
198
  .post-description {
157
199
  margin-top: 10px;
158
200
  margin-bottom: 10px;