jekyll-theme-jsblog 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }