jekyll-theme-hydeout 3.1.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 +7 -0
  2. data/LICENSE.md +11 -0
  3. data/README.md +98 -0
  4. data/_includes/comments.html +6 -0
  5. data/_includes/copyright.html +4 -0
  6. data/_includes/custom-foot.html +1 -0
  7. data/_includes/custom-head.html +1 -0
  8. data/_includes/disqus.html +43 -0
  9. data/_includes/favicons.html +2 -0
  10. data/_includes/font-includes.html +6 -0
  11. data/_includes/google-analytics.html +11 -0
  12. data/_includes/head.html +30 -0
  13. data/_includes/pagination.html +16 -0
  14. data/_includes/post-meta.html +30 -0
  15. data/_includes/post-tags.html +9 -0
  16. data/_includes/related_posts.html +15 -0
  17. data/_includes/search-form.html +17 -0
  18. data/_includes/sidebar-icon-links.html +26 -0
  19. data/_includes/sidebar-nav.html +34 -0
  20. data/_includes/sidebar.html +16 -0
  21. data/_includes/svg/back-arrow.svg +4 -0
  22. data/_includes/svg/download.svg +4 -0
  23. data/_includes/svg/feed.svg +5 -0
  24. data/_includes/svg/github.svg +2 -0
  25. data/_includes/svg/search.svg +4 -0
  26. data/_includes/svg/tags.svg +4 -0
  27. data/_includes/tags-list.html +39 -0
  28. data/_layouts/category.html +21 -0
  29. data/_layouts/default.html +16 -0
  30. data/_layouts/home.html +38 -0
  31. data/_layouts/page.html +10 -0
  32. data/_layouts/post.html +18 -0
  33. data/_sass/hydeout.scss +17 -0
  34. data/_sass/hydeout/_base.scss +102 -0
  35. data/_sass/hydeout/_code.scss +82 -0
  36. data/_sass/hydeout/_layout.scss +264 -0
  37. data/_sass/hydeout/_masthead.scss +25 -0
  38. data/_sass/hydeout/_message.scss +11 -0
  39. data/_sass/hydeout/_pagination.scss +41 -0
  40. data/_sass/hydeout/_posts.scss +88 -0
  41. data/_sass/hydeout/_search.scss +16 -0
  42. data/_sass/hydeout/_syntax.scss +65 -0
  43. data/_sass/hydeout/_tags.scss +23 -0
  44. data/_sass/hydeout/_type.scss +125 -0
  45. data/_sass/hydeout/_variables.scss +44 -0
  46. data/assets/css/main.scss +6 -0
  47. metadata +160 -0
@@ -0,0 +1,4 @@
1
+ <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
3
+ <path d="M0 0h24v24H0z" fill="none"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 0h24v24H0z" fill="none"/>
3
+ <path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z"/>
4
+ </svg>
@@ -0,0 +1,39 @@
1
+ <!-- See https://blog.lanyonm.org/articles/2013/11/21/alphabetize-jekyll-page-tags-pure-liquid.html -->
2
+ <!-- With added pipe to handle lack of sort_natural -->
3
+ {% capture site_tags %}{% for tag in site.tags %}{{ tag | first | downcase }}|{{ tag | first }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
4
+ <!-- site_tags: {{ site_tags }} -->
5
+ {% assign tag_words = site_tags | split:',' | sort %}
6
+ <!-- tag_words: {{ tag_words }} -->
7
+
8
+ <div id="tags-page">
9
+ <div class="tags-list">
10
+ {% for tag_pair in tag_words %}
11
+ {% assign tag = tag_pair | split:'|' | last %}
12
+ <a href="#{{ tag | slugify }}" class="tag-link">
13
+ <span class="tag-name">{{ tag }}</span>
14
+ <span class="tag-count">{{ site.tags[tag] | size }}</span>
15
+ </a>
16
+ {% endfor %}
17
+ </div>
18
+
19
+ <hr/>
20
+
21
+ <div class="posts-by-tag">
22
+ {% for tag_pair in tag_words %}
23
+ {% assign tag = tag_pair | split:'|' | last %}
24
+ <h2 id="{{ tag | slugify }}">{{ tag }}</h2>
25
+ <ul class="posts-list">
26
+ {% for post in site.tags[tag] %}
27
+ <li>
28
+ <h3>
29
+ <a href="{{ site.baseurl }}{{ post.url }}">
30
+ {{ post.title }}
31
+ <small>{{ post.date | date_to_string }}</small>
32
+ </a>
33
+ </h3>
34
+ </li>
35
+ {% endfor %}
36
+ </ul>
37
+ {% endfor %}
38
+ </div>
39
+ </div>
@@ -0,0 +1,21 @@
1
+ ---
2
+ layout: page
3
+ ---
4
+
5
+ {% unless page.content == '' %}
6
+ {{ content }}
7
+ {% endunless %}
8
+
9
+ <ul class="posts-list">
10
+ {% assign category = page.category | default: page.title %}
11
+ {% for post in site.categories[category] %}
12
+ <li>
13
+ <h3>
14
+ <a href="{{ site.baseurl }}{{ post.url }}">
15
+ {{ post.title }}
16
+ <small>{{ post.date | date_to_string }}</small>
17
+ </a>
18
+ </h3>
19
+ </li>
20
+ {% endfor %}
21
+ </ul>
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-us">
3
+
4
+ {% include head.html %}
5
+
6
+ <body class="{{ page.layout }}">
7
+
8
+ {% include sidebar.html %}
9
+
10
+ <main class="container">
11
+ {{ content }}
12
+ </main>
13
+
14
+ {% include custom-foot.html %}
15
+ </body>
16
+ </html>
@@ -0,0 +1,38 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="content">
6
+ {% for post in paginator.posts %}
7
+ <article class="post-body">
8
+ <h2 class="post-title">
9
+ <a href="{{ site.baseurl }}{{ post.url }}">
10
+ {{ post.title }}
11
+ </a>
12
+ </h2>
13
+ {% include post-meta.html post=post %}
14
+
15
+ {% if post.excerpt %}
16
+ {{ post.excerpt }}
17
+ {% else %}
18
+ {{ post.content }}
19
+ {% endif %}
20
+
21
+ {% if post.excerpt %}
22
+ {% comment %}Excerpt may be equal to content. Check.{% endcomment %}
23
+ {% capture content_words %}
24
+ {{ post.content | number_of_words }}
25
+ {% endcapture %}
26
+ {% capture excerpt_words %}
27
+ {{ post.excerpt | number_of_words }}
28
+ {% endcapture %}
29
+
30
+ {% if content_words != excerpt_words %}
31
+ <a href="{{ site.baseurl }}{{ post.url }}">More &hellip;</a>
32
+ {% endif %}
33
+ {% endif %}
34
+ </article>
35
+ {% endfor %}
36
+
37
+ {% include pagination.html %}
38
+ </div>
@@ -0,0 +1,10 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <header>
6
+ <h1 class="page-title">{{ page.title }}</h1>
7
+ </header>
8
+ <div class="content">
9
+ {{ content }}
10
+ </div>
@@ -0,0 +1,18 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <header>
6
+ <h1 class="post-title">{{ page.title }}</h1>
7
+ </header>
8
+ <div class="content">
9
+ {% include post-meta.html post=page %}
10
+
11
+ <div class="post-body">
12
+ {{ content }}
13
+ {% include post-tags.html post=page %}
14
+ </div>
15
+
16
+ {% include comments.html %}
17
+ {% include related_posts.html %}
18
+ </div>
@@ -0,0 +1,17 @@
1
+ /*
2
+ Most of these imports are derived from https://github.com/poole/poole.
3
+ Designed, built, and released under MIT license by @mdo.
4
+ */
5
+
6
+ @import "hydeout/variables";
7
+ @import "hydeout/base";
8
+ @import "hydeout/type";
9
+ @import "hydeout/syntax";
10
+ @import "hydeout/code";
11
+ @import "hydeout/layout";
12
+ @import "hydeout/masthead";
13
+ @import "hydeout/posts";
14
+ @import "hydeout/pagination";
15
+ @import "hydeout/message";
16
+ @import "hydeout/search";
17
+ @import "hydeout/tags";
@@ -0,0 +1,102 @@
1
+ // Body resets
2
+ //
3
+ // Update the foundational and global aspects of the page.
4
+
5
+ * {
6
+ -webkit-box-sizing: border-box;
7
+ -moz-box-sizing: border-box;
8
+ box-sizing: border-box;
9
+ }
10
+
11
+ html,
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ }
16
+
17
+ html {
18
+ font-family: $root-font-family;
19
+ font-size: $root-font-size;
20
+ line-height: $root-line-height;
21
+
22
+ @media (min-width: $large-breakpoint) {
23
+ font-size: $large-font-size;
24
+ }
25
+ }
26
+
27
+ body {
28
+ -webkit-text-size-adjust: 100%;
29
+ -ms-text-size-adjust: 100%;
30
+ }
31
+
32
+ main, article, section { display: block; }
33
+
34
+ // No `:visited` state is required by default (browsers will use `a`)
35
+ a {
36
+ color: $link-color;
37
+ text-decoration: none;
38
+
39
+ // `:focus` is linked to `:hover` for basic accessibility
40
+ &:hover,
41
+ &:focus {
42
+ text-decoration: underline;
43
+ }
44
+
45
+ strong {
46
+ color: inherit;
47
+ }
48
+ }
49
+
50
+ img {
51
+ display: block;
52
+ max-width: 100%;
53
+ margin: 0 0 1rem;
54
+ border-radius: 5px;
55
+ height: auto; // Fix to keep max-width from squishing images with defined
56
+ // height in HTML
57
+ }
58
+
59
+ table {
60
+ margin-bottom: 1rem;
61
+ width: 100%;
62
+ font-size: 85%;
63
+ border: 1px solid $border-color;
64
+ border-collapse: collapse;
65
+ }
66
+
67
+ td,
68
+ th {
69
+ padding: .25rem .5rem;
70
+ border: 1px solid $border-color;
71
+ }
72
+
73
+ th {
74
+ text-align: left;
75
+ }
76
+
77
+ tbody tr:nth-child(odd) td,
78
+ tbody tr:nth-child(odd) th {
79
+ background-color: $gray-1;
80
+ }
81
+
82
+ input[type="text"], input[type="search"], input[type="submit"], button {
83
+ padding: $padding-v $padding-h;
84
+ border: 1px solid $border-color;
85
+ border-radius: $border-radius;
86
+ }
87
+
88
+ button, input[type="submit"] {
89
+ cursor: pointer;
90
+ background: transparent;
91
+ border-color: $border-color;
92
+ color: $link-color;
93
+ transition: color 0.6s ease-in-out,
94
+ border-color 0.6s ease-in-out,
95
+ background 0.6s ease-in-out;
96
+
97
+ &:hover {
98
+ background: $link-color;
99
+ border-color: $link-color;
100
+ color: white;
101
+ }
102
+ }
@@ -0,0 +1,82 @@
1
+ // Code
2
+ //
3
+ // Inline and block-level code snippets. Includes tweaks to syntax highlighted
4
+ // snippets from Pygments/Rouge and Gist embeds.
5
+
6
+ code,
7
+ pre {
8
+ font-family: $code-font-family;
9
+ }
10
+
11
+ code {
12
+ padding: .25em .5em;
13
+ font-size: 85%;
14
+ color: $code-color;
15
+ background-color: #f9f9f9;
16
+ border-radius: 3px;
17
+ }
18
+
19
+ pre {
20
+ margin-top: 0;
21
+ margin-bottom: 1rem;
22
+ }
23
+
24
+ pre code {
25
+ padding: 0;
26
+ font-size: 100%;
27
+ color: inherit;
28
+ background-color: transparent;
29
+ }
30
+
31
+ // Pygments/Rouge via Jekyll
32
+ .highlight {
33
+ padding: 1rem;
34
+ margin-bottom: 1rem;
35
+ font-size: .8rem;
36
+ line-height: 1.4;
37
+ background-color: #f9f9f9;
38
+ border-radius: .25rem;
39
+
40
+ pre {
41
+ margin-bottom: 0;
42
+ overflow-x: auto;
43
+ }
44
+
45
+ .lineno {
46
+ display: inline-block; // Ensures the null space also isn't selectable
47
+ padding-right: .75rem;
48
+ padding-left: .25rem;
49
+ color: #999;
50
+ // Make sure numbers aren't selectable
51
+ -webkit-user-select: none;
52
+ -moz-user-select: none;
53
+ user-select: none;
54
+ }
55
+ }
56
+
57
+ pre {
58
+ max-width: 100%;
59
+ overflow-x: auto;
60
+ }
61
+
62
+ // Gist via GitHub Pages
63
+ // .gist .gist-file {
64
+ // font-family: Menlo, Monaco, "Courier New", monospace !important;
65
+ // }
66
+ // .gist .markdown-body {
67
+ // padding: 15px;
68
+ // }
69
+ // .gist pre {
70
+ // padding: 0;
71
+ // background-color: transparent;
72
+ // }
73
+ // .gist .gist-file .gist-data {
74
+ // font-size: .8rem !important;
75
+ // line-height: 1.4;
76
+ // }
77
+ // .gist code {
78
+ // padding: 0;
79
+ // color: inherit;
80
+ // background-color: transparent;
81
+ // border-radius: 0;
82
+ // }
@@ -0,0 +1,264 @@
1
+ /*
2
+ Layout
3
+
4
+ Styles for managing the structural hierarchy of the site.
5
+ Hydeout features the large colored sidebar from Hyde that houses the
6
+ site name, intro, and "footer" content. Sidebar is on top of content on
7
+ mobile and expands into sidebar on larger width displays.
8
+
9
+ Sidebar CSS assumes HTML looks like this for post pages:
10
+
11
+ body
12
+ > #sidebar
13
+ > header (primary sidebar content -- i.e. title)
14
+ > h1 (home page only, otherwise div or span)
15
+ > secondary nav content we may want to hide on certain pages
16
+ > .container
17
+ > h1 (non-home page)
18
+ > .content
19
+
20
+ Basic approach is to color in body, make sidebar background transparent,
21
+ and then fill in the .container or .content elements depending on how far
22
+ we want the sidebar or header to stretch.
23
+ */
24
+
25
+ body {
26
+ color: rgba(255,255,255,.75);
27
+ background-color: $sidebar-bg-color;
28
+ background-image: linear-gradient(
29
+ to bottom,
30
+ lighten($sidebar-bg-color, 7%),
31
+ darken($sidebar-bg-color, 7%));
32
+ display: flex;
33
+ flex-direction: column;
34
+ min-width: 100vw;
35
+ min-height: 100vh;
36
+ }
37
+
38
+ #sidebar {
39
+ flex: 0 0 auto;
40
+
41
+ // Use header + last-child to control vertical spacing so we can make
42
+ // certain elements appear to be part of sidebar
43
+ padding: 0 $section-spacing;
44
+ header { margin-top: $section-spacing; }
45
+ header ~ *:last-child { margin-bottom: $section-spacing; }
46
+
47
+ .site-title {
48
+ font-family: "Abril Fatface", serif;
49
+ font-weight: normal;
50
+ font-size: $large-font-size;
51
+ color: rgba(255,255,255,.75);
52
+ margin-top: 0;
53
+ margin-bottom: 0;
54
+
55
+ a {
56
+ color: inherit;
57
+ &:hover { color: white; }
58
+ }
59
+
60
+ .back-arrow { margin-right: 0.5rem; }
61
+ }
62
+ }
63
+
64
+ // Container is flexbox as well -- we want content div to stretch and fill
65
+ .container {
66
+ flex: 1 1 auto;
67
+ display: flex;
68
+ flex-direction: column;
69
+
70
+ > .content {
71
+ flex-grow: 1;
72
+ }
73
+ }
74
+
75
+ .content {
76
+ background: $body-bg;
77
+ color: $body-color;
78
+ padding: $section-spacing;
79
+ }
80
+
81
+
82
+ /* -----------------------------------------------------------
83
+ Mobile view
84
+ ----------------------------------------------------------- */
85
+
86
+ // Hide secondary nav content in sidebar
87
+ // Hide lead paragraph in sidebar
88
+ #sidebar {
89
+ header ~ *, p.lead {
90
+ display: none;
91
+ }
92
+ }
93
+
94
+ // Make header elements blend into sidebar / background
95
+ .container > header {
96
+ background: transparent;
97
+ color: white;
98
+ margin: 0 $section-spacing $section-spacing;
99
+
100
+ h1, h2 {
101
+ color: white;
102
+
103
+ &:last-child {
104
+ margin-bottom: 0;
105
+ }
106
+ }
107
+ }
108
+
109
+
110
+ /* -----------------------------------------------------------
111
+ Mobile view for home page)
112
+ ----------------------------------------------------------- */
113
+
114
+ .home #sidebar {
115
+
116
+ // Center sidebar content
117
+ text-align: center;
118
+
119
+ // Bigger title
120
+ .site-title {
121
+ font-size: 3.25rem;
122
+ margin-bottom: $heading-spacing;
123
+ color: white;
124
+ }
125
+
126
+ // Show secondary nav content + lead
127
+ header ~ *, p.lead {
128
+ display: block;
129
+ }
130
+ }
131
+
132
+
133
+ /* -----------------------------------------------------------
134
+ Tablet / Desktop view
135
+ ----------------------------------------------------------- */
136
+
137
+ @media (min-width: $large-breakpoint) {
138
+ body {
139
+ flex-direction: row;
140
+ height: 100vh;
141
+ overflow: auto;
142
+ > * { max-height: 100vh; overflow: auto; }
143
+ }
144
+
145
+ #sidebar, .home #sidebar {
146
+ width: $sidebar-width;
147
+ text-align: left;
148
+ }
149
+
150
+ // Undo mobile CSS
151
+ #sidebar {
152
+ .site-title {
153
+ font-size: 3.25rem;
154
+ margin-bottom: $heading-spacing;
155
+
156
+ a { color: white; }
157
+ .back-arrow { display: none; }
158
+ }
159
+
160
+ p.lead, header ~ * {
161
+ display: block;
162
+ }
163
+ }
164
+
165
+ // Make entire container background white to contrast against sidebar
166
+ .container {
167
+ background: $body-bg;
168
+ color: $body-color;
169
+ padding: $section-spacing * 2;
170
+ height: 100vh;
171
+
172
+ > header {
173
+ color: inherit;
174
+ margin: 0;
175
+ h1, h2 {
176
+ color: inherit;
177
+
178
+ &:last-child {
179
+ margin-bottom: $heading-spacing;
180
+ }
181
+ }
182
+ }
183
+
184
+ .content {
185
+ max-width: 38rem;
186
+ padding: 0;
187
+ }
188
+ }
189
+ }
190
+
191
+
192
+ /* -----------------------------------------------------------
193
+ Sidebar links + nav
194
+ ----------------------------------------------------------- */
195
+
196
+ #sidebar a {
197
+ color: #fff;
198
+
199
+ svg {
200
+ fill: rgba(255, 255, 255, 0.85);
201
+ }
202
+
203
+ &:hover, &:focus, &.active {
204
+ svg { fill: #fff; }
205
+ }
206
+
207
+ &:hover, &:focus {
208
+ text-decoration: underline;
209
+ &.icon {
210
+ text-decoration: none;
211
+ }
212
+ }
213
+
214
+ &.active {
215
+ font-weight: bold;
216
+ }
217
+ }
218
+
219
+ #sidebar-nav {
220
+ margin-bottom: 1rem;
221
+ }
222
+
223
+ #sidebar nav > * {
224
+ display: block;
225
+ line-height: 1.75;
226
+ }
227
+
228
+ #sidebar nav > .icon {
229
+ font-size: 1.5rem;
230
+ display: inline-block;
231
+ + a { margin-left: 0.5em; }
232
+ }
233
+
234
+
235
+ /* -----------------------------------------------------------
236
+ Sticky sidebar
237
+
238
+ Set $sidebar-stick variable to affix sidebar contents to the
239
+ bottom of the sidebar in tablets and up.
240
+ ----------------------------------------------------------- */
241
+
242
+ @if $sidebar-sticky {
243
+ @media (min-width: $large-breakpoint) {
244
+ body {
245
+ align-items: flex-end;
246
+ }
247
+ }
248
+ }
249
+
250
+
251
+ /* -----------------------------------------------------------
252
+ Reverse layout
253
+
254
+ Flip the orientation of the page by placing the `#sidebar`
255
+ on the right.
256
+ ----------------------------------------------------------- */
257
+
258
+ @if $layout-reverse {
259
+ @media (min-width: $large-breakpoint) {
260
+ .container {
261
+ order: -1;
262
+ }
263
+ }
264
+ }