jekyll-theme-jsblog 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
File without changes
@@ -0,0 +1,20 @@
1
+ <header class="site-header">
2
+
3
+ <div class="wrapper">
4
+
5
+ <a class="site-title" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
6
+
7
+ <nav class="site-nav">
8
+ {% for link in site.data.navigation.main %}
9
+ {% if link.url contains "http" %}
10
+ {% assign url = link.url %}
11
+ {% else %}
12
+ {% assign url = link.url | relative_url %}
13
+ {% endif %}
14
+ <a class="page-link" href="{{ url }}">{{ link.title }}</a>
15
+ {% endfor %}
16
+ </nav>
17
+
18
+ </div>
19
+
20
+ </header>
@@ -0,0 +1,11 @@
1
+ {% if paginator.total_pages > 1 %}
2
+ <div class="pagination">
3
+ {% if paginator.next_page %}
4
+ <a class="previous" href="{{ paginator.next_page_path | relative_url }}">&laquo; Older</a>
5
+ {% endif %}
6
+
7
+ {% if paginator.previous_page %}
8
+ <a class="next" href="{{ paginator.previous_page_path | relative_url }}">Newer &raquo;</a>
9
+ {% endif %}
10
+ </div>
11
+ {% endif %}
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ page.lang | default: site.lang | default: "en" }}">
3
+
4
+ {% include head.html %}
5
+
6
+ <body>
7
+
8
+ {% include header.html %}
9
+
10
+ <main class="page-content" aria-label="Content">
11
+ <div class="wrapper">
12
+ {{ content }}
13
+ </div>
14
+ </main>
15
+
16
+ {% include footer.html %}
17
+
18
+ </body>
19
+
20
+ </html>
data/_layouts/feed.xml ADDED
@@ -0,0 +1,97 @@
1
+ ---
2
+ layout: null
3
+ ---
4
+ <?xml version="1.0" encoding="utf-8"?>
5
+ <feed xmlns="http://www.w3.org/2005/Atom"{% if site.lang %} xml:lang="{{ site.lang }}"{% endif %}>
6
+ <generator uri="http://jekyllrb.com" version="{{ jekyll.version }}">Jekyll</generator>
7
+ {% assign feed_path = "/feed.xml" %}
8
+ {% if site.feed and site.feed.path %}
9
+ {% assign feed_path = site.feed.path %}
10
+ {% endif %}
11
+ <link href="{{ feed_path | absolute_url }}" rel="self" type="application/atom+xml" />
12
+ <link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>
13
+ <updated>{{ site.time | date_to_xmlschema }}</updated>
14
+ <id>{{ '/' | absolute_url | xml_escape }}/</id>
15
+
16
+ {% if site.title %}
17
+ <title type="html">{{ site.title | smartify | xml_escape }}</title>
18
+ {% elsif site.name %}
19
+ <title type="html">{{ site.name | smartify | xml_escape }}</title>
20
+ {% endif %}
21
+
22
+ {% if site.description %}
23
+ <subtitle>{{ site.description | xml_escape }}</subtitle>
24
+ {% endif %}
25
+
26
+ {% if site.author %}
27
+ <author>
28
+ <name>{{ site.author.name | default: site.author | xml_escape }}</name>
29
+ {% if site.author.email %}
30
+ <email>{{ site.author.email | xml_escape }}</email>
31
+ {% endif %}
32
+ {% if site.author.uri %}
33
+ <uri>{{ site.author.uri | xml_escape }}</uri>
34
+ {% endif %}
35
+ </author>
36
+ {% endif %}
37
+
38
+ {% for post in site.posts limit: 20 %}
39
+ {% unless post.draft %}
40
+ <entry{% if post.lang %} xml:lang="{{ post.lang }}"{% endif %}>
41
+ {% if post.external-url %}
42
+ <title type="html">{{ post.title | append: " &rarr;" | smartify | strip_html | normalize_whitespace | xml_escape }}</title>
43
+ {% else %}
44
+ <title type="html">{{ post.title | smartify | strip_html | normalize_whitespace | xml_escape }}</title>
45
+ {% endif %}
46
+ {% if post.external-url %}
47
+ <link href="{{ post.external-url }}" rel="alternate" type="text/html" />
48
+ <link href="{{ post.url | absolute_url }}" rel="related" type="text/html" title="{{ post.title | xml_escape }}" />
49
+ {% else %}
50
+ <link href="{{ post.url | absolute_url }}" rel="alternate" type="text/html" title="{{ post.title | xml_escape }}" />
51
+ {% endif %}
52
+ <published>{{ post.date | date_to_xmlschema }}</published>
53
+ <updated>{{ post.last_modified_at | default: post.date | date_to_xmlschema }}</updated>
54
+ <id>{{ post.id | absolute_url | xml_escape }}</id>
55
+ <content type="html" xml:base="{{ post.url | absolute_url | xml_escape }}">{{ post.content | strip | xml_escape }}</content>
56
+
57
+ {% assign post_author = post.author | default: post.authors[0] | default: site.author %}
58
+ {% assign post_author = site.data.authors[post_author] | default: post_author %}
59
+ {% assign post_author_email = post_author.email | default: nil %}
60
+ {% assign post_author_uri = post_author.uri | default: nil %}
61
+ {% assign post_author_name = post_author.name | default: post_author %}
62
+
63
+ {% if post_author %}
64
+ <author>
65
+ <name>{{ post_author_name | xml_escape }}</name>
66
+ {% if post_author_email %}
67
+ <email>{{ post_author_email | xml_escape }}</email>
68
+ {% endif %}
69
+ {% if post_author_uri %}
70
+ <uri>{{ post_author_uri | xml_escape }}</uri>
71
+ {% endif %}
72
+ </author>
73
+ {% endif %}
74
+
75
+ {% for category in post.categories %}
76
+ <category term="{{ category | xml_escape }}" />
77
+ {% endfor %}
78
+
79
+ {% for tag in post.tags %}
80
+ <category term="{{ tag | xml_escape }}" />
81
+ {% endfor %}
82
+
83
+ {% if post.excerpt and post.excerpt != empty %}
84
+ <summary type="html">{{ post.excerpt | strip_html | normalize_whitespace | xml_escape }}</summary>
85
+ {% endif %}
86
+
87
+ {% assign post_image = post.twitter_card.image | default: post.facebook.image %}
88
+ {% if post_image %}
89
+ {% unless post_image contains "://" %}
90
+ {% assign post_image = post_image | absolute_url | xml_escape %}
91
+ {% endunless %}
92
+ <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="{{ post_image }}" />
93
+ {% endif %}
94
+ </entry>
95
+ {% endunless %}
96
+ {% endfor %}
97
+ </feed>
@@ -0,0 +1,48 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="home">
6
+
7
+ {{ content }}
8
+
9
+ {% capture site_lang %}{{ site.lang | default: "en" }}{% endcapture %}
10
+
11
+ <ul class="post-list">
12
+ {% for post in paginator.posts %}
13
+ {% capture post_lang %}{{ post.lang | default: site_lang }}{% endcapture %}
14
+ {% capture lang %}{% if post_lang != site_lang %}{{ post_lang }}{% endif %}{% endcapture %}
15
+
16
+ <li{% if lang != empty %} lang="{{ lang }}"{% endif %}>
17
+ <header class="post-header">
18
+ <h1 class="post-title">
19
+ {% if post.external-url %}
20
+ <a class="post-link" href="{{ post.external-url }}">{{ post.title | escape }} &rarr;</a>
21
+ {% else %}
22
+ <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
23
+ {% endif %}
24
+ </h1>
25
+
26
+ <p class="post-meta">
27
+ {{ post.date | date: "%b %-d, %Y" }}
28
+ {% if post.external-url %}
29
+ • <a href="{{ post.url | relative_url }}">Permalink</a>
30
+ {% endif %}
31
+ </p>
32
+ </header>
33
+
34
+ <div class="post-content">
35
+ {{ post.excerpt }}
36
+ </div>
37
+ {% if post.content contains site.excerpt_separator %}
38
+ <p class="post-continue">
39
+ <a href="{{ post.url | relative_url }}">Read on &rarr;</a>
40
+ </p>
41
+ {% endif %}
42
+ </li>
43
+ {% endfor %}
44
+ </ul>
45
+
46
+ {% include pagination.html %}
47
+
48
+ </div>
@@ -0,0 +1,20 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <article class="post">
5
+
6
+ <header class="post-header">
7
+ <h1 class="post-title">{{ page.title | escape }}</h1>
8
+ </header>
9
+
10
+ <div class="post-content">
11
+ {{ content }}
12
+ </div>
13
+
14
+ {% if site.comments == true and page.comments != false %}
15
+ <div class="post-comments">
16
+ {% include custom_comments_provider.html %}
17
+ </div>
18
+ {% endif %}
19
+
20
+ </article>
@@ -0,0 +1,27 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
5
+
6
+ <header class="post-header">
7
+ {% if page.external-url %}
8
+ <h1 class="post-title" itemprop="name headline"><a href="{{ page.external-url }}">{{ page.title | escape }} &rarr;</a></h1>
9
+ {% else %}
10
+ <h1 class="post-title" itemprop="name headline">{{ page.title | escape }}</h1>
11
+ {% endif %}
12
+ <p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time>{% if page.author %} • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>{% endif %}</p>
13
+ </header>
14
+
15
+ <hr>
16
+
17
+ <div class="post-content" itemprop="articleBody">
18
+ {{ content }}
19
+ </div>
20
+
21
+ {% if site.comments == true and page.comments != false %}
22
+ <div class="post-comments" itemprop="comment">
23
+ {% include custom_comments_provider.html %}
24
+ </div>
25
+ {% endif %}
26
+
27
+ </article>
data/_sass/jsblog.scss ADDED
@@ -0,0 +1,101 @@
1
+ // Font Families
2
+ $base-font-family: -apple-system-font, BlinkMacSystemFont, "San Francisco", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
3
+
4
+ $monospace-font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace !default;
5
+
6
+ // Site Wide Variables
7
+ $site-header-background-color: #161616 !default;
8
+ $site-header-text-color: #ffffff !default;
9
+ $site-header-text-color-visited: darken(#828282, 25%); // --grey-color-dark in light mode
10
+ $site-title-font-size: 28px !default;
11
+ $site-footer-font-size: 16px !default;
12
+
13
+ // Font Sizes
14
+ // $title-large-font-size: 1px !default;
15
+ $title-font-size: 42px !default;
16
+ $title-medium-font-size: 32px !default;
17
+ $title-small-font-size: 27px !default;
18
+
19
+ $subtitle-font-size: 24px !default;
20
+ $subtitle-small-font-size: 22px !default;
21
+
22
+ $meta-font-size: 21px !default;
23
+ $meta-small-font-size: 19px !default;
24
+
25
+ $lead-font-size: 20px !default;
26
+ $lead-small-font-size: 18px !default;
27
+
28
+ $base-font-size: 17px !default;
29
+ $caption-font-size: 17px !default;
30
+ $blockquote-font-size: 18px !default;
31
+ $small-font-size: $base-font-size * 0.875 !default;
32
+ $nav-font-size: 16px !default;
33
+
34
+ // Font Variables
35
+ $base-font-weight: 400 !default;
36
+ $heavy-font-weight: 600 !default;
37
+ $base-line-height: 1.5 !default;
38
+
39
+ // Spacing/Padding
40
+ $spacing-unit: 20px !default;
41
+ $page-content-padding: 80px !default;
42
+
43
+ // Colors
44
+ $grey-color: #828282 !default;
45
+ $brand-color: #2568ba !default;
46
+ $a-color: #0070c9 !default;
47
+ $a-hover-opacity: .65 !default;
48
+
49
+ // Width of the content area
50
+ $content-width: 1080px !default;
51
+ $on-palm: 692px !default;
52
+ $on-laptop: 980px !default;
53
+ $on-medium: 1068px !default;
54
+ $on-small: 735px !default;
55
+
56
+ // Variables that change with dark mode
57
+ :root {
58
+ --text-color: #333333;
59
+ --dim-text-color: #ffffff;
60
+ --background-color: #ffffff;
61
+ --footer-background-color: #f2f2f2;
62
+ --footer-text-color: $grey-color;
63
+ --grey-color-light: lighten(#828282, 40%); // Use the $grey-color as base
64
+ --grey-color-lighter: lighten(#828282, 50%); // Use the $grey-color as base
65
+ --grey-color-dark: darken(#828282, 25%); // Use the $grey-color as base
66
+ --grey-color-darker: darken(#828282, 35%); // Use the $grey-color as base
67
+ }
68
+
69
+ @media (prefers-color-scheme: dark) {
70
+ :root {
71
+ --text-color: #f2f2f2;
72
+ --dim-text-color: #000000;
73
+ --background-color: #2C2C2C;
74
+ --footer-background-color: #414141;
75
+ --footer-text-color: lighten(#828282, 40%); // Use the $grey-color as base
76
+ --grey-color-light: darken(#828282, 25%); // Use the $grey-color as base
77
+ --grey-color-lighter: darken(#828282, 35%); // Use the $grey-color as base
78
+ --grey-color-dark: lighten(#828282, 40%); // Use the $grey-color as base
79
+ --grey-color-darker: lighten(#828282, 50%); // Use the $grey-color as base
80
+ }
81
+ }
82
+
83
+ // Use media queries like this:
84
+ // @include media-query($on-palm) {
85
+ // .wrapper {
86
+ // padding-right: $spacing-unit / 2;
87
+ // padding-left: $spacing-unit / 2;
88
+ // }
89
+ // }
90
+ // @mixin media-query($device) {
91
+ // @media screen and (max-width: $device) {
92
+ // @content;
93
+ // }
94
+ // }
95
+
96
+ // Import partials.
97
+ @import
98
+ "jsblog/base",
99
+ "jsblog/layout",
100
+ "jsblog/syntax-highlighting"
101
+ ;
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Reset some basic elements
3
+ */
4
+ body, h1, h2, h3, h4, h5, h6,
5
+ p, blockquote, pre, hr,
6
+ dl, dd, ol, ul, figure {
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+
12
+
13
+ /**
14
+ * Basic styling
15
+ */
16
+ html {
17
+ position: relative;
18
+ min-height: 100%;
19
+ }
20
+
21
+ body {
22
+ font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
23
+ color: var(--text-color);
24
+ background-color: var(--background-color);
25
+ -webkit-text-size-adjust: 100%;
26
+ -webkit-font-feature-settings: "kern" 1;
27
+ -moz-font-feature-settings: "kern" 1;
28
+ -o-font-feature-settings: "kern" 1;
29
+ font-feature-settings: "kern" 1;
30
+ font-kerning: normal;
31
+ letter-spacing: -.022em;
32
+ margin-bottom: 60px;
33
+ word-wrap: break-word;
34
+ }
35
+
36
+ table {
37
+ width: 100%;
38
+ margin: 0 0 20px 0;
39
+ text-align: left;
40
+ }
41
+
42
+ /**
43
+ * Set `margin-bottom` to maintain vertical rhythm
44
+ */
45
+ h1, h2, h3, h4, h5, h6,
46
+ p, pre, blockquote,
47
+ ul, ol, dl,
48
+ %vertical-rhythm {
49
+ margin-bottom: $spacing-unit / 2;
50
+ }
51
+
52
+ p+h1, ul+h1, ol+h1, p+h2, ul+h2, ol+h2, p+h3, ul+h3, ol+h3, p+h4, ul+h4, ol+h4, p+h5, ul+h5, ol+h5, p+h6, ul+h6, ol+h6 {
53
+ margin-top: 1.4em;
54
+ }
55
+
56
+
57
+
58
+ /**
59
+ * Images
60
+ */
61
+ img {
62
+ max-width: 100%;
63
+ vertical-align: middle;
64
+ }
65
+
66
+
67
+
68
+ /**
69
+ * Figures
70
+ */
71
+ figure {
72
+ text-align: center;
73
+ margin-top: 40px;
74
+ margin-bottom: 40px;
75
+ }
76
+ figure > img {
77
+ -webkit-backface-visibility: hidden;
78
+ backface-visibility: hidden;
79
+ box-sizing: border-box;
80
+ display: block;
81
+ max-width: 100%;
82
+ height: auto;
83
+ margin: 0;
84
+ }
85
+ figcaption {
86
+ font-size: $caption-font-size;
87
+ line-height: 1.52947;
88
+ font-weight: 600;
89
+ letter-spacing: -.021em;
90
+ margin-top: 10px;
91
+ margin-bottom: 15px;
92
+ text-align: left
93
+ }
94
+
95
+ /**
96
+ * Lists
97
+ */
98
+ ul, ol {
99
+ margin-left: 1.17647em;
100
+ }
101
+
102
+ li {
103
+ > ul,
104
+ > ol {
105
+ margin-bottom: 0;
106
+ }
107
+ }
108
+
109
+
110
+
111
+ /**
112
+ * Headings
113
+ */
114
+ h1, h2, h3, h4, h5, h6 {
115
+ font-weight: $heavy-font-weight;
116
+
117
+ code {
118
+ font-size: inherit;
119
+ }
120
+ }
121
+
122
+ // h1 { font-size: 2.2em; }
123
+ // h2 { font-size: 1.7em; }
124
+ // h3 { font-size: 1.17em; }
125
+ // h4 { font-size: 1.12em; }
126
+ // h5 { font-size: .83em; }
127
+ // h6 { font-size: .75em; }
128
+
129
+ /**
130
+ * Links
131
+ */
132
+ a {
133
+ color: $brand-color;
134
+ text-decoration: none;
135
+
136
+ &:visited {
137
+ color: darken($brand-color, 10%);
138
+ }
139
+
140
+ &:hover {
141
+ color: var(--text-color);
142
+ opacity: $a-hover-opacity;
143
+ }
144
+ }
145
+
146
+
147
+
148
+ /**
149
+ * Blockquotes
150
+ */
151
+ blockquote {
152
+ color: $grey-color;
153
+ border-left: 4px solid var(--grey-color-light);
154
+ padding-left: $spacing-unit / 2;
155
+ font-size: $blockquote-font-size;
156
+ letter-spacing: -1px;
157
+ font-style: italic;
158
+
159
+ > :last-child {
160
+ margin-bottom: 0;
161
+ }
162
+ }
163
+
164
+
165
+
166
+ /**
167
+ * Rules
168
+ */
169
+ hr {
170
+ border: 0;
171
+ height: 1px;
172
+ background: #d6d6d6;
173
+ margin: 65px 0
174
+ }
175
+
176
+
177
+
178
+ /**
179
+ * Code formatting
180
+ */
181
+ pre,
182
+ code {
183
+ font-family: $monospace-font-family;
184
+ font-size: 13px;
185
+ background-color: var(--grey-color-lighter);
186
+ }
187
+
188
+ code {
189
+ border: 0;
190
+ padding: 1px 5px;
191
+ }
192
+
193
+ pre {
194
+ padding: 8px 12px;
195
+ overflow-x: auto;
196
+ word-wrap: normal;
197
+ border: 1px solid var(--text-color);
198
+ border-radius: 5px;
199
+
200
+ > code {
201
+ // border: 0;
202
+ padding-right: 0;
203
+ padding-left: 0;
204
+ }
205
+ }
206
+
207
+
208
+
209
+ /**
210
+ * Wrapper
211
+ */
212
+ .wrapper {
213
+ width: $content-width;
214
+ margin-right: auto;
215
+ margin-left: auto;
216
+ @extend %clearfix;
217
+
218
+ @include media-query($on-medium) {
219
+ width: 792px;
220
+ }
221
+
222
+ @include media-query($on-small) {
223
+ width: 87.5%;
224
+ }
225
+ }
226
+
227
+
228
+
229
+ /**
230
+ * Clearfix
231
+ */
232
+ %clearfix:after {
233
+ content: "";
234
+ display: table;
235
+ clear: both;
236
+ }