steve-for-jekyll 1.0.3 → 1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30db961533c03e5fc57450d2c60ed9bfb0eb0fb2db2458fe18d1feb6bfd6c7d9
4
- data.tar.gz: 8a5ca288b685b1615a4a81533d3133529053230375d423df62c5c39465b3f4ea
3
+ metadata.gz: 4c837ff93e1e9855f712da1f580559ef04530333c4c63e9a3bb37042c6d8cee4
4
+ data.tar.gz: 66c3123e4f2e17afb3b89527c5aa7660e36e7061f957b1d362277634b944f7c8
5
5
  SHA512:
6
- metadata.gz: 8eb77604f98315bccef6cc7a5ed5ebcceebfdcb247d95ff252dabc317a6cbcd11b79b3715de976ac728962835360a34eef889a57d0706a42219eec80152bf2b5
7
- data.tar.gz: 9e72a82ba9e616b20310c69748bf61b173caeed4fa856fb87a2bae4c39ee8f4bef6f46c27744a472242676ded7205352561bea9fe8117d0b557a37217b4e46b2
6
+ metadata.gz: d0e4cb6d03cd8f10500dd0b154e5887d122bfd191c738f9831e9b2f74c0d0cd90729fe68bc623c15d7ca5f3be559c2f099e26e395cd7d05d80929e5788e5c3fd
7
+ data.tar.gz: 8d74ce76512ce06fbe249c2b09d793ae1617de1068c35d8fe4290ac6e8c831c0a6e498d39ab20d15b997b27e6f5f2999e9eaf15b4ed37d3a9cec0fe0943fcff7
data/README.md CHANGED
@@ -177,9 +177,51 @@ Steve uses the following Jekyll plugins to create sitemaps, RSS feeds, archives
177
177
  - [jekyll-sitemap](https://github.com/jekyll/jekyll-sitemap) — generates the XML sitemap.
178
178
  - [jekyll-paginate](https://github.com/jekyll/jekyll-paginate) — paginates the home post list.
179
179
  - [jekyll-archives](https://github.com/jekyll/jekyll-archives) — generates the archives by date, tag and category.
180
+ - [jekyll-loading-lazy](https://github.com/gildesmarais/jekyll-loading-lazy) — adds `loading="lazy"` to all images and frames on your pages and posts.
180
181
 
181
182
  While Steve sets initial configurations for these plugins, you may want to change them in your `_config.yml`. Please refer to these plugins documentations for further reading about how to change their config options.
182
183
 
184
+ ### Comments
185
+
186
+ Steve supports [Staticman](https://staticman.net)-powered comments, and provides initial settings from our own `staticman.yml` config file. You can create your own settings at any time, but keep in mind that Steve looks for the following fields when submitting comments:
187
+
188
+ - `name`
189
+ - `email`
190
+ - `website`
191
+ - `message`
192
+
193
+ [Follow these instructions](https://staticman.net/docs/getting-started.html) to set up your Staticman instance.
194
+
195
+ You can also customize your comments' section and submit form adding the `site.comments` object in your `_config.yml`:
196
+
197
+ ```yaml
198
+ comments:
199
+ title: Comments
200
+ form_title: New Comment
201
+ date_format: "%b %e, %Y @ %l:%M %P"
202
+ staticman_endpoint: # Get yours on <https://staticman.net>
203
+ notice: |+ # Accepts Markdown
204
+ Please be nice in the comments.
205
+
206
+ Comments are moderated, so it can take a while for your's to show up.
207
+
208
+ Also, you can use [Markdown](https://daringfireball.net/projects/markdown).
209
+ fields:
210
+ name:
211
+ label: Name
212
+ placeholder: "John Appleseed"
213
+ email:
214
+ label: Email address
215
+ placeholder: "your@email.net"
216
+ website:
217
+ label: Website
218
+ placeholder: "https://john.blog/"
219
+ message:
220
+ label: Message
221
+ placeholder: Your comment message
222
+ submit: Submit Comment
223
+ ```
224
+
183
225
  ## Contributing
184
226
 
185
227
  Bug reports and pull requests are welcome on GitHub at <https://github.com/esporo/steve>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
data/_config.yml CHANGED
@@ -1,70 +1,96 @@
1
- # Site info
2
- title: Steve for Jekyll
3
- tagline: Charming and fun blog theme.
4
- description: Steve is a charming and fun blog theme for Jekyll websites.
5
-
6
- email: steve-support@esporo.net
7
-
8
- lang: en
9
-
10
- url: ""
11
- baseurl: "/steve/"
12
-
13
- # Theme settings
14
- steve:
15
- intensedebate_account: # get one at <https://intensedebate.com/install>
16
- archives: # Prefixes used with archive titles
17
- date: Posts from
18
- tag: More about…
19
- category: Posts filed in
20
- date_formats: # Uses <http://strftime.net>
21
- post: "%b %e, %Y"
22
- archives:
23
- day: "%b %e, %Y"
24
- month: "%b, %Y"
25
- year: "%Y"
26
- page_404: |+
27
- The page you're looking for could not be found.
28
-
29
- Maybe the search can help.
30
- pagination:
31
- next_page: "&laquo; Next"
32
- prev_page: "Previous &raquo;"
33
- prev_post: "Previous:"
34
- next_post: "Next:"
35
- post:
36
- byline: "By"
37
- tags: More about…
38
- search:
39
- label: Search this blog
40
- placeholder: What you're looking for?
41
- submit: Go!
42
-
43
-
44
- # Build settings
45
- markdown: kramdown
46
- permalink: "/:year/:month/:day/:title/"
47
-
48
- theme: steve-for-jekyll
49
-
50
- paginate: 6
51
- paginate_path: "/page/:num/"
52
-
53
- plugins:
54
- - jekyll-feed
55
- - jekyll-seo-tag
56
- - jekyll-sitemap
57
- - jekyll-paginate
58
- - jekyll-archives
59
-
60
- # Plugin: jekyll-archives
61
- jekyll-archives:
62
- enabled: all
63
- layout: archive
64
- slug_mode: default
65
- permalinks:
66
- day: "/:year/:month/:day/"
67
- month: "/:year/:month/"
68
- year: "/:year/"
69
- category: "/:name/"
70
- tag: "/tag/:name/"
1
+ # Site info
2
+ title: Steve for Jekyll
3
+ tagline: Charming and fun blog theme.
4
+ description: Steve is a charming and fun blog theme for Jekyll websites.
5
+
6
+ email: steve-support@esporo.net
7
+
8
+ lang: en
9
+
10
+ url: ""
11
+ baseurl: "/steve/"
12
+
13
+ # Theme settings
14
+ steve:
15
+ archives: # Prefixes used with archive titles
16
+ date: Posts from
17
+ tag: More about…
18
+ category: Posts filed in
19
+ date_formats: # Uses <http://strftime.net>
20
+ post: "%b %e, %Y"
21
+ archives:
22
+ day: "%b %e, %Y"
23
+ month: "%b, %Y"
24
+ year: "%Y"
25
+ page_404: |+
26
+ The page you're looking for could not be found.
27
+
28
+ Maybe the search can help.
29
+ pagination:
30
+ next_page: "&laquo; Next"
31
+ prev_page: "Previous &raquo;"
32
+ prev_post: "Previous:"
33
+ next_post: "Next:"
34
+ post:
35
+ byline: "By"
36
+ tags: More about…
37
+ search:
38
+ label: Search this blog
39
+ placeholder: What you're looking for?
40
+ submit: Go!
41
+
42
+ # Comments Settings
43
+ comments:
44
+ title: Comments
45
+ form_title: New Comment
46
+ date_format: "%b %e, %Y @ %l:%M %P"
47
+ staticman_endpoint: # Get yours on <https://staticman.net>
48
+ notice: |+
49
+ Please be nice in the comments.
50
+
51
+ Comments are moderated, so it can take a while for your's to show up.
52
+
53
+ Also, you can use [Markdown](https://daringfireball.net/projects/markdown).
54
+ fields:
55
+ name:
56
+ label: Name
57
+ placeholder: "John Appleseed"
58
+ email:
59
+ label: Email address
60
+ placeholder: "your@email.net"
61
+ website:
62
+ label: Website
63
+ placeholder: "https://john.blog/"
64
+ message:
65
+ label: Message
66
+ placeholder: Your comment message
67
+ submit: Submit Comment
68
+
69
+ # Build settings
70
+ markdown: kramdown
71
+ permalink: "/:year/:month/:day/:title/"
72
+
73
+ theme: steve-for-jekyll
74
+
75
+ paginate: 6
76
+ paginate_path: "/page/:num/"
77
+
78
+ plugins:
79
+ - jekyll-feed
80
+ - jekyll-seo-tag
81
+ - jekyll-sitemap
82
+ - jekyll-paginate
83
+ - jekyll-archives
84
+ - jekyll-loading-lazy
85
+
86
+ # Plugin: jekyll-archives
87
+ jekyll-archives:
88
+ enabled: all
89
+ layout: archive
90
+ slug_mode: default
91
+ permalinks:
92
+ day: "/:year/:month/:day/"
93
+ month: "/:year/:month/"
94
+ year: "/:year/"
95
+ category: "/:name/"
96
+ tag: "/tag/:name/"
@@ -1,43 +1,57 @@
1
- <article class="content post">
2
- <header class="content-header">
3
- {% if post.title != "" %}
4
- <h2 class="content-title">
5
- <a href="{{ post.url | relative_url }}" rel="bookmark">{{ post.title }}</a>
6
- </h2>
7
- {% endif %}
8
-
9
- <div class="content-meta">
10
- <a class="content-date" href="{{ post.url | relative_url }}" rel="bookmark">
11
- <time datetime="{{ post.date | date_to_xmlschema }}">
12
- {{ post.date | date: site.steve.date_formats.post }}
13
- </time>
14
- </a>
15
-
16
- {% if post.author %}
17
- {% assign author = site.data.authors[post.author] %}
18
-
19
- {% if author.url %}
20
- <a class="content-author" href="{{ author.url }}" rel="author">
21
- {{ author.name }}
22
- </a>
23
- {% else %}
24
- <a class="content-author" href="{{ post.author | prepend: 'https://twitter.com/' }}" rel="author">
25
- {{ post.author }}
26
- </a>
27
- {% endif %}
28
- {% endif %}
29
- </div>
30
- </header>
31
-
32
- {% if post.image %}
33
- <figure class="content-cover">
34
- <img src="{{ post.image.url | default: post.image }}" alt="{{ post.image.alt | default: '' }}" />
35
- </figure>
36
- {% endif %}
37
-
38
- {% unless include.full_post == false %}
39
- <div class="content-body">
40
- {{ post.content }}
41
- </div>
42
- {% endunless %}
43
- </article>
1
+ <article class="content post">
2
+ <header class="content-header">
3
+ {% if post.category %}
4
+ <div class="content-meta">
5
+ {%- assign category_slug = post.category | slugify -%}
6
+ {%- assign category_url = site.jekyll-archives.permalinks.category -%}
7
+
8
+ <a
9
+ href="{{ category_url | replace: ':name', category_slug | relative_url }}"
10
+ rel="tag"
11
+ >
12
+ {{- post.category -}}
13
+ </a>
14
+ </div>
15
+ {% endif %}
16
+
17
+ {% if post.title != "" %}
18
+ <h2 class="content-title">
19
+ <a href="{{ post.url | relative_url }}" rel="bookmark">{{ post.title }}</a>
20
+ </h2>
21
+ {% endif %}
22
+
23
+ <div class="content-meta">
24
+ <a class="content-date" href="{{ post.url | relative_url }}" rel="bookmark">
25
+ <time datetime="{{ post.date | date_to_xmlschema }}">
26
+ {{ post.date | date: site.steve.date_formats.post }}
27
+ </time>
28
+ </a>
29
+
30
+ {% if post.author %}
31
+ {% assign author = site.data.authors[post.author] %}
32
+
33
+ {% if author.url %}
34
+ <a class="content-author" href="{{ author.url }}" rel="author">
35
+ {{ author.name }}
36
+ </a>
37
+ {% else %}
38
+ <a class="content-author" href="{{ post.author | prepend: 'https://twitter.com/' }}" rel="author">
39
+ {{ post.author }}
40
+ </a>
41
+ {% endif %}
42
+ {% endif %}
43
+ </div>
44
+ </header>
45
+
46
+ {% if post.image %}
47
+ <figure class="content-cover">
48
+ <img src="{{ post.image.url | default: post.image }}" alt="{{ post.image.alt | default: '' }}" />
49
+ </figure>
50
+ {% endif %}
51
+
52
+ {% unless include.full_post == false %}
53
+ <div class="content-body">
54
+ {{ post.content }}
55
+ </div>
56
+ {% endunless %}
57
+ </article>
@@ -0,0 +1,69 @@
1
+ <form action="{{ site.comments.staticman_endpoint }}" method="post">
2
+ <h3 class="form-title">{{ site.comments.form_title }}</h3>
3
+
4
+ <div class="comments-notice">
5
+ {{ site.comments.notice | markdownify }}
6
+ </div>
7
+
8
+ <div class="comment-message-area">
9
+ <label for="comment_message" class="visually-hidden">
10
+ {{ site.comments.fields.message.label }}
11
+ </label>
12
+
13
+ <textarea
14
+ id="comment_message"
15
+ class="message-area"
16
+ name="fields[message]"
17
+ placeholder="{{ site.comments.fields.message.placeholder }}"
18
+ required
19
+ ></textarea>
20
+ </div>
21
+
22
+ <div class="comment-fields">
23
+ <label for="comment_name" class="visually-hidden">
24
+ {{ site.comments.fields.name.label }}
25
+ </label>
26
+
27
+ <input
28
+ type="text"
29
+ id="comment_name"
30
+ class="comment-field"
31
+ name="fields[name]"
32
+ placeholder="{{ site.comments.fields.name.placeholder }}"
33
+ required
34
+ />
35
+
36
+ <label for="comment_email" class="visually-hidden">
37
+ {{ site.comments.fields.email.label }}
38
+ </label>
39
+ <input
40
+ type="email"
41
+ id="comment_email"
42
+ class="comment-field"
43
+ name="fields[email]"
44
+ placeholder="{{ site.comments.fields.email.placeholder }}"
45
+ required
46
+ />
47
+
48
+ <label for="comment_website" class="visually-hidden">
49
+ {{ site.comments.fields.website.label }}
50
+ </label>
51
+ <input
52
+ type="url"
53
+ id="comment_website"
54
+ class="comment-field"
55
+ name="fields[website]"
56
+ placeholder="{{ site.comments.fields.website.placeholder }}"
57
+ />
58
+ </div>
59
+
60
+ <div class="comment-actions">
61
+ <button class="form-submit" type="submit">
62
+ {{ site.comments.fields.submit }}
63
+ </button>
64
+ </div>
65
+
66
+ <input type="hidden" name="options[redirect]" value="{{ page.url |
67
+ absolute_url }}#comments" />
68
+ <input type="hidden" name="options[slug]" value="{{ page.slug }}" />
69
+ </form>
@@ -0,0 +1,47 @@
1
+ {% if site.data.comments[page.slug] or page.comments != false %}
2
+ <section id="comments" class="content">
3
+ <h2 class="comments-title">
4
+ {{ site.comments.title }}
5
+ </h2>
6
+
7
+ {% if site.data.comments[page.slug] %}
8
+ <ol class="comments-list">
9
+
10
+ {% assign comments = site.data.comments[page.slug] | sort: date %}
11
+
12
+ {% for comment_object in site.data.comments[page.slug] %}
13
+
14
+ {% assign comment = comment_object | last %}
15
+
16
+ <li class="comment-item">
17
+ <section class="comment">
18
+ <header class="comment-meta">
19
+ <img class="author-avatar" src="//www.gravatar.com/avatar/{{ comment.email }}?d=monsterid&s=64" alt="" />
20
+ <h5 class="author">
21
+ {% if comment.website %}
22
+ <a href="{{ comment.website }}" rel="author">
23
+ {{ comment.name }}
24
+ </a>
25
+ {% else %}
26
+ {{ comment.name }}
27
+ {% endif %}
28
+ </h5>
29
+
30
+ <time class="comment-date">
31
+ {{ comment.date | date: site.comments.date_format }}
32
+ </time>
33
+ </header>
34
+
35
+ <div class="comment-body">
36
+ {{ comment.message | markdownify }}
37
+ </div>
38
+ </section>
39
+ </li>
40
+ {% endfor %}
41
+
42
+ </ol>
43
+ {% endif %}
44
+
45
+ {% include post/comment-form.html %}
46
+ </section>
47
+ {% endif %}
data/_layouts/post.html CHANGED
@@ -4,10 +4,22 @@ layout: blog
4
4
 
5
5
  <article class="content post">
6
6
  <header class="content-header">
7
+ {% if page.category %}
8
+ <div class="content-meta">
9
+ {%- assign category_slug = page.category | slugify -%}
10
+ {%- assign category_url = site.jekyll-archives.permalinks.category -%}
11
+
12
+ <a
13
+ href="{{ category_url | replace: ':name', category_slug | relative_url }}"
14
+ rel="tag"
15
+ >
16
+ {{- page.category -}}
17
+ </a>
18
+ </div>
19
+ {% endif %}
20
+
7
21
  {% if page.title != "" %}
8
- <h1 class="content-title">
9
- {{ page.title }}
10
- </h1>
22
+ <h1 class="content-title">{{ page.title }}</h1>
11
23
  {% endif %}
12
24
 
13
25
  <div class="content-meta">
@@ -25,7 +37,11 @@ layout: blog
25
37
  {{ author.name }}
26
38
  </a>
27
39
  {% else %}
28
- <a class="content-author" href="{{ page.author | prepend: 'https://twitter.com/' }}" rel="author">
40
+ <a
41
+ class="content-author"
42
+ href="{{ page.author | prepend: 'https://twitter.com/' }}"
43
+ rel="author"
44
+ >
29
45
  {{ page.author }}
30
46
  </a>
31
47
  {% endif %}
@@ -34,9 +50,12 @@ layout: blog
34
50
  </header>
35
51
 
36
52
  {% if page.image %}
37
- <fig[ure class="content-cover">
38
- <img src="{{ page.image.url | default: page.image }}" alt="{{ page.image.alt | default: '' }}" />
39
- </fi]gure>
53
+ <figure class="content-cover">
54
+ <img
55
+ src="{{ page.image.url | default: page.image }}"
56
+ alt="{{ page.image.alt | default: '' }}"
57
+ />
58
+ </figure>
40
59
  {% endif %}
41
60
 
42
61
  <div class="content-body">
@@ -49,44 +68,48 @@ layout: blog
49
68
 
50
69
  <ul class="content-tags">
51
70
  {% for tag in page.tags %}
52
- <li>
53
- {%- assign tag_slug = tag | slugify -%}
71
+ <li>
72
+ {%- assign tag_slug = tag | slugify -%}
73
+ {%- assign tag_url = site.jekyll-archives.permalinks.tag -%}
54
74
 
55
- <a href="{{ site.jekyll-archives.permalinks.tag | replace: ':name', tag_slug | relative_url }}" rel="tag">
56
- {{ tag }}
57
- </a>
58
- </li>
75
+ <a
76
+ href="{{ tag_url | replace: ':name', tag_slug | relative_url }}"
77
+ rel="tag"
78
+ >
79
+ {{- tag -}}
80
+ </a>
81
+ </li>
59
82
  {% endfor %}
60
83
  </ul>
61
84
  </footer>
62
85
  {% endif %}
63
86
  </article>
64
87
 
65
- {% if site.steve.intensedebate_account and page.comments != false %}
66
- <section id="comments" class="content comments">
67
- <script>
68
- var idcomments_acct = "{{ site.steve.intensedebate_account }}";
69
- var idcomments_post_id = "{{ post.date | date: "%s" }}";
70
- var idcomments_post_url = "{{ post.url | absolute_url }}";
71
- </script>
72
- <span id="IDCommentsPostTitle" style="display:none"></span>
73
- <script type='text/javascript' src='https://www.intensedebate.com/js/genericCommentWrapperV2.js'></script>
74
- </section>
75
- {% endif %}
88
+ {% include post/comments.html %}
76
89
 
77
90
  {% if page.previous or page.next %}
78
91
  <nav class="content-navigation">
79
92
  {% if page.previous %}
80
- <a class="nav-link prev-link" href="{{ page.previous.url | relative_url }}" rel="prev">
81
- {{ site.steve.pagination.prev_post }} <strong>{{ page.previous.title }}</strong>
93
+ <a
94
+ class="nav-link prev-link"
95
+ href="{{ page.previous.url | relative_url }}"
96
+ rel="prev"
97
+ >
98
+ {{ site.steve.pagination.prev_post }}
99
+
100
+ <strong>{{ page.previous.title }}</strong>
82
101
  </a>
83
102
  {% endif %}
84
-
85
103
  {% if page.next %}
86
- <a class="nav-link next-link" href="{{ page.next.url | relative_url }}" rel="next">
87
- {{ site.steve.pagination.next_post }} <strong>{{ page.next.title }}</strong>
104
+ <a
105
+ class="nav-link next-link"
106
+ href="{{ page.next.url | relative_url }}"
107
+ rel="next"
108
+ >
109
+ {{ site.steve.pagination.next_post }}
110
+
111
+ <strong>{{ page.next.title }}</strong>
88
112
  </a>
89
113
  {% endif %}
90
114
  </nav>
91
115
  {% endif %}
92
-
@@ -1,222 +1,269 @@
1
- /*
2
- Resets
3
- */
4
-
5
- body,
6
- h1, h2, h3, h4, h5, h6,
7
- p, blockquote, pre, hr,
8
- dl, dd, ol, ul, figure {
9
- margin: 0;
10
- padding: 0;
11
- }
12
-
13
- /*
14
- Basic styling
15
- */
16
-
17
- html {
18
- font-size: 16px;
19
- }
20
-
21
- body {
22
- background-color: var(--color-body);
23
- font-family: var(--font);
24
- line-height: 1.5;
25
- }
26
-
27
- /*
28
- Text Elements
29
- */
30
-
31
- .content-body {
32
- p, pre, blockquote,
33
- dl, ul, ol,
34
- figure, iframe, table,
35
- .highlight {
36
- margin-bottom: var(--gap);
37
- }
38
- }
39
-
40
- // Links
41
- a {
42
- color: var(--color-link);
43
- text-decoration: none;
44
- transition: color 250ms ease;
45
-
46
- &:hover,
47
- &:focus {
48
- color: var(--color-link-hover);
49
- text-decoration: underline;
50
- }
51
- }
52
-
53
- // Lists
54
- ul, ol {
55
- margin-left: var(--gap);
56
- }
57
-
58
- dl {
59
- dt + dd {
60
- margin-bottom: calc(var(--gap) / 2);
61
- }
62
-
63
- dt + dd + dt {
64
- margin-top: calc(var(--gap) / 2);
65
- }
66
- }
67
-
68
- // Headings
69
- h1, h2, h3, h4, h5, h6 {
70
- line-height: 1.2;
71
- font-family: var(--font-headings);
72
- }
73
-
74
- h1 {
75
- font-size: 2rem;
76
- }
77
-
78
- h2 {
79
- font-size: 1.5rem;
80
- }
81
-
82
- h3 {
83
- font-size: 1.25rem;
84
- }
85
-
86
- h4 {
87
- font-size: 1rem;
88
- }
89
-
90
- h5 {
91
- font-size: 0.875rem;
92
- }
93
-
94
- h6 {
95
- font-size: 0.75rem;
96
- }
97
-
98
- // Code
99
- pre {
100
- max-width: 100%;
101
- overflow-x: auto;
102
- }
103
-
104
- // Media
105
- img, iframe,
106
- video, audio {
107
- max-width: 100%;
108
- border-radius: 3px;
109
- box-shadow: 0 2px 5px var(--color-details);
110
- }
111
-
112
- // Tables
113
- table {
114
- border: 1px solid var(--color-details-lighter);
115
- border-radius: 3px;
116
- border-collapse: collapse;
117
- color: var(--color-details-darker);
118
- width: 100%;
119
-
120
- th, td {
121
- border-bottom: 1px solid var(--color-details-lighter);
122
- padding: calc(var(--gap) / 4);
123
- text-align: left;
124
- }
125
-
126
- th {
127
- background: var(--color-details-lighter);
128
- }
129
- }
130
-
131
- // Quotes
132
-
133
- blockquote {
134
- border-left: 4px solid var(--color-details-lighter);
135
- padding-left: calc(var(--gap) / 2);
136
- padding-top: calc(var(--gap) / 4);
137
- padding-bottom: calc(var(--gap) / 4);
138
- font-style: italic;
139
- color: var(--color-details-darker);
140
-
141
- > :last-child {
142
- margin-bottom: 0;
143
- }
144
- }
145
-
146
- // Horizontal rule
147
- hr {
148
- width: 250px;
149
- height: 3px;
150
- margin: calc(var(--gap) * 2) auto;
151
- background-color: var(--color-details-lighter);
152
- border: none;
153
- border-radius: 3px;
154
- }
155
-
156
- // Forms
157
- input[type="text"],
158
- input[type="email"],
159
- input[type="password"],
160
- input[type="search"],
161
- input[type="tel"],
162
- input[type="number"],
163
- input[type="color"],
164
- input[type="button"],
165
- input[type="reset"],
166
- input[type="submit"],
167
- textarea,
168
- button {
169
- -webkit-appearance: none;
170
- -moz-appearance: none;
171
- border: none;
172
- border-radius: 0;
173
- box-shadow: none;
174
- background: var(--color-bg);
175
- padding: 5px;
176
- margin: 0;
177
- font: inherit;
178
- }
179
-
180
- input[type="text"],
181
- input[type="email"],
182
- input[type="password"],
183
- input[type="search"],
184
- input[type="tel"],
185
- input[type="number"],
186
- input[type="color"],
187
- textarea {
188
- border-bottom: 3px dashed var(--color-details-lighter);
189
- transition: border-bottom-color 250ms ease;
190
-
191
- &:hover,
192
- &:focus {
193
- outline: none;
194
- border-bottom-color: var(--color-link);
195
- }
196
- }
197
-
198
- input[type="button"],
199
- input[type="reset"],
200
- input[type="submit"],
201
- button {
202
- box-shadow: inset 0 0 0 var(--color-details-lighter);
203
- border-bottom: 3px solid var(--color-details-lighter);
204
- color: var(--color-link);
205
- transition-property: color, box-shadow, border-bottom-color;
206
- transition-duration: 250ms;
207
- transition-timing-function: ease;
208
- padding-left: 10px;
209
- padding-right: 10px;
210
-
211
- &:hover,
212
- &:focus {
213
- cursor: pointer;
214
- box-shadow: inset 0 -2.5em 0 var(--color-link);
215
- border-bottom-color: var(--color-link-hover);
216
- color: var(--color-details-lighter);
217
- }
218
-
219
- &:active {
220
- box-shadow: inset 0 -2.5em 0 var(--color-link-hover);
221
- }
222
- }
1
+ /*
2
+ Resets
3
+ */
4
+
5
+ body,
6
+ h1,
7
+ h2,
8
+ h3,
9
+ h4,
10
+ h5,
11
+ h6,
12
+ p,
13
+ blockquote,
14
+ pre,
15
+ hr,
16
+ dl,
17
+ dd,
18
+ ol,
19
+ ul,
20
+ figure {
21
+ margin: 0;
22
+ padding: 0;
23
+ }
24
+
25
+ /*
26
+ Basic styling
27
+ */
28
+
29
+ html {
30
+ font-size: 16px;
31
+ }
32
+
33
+ body {
34
+ background-color: var(--color-body);
35
+ font-family: var(--font);
36
+ line-height: 1.5;
37
+ }
38
+
39
+ /*
40
+ Accessibility helpers
41
+ */
42
+ .visually-hidden {
43
+ position: absolute !important;
44
+ height: 1px;
45
+ width: 1px;
46
+ overflow: hidden;
47
+ clip: rect(1px 1px 1px 1px);
48
+ clip: rect(1px, 1px, 1px, 1px);
49
+ white-space: nowrap;
50
+ }
51
+
52
+ /*
53
+ Text Elements
54
+ */
55
+
56
+ .content-body {
57
+ p,
58
+ pre,
59
+ blockquote,
60
+ dl,
61
+ ul,
62
+ ol,
63
+ figure,
64
+ iframe,
65
+ table,
66
+ .highlight {
67
+ margin-bottom: var(--gap);
68
+ }
69
+ }
70
+
71
+ // Links
72
+ a {
73
+ color: var(--color-link);
74
+ text-decoration: none;
75
+ transition: color 250ms ease;
76
+
77
+ &:hover,
78
+ &:focus {
79
+ color: var(--color-link-hover);
80
+ text-decoration: underline;
81
+ }
82
+ }
83
+
84
+ // Lists
85
+ ul,
86
+ ol {
87
+ margin-left: var(--gap);
88
+
89
+ ul,
90
+ ol {
91
+ margin-bottom: 0;
92
+ }
93
+ }
94
+
95
+ dl {
96
+ dt + dd {
97
+ margin-bottom: calc(var(--gap) / 2);
98
+ }
99
+
100
+ dt + dd + dt {
101
+ margin-top: calc(var(--gap) / 2);
102
+ }
103
+ }
104
+
105
+ // Headings
106
+ h1,
107
+ h2,
108
+ h3,
109
+ h4,
110
+ h5,
111
+ h6 {
112
+ line-height: 1.2;
113
+ font-family: var(--font-headings);
114
+ }
115
+
116
+ h1 {
117
+ font-size: 2rem;
118
+ }
119
+
120
+ h2 {
121
+ font-size: 1.5rem;
122
+ }
123
+
124
+ h3 {
125
+ font-size: 1.25rem;
126
+ }
127
+
128
+ h4 {
129
+ font-size: 1rem;
130
+ }
131
+
132
+ h5 {
133
+ font-size: 0.875rem;
134
+ }
135
+
136
+ h6 {
137
+ font-size: 0.75rem;
138
+ }
139
+
140
+ // Code
141
+ pre {
142
+ max-width: 100%;
143
+ overflow-x: auto;
144
+ }
145
+
146
+ // Media
147
+ img,
148
+ iframe,
149
+ video,
150
+ audio {
151
+ max-width: 100%;
152
+ border-radius: 3px;
153
+ box-shadow: 0 2px 5px var(--color-details);
154
+ }
155
+
156
+ // Tables
157
+ table {
158
+ border: 1px solid var(--color-details-lighter);
159
+ border-radius: 3px;
160
+ border-collapse: collapse;
161
+ color: var(--color-details-darker);
162
+ width: 100%;
163
+
164
+ th,
165
+ td {
166
+ border-bottom: 1px solid var(--color-details-lighter);
167
+ padding: calc(var(--gap) / 4);
168
+ text-align: left;
169
+ }
170
+
171
+ th {
172
+ background: var(--color-details-lighter);
173
+ }
174
+ }
175
+
176
+ // Quotes
177
+
178
+ blockquote {
179
+ border-left: 4px solid var(--color-details-lighter);
180
+ padding-left: calc(var(--gap) / 2);
181
+ padding-top: calc(var(--gap) / 4);
182
+ padding-bottom: calc(var(--gap) / 4);
183
+ font-style: italic;
184
+ color: var(--color-details-darker);
185
+
186
+ > :last-child {
187
+ margin-bottom: 0;
188
+ }
189
+ }
190
+
191
+ // Horizontal rule
192
+ hr {
193
+ width: 250px;
194
+ height: 3px;
195
+ margin: calc(var(--gap) * 2) auto;
196
+ background-color: var(--color-details-lighter);
197
+ border: none;
198
+ border-radius: 3px;
199
+ }
200
+
201
+ // Forms
202
+ input[type="text"],
203
+ input[type="email"],
204
+ input[type="password"],
205
+ input[type="search"],
206
+ input[type="tel"],
207
+ input[type="number"],
208
+ input[type="color"],
209
+ input[type="url"],
210
+ input[type="button"],
211
+ input[type="reset"],
212
+ input[type="submit"],
213
+ textarea,
214
+ button {
215
+ -webkit-appearance: none;
216
+ -moz-appearance: none;
217
+ border: none;
218
+ border-radius: 0;
219
+ box-shadow: none;
220
+ background: var(--color-bg);
221
+ padding: 5px;
222
+ margin: 0;
223
+ font: inherit;
224
+ }
225
+
226
+ input[type="text"],
227
+ input[type="email"],
228
+ input[type="password"],
229
+ input[type="search"],
230
+ input[type="tel"],
231
+ input[type="number"],
232
+ input[type="color"],
233
+ input[type="url"],
234
+ textarea {
235
+ border-bottom: 3px dashed var(--color-details-lighter);
236
+ transition: border-bottom-color 250ms ease;
237
+
238
+ &:hover,
239
+ &:focus {
240
+ outline: none;
241
+ border-bottom-color: var(--color-link);
242
+ }
243
+ }
244
+
245
+ input[type="button"],
246
+ input[type="reset"],
247
+ input[type="submit"],
248
+ button {
249
+ box-shadow: inset 0 0 0 var(--color-details-lighter);
250
+ border-bottom: 3px solid var(--color-details-lighter);
251
+ color: var(--color-link);
252
+ transition-property: color, box-shadow, border-bottom-color;
253
+ transition-duration: 250ms;
254
+ transition-timing-function: ease;
255
+ padding-left: 10px;
256
+ padding-right: 10px;
257
+
258
+ &:hover,
259
+ &:focus {
260
+ cursor: pointer;
261
+ box-shadow: inset 0 -2.5em 0 var(--color-link);
262
+ border-bottom-color: var(--color-link-hover);
263
+ color: var(--color-details-lighter);
264
+ }
265
+
266
+ &:active {
267
+ box-shadow: inset 0 -2.5em 0 var(--color-link-hover);
268
+ }
269
+ }
@@ -352,6 +352,81 @@ label[for="search_terms"] {
352
352
  }
353
353
  }
354
354
 
355
+ // Comments
356
+
357
+ .comments-title {
358
+ margin-bottom: var(--gap);
359
+ }
360
+
361
+ .comments-notice {
362
+ margin-top: calc(var(--gap) / 2);
363
+ margin-bottom: calc(var(--gap) / 2);
364
+ color: var(--color-details-darker);
365
+ }
366
+
367
+ .comments-list {
368
+ list-style: none;
369
+ margin-left: 0;
370
+ margin-bottom: var(--gap);
371
+
372
+ .comment-item {
373
+ margin-bottom: var(--gap);
374
+ padding-bottom: var(--gap);
375
+ border-bottom: 3px dotted var(--color-details-lighter);
376
+ }
377
+ }
378
+
379
+ .comment {
380
+ font-size: 95%;
381
+
382
+ .comment-meta {
383
+ margin-bottom: 1rem;
384
+ }
385
+
386
+ .author-avatar {
387
+ width: 2.5rem;
388
+ border-radius: 5px;
389
+ box-shadow: 0 0 2px var(--color-details);
390
+ float: left;
391
+ margin-right: 1rem;
392
+ }
393
+
394
+ .comment-body > *:not(:last-child) {
395
+ margin-bottom: 0.5rem;
396
+ }
397
+ }
398
+
399
+ .comment-message-area {
400
+ margin-bottom: calc(var(--gap) / 2);
401
+ }
402
+
403
+ .message-area {
404
+ width: 100%;
405
+ resize: vertical;
406
+ }
407
+
408
+ .comment-fields {
409
+ display: grid;
410
+ grid-template-columns: 1fr 1fr 1fr;
411
+ gap: calc(var(--gap) / 2);
412
+ margin-bottom: calc(var(--gap) / 2);
413
+
414
+ @media screen and (max-width: 800px) {
415
+ grid-template-columns: 1fr;
416
+ flex-flow: column nowrap;
417
+ }
418
+
419
+ input {
420
+ min-width: 0;
421
+ width: auto;
422
+ }
423
+ }
424
+
425
+ .comment-actions {
426
+ display: flex;
427
+ justify-content: flex-end;
428
+ }
429
+
355
430
  /*
356
431
  Site Footer
357
432
  */
data/staticman.yml ADDED
@@ -0,0 +1,30 @@
1
+ comments:
2
+ branch: main
3
+ commitMessage: "Adds comment via Staticman"
4
+ path: "_data/comments/{options.slug}"
5
+ filename: "comment-{@timestamp}"
6
+ format: yaml
7
+ moderation: true
8
+ allowedFields:
9
+ - name
10
+ - email
11
+ - website
12
+ - message
13
+ generatedFields:
14
+ date:
15
+ type: date
16
+ options:
17
+ format: timestamp-seconds
18
+ requiredFields:
19
+ - name
20
+ - email
21
+ - message
22
+ transforms:
23
+ email: md5
24
+ akismet:
25
+ enabled: true
26
+ author: name
27
+ authorEmail: email
28
+ authorUrl: website
29
+ content: message
30
+ type: comment
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steve-for-jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: '1.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arthur Freitas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-10 00:00:00.000000000 Z
11
+ date: 2021-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.15.1
47
+ version: '0.15'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.15.1
54
+ version: '0.15'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jekyll-seo-tag
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '2.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: jekyll-loading-lazy
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.1'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: bundler
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,6 +156,8 @@ files:
142
156
  - _includes/head.html
143
157
  - _includes/header.html
144
158
  - _includes/header/menu.html
159
+ - _includes/post/comment-form.html
160
+ - _includes/post/comments.html
145
161
  - _includes/search-form.html
146
162
  - _layouts/archive.html
147
163
  - _layouts/blog.html
@@ -155,6 +171,7 @@ files:
155
171
  - _sass/steve/_syntax.scss
156
172
  - assets/css/screen.scss
157
173
  - assets/js/responsive-videos.js
174
+ - staticman.yml
158
175
  homepage: https://github.com/esporo/steve
159
176
  licenses:
160
177
  - MIT
@@ -174,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
191
  - !ruby/object:Gem::Version
175
192
  version: '0'
176
193
  requirements: []
177
- rubygems_version: 3.2.15
194
+ rubygems_version: 3.2.21
178
195
  signing_key:
179
196
  specification_version: 4
180
197
  summary: A charming and fun Jekyll theme for blogs.