jekyll-theme-isabelline 0.1.18 → 0.1.23

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: 58f2738bd5d62cc452b9db650957053913de10d4ca506890251b16053def49f7
4
- data.tar.gz: ab52d1ba4723f9c9d590ca3264661c15d0a4bd53d3639f60637cc551280737b2
3
+ metadata.gz: 54f8c8361f0dbdec8be508ff7a42a84c080888817d17bd50522a11d94291391c
4
+ data.tar.gz: a3568115fb01e50122908ca1928c7510a14fa5cade8c0aee347dfb28220772ae
5
5
  SHA512:
6
- metadata.gz: bcfc7446c8780a752e34059e55fc18c08eeaae1bd89aefa08846b925a7670238016febabd4405433388247c59e3ab0979629107b47c590a90f98e245ac956f45
7
- data.tar.gz: db675d77e0bcfb356169432e8589c791df6d7d43b922f4e9d7b255c946aabeb03cb5a632ca4e67ec89fada2c960212ff4cecaac5eb0eb40268e0734b66eae09e
6
+ metadata.gz: 646ec113bc9e246c17ed30c6ebfa42039ca32da83e4a64ef6c4c705ea2c84e2e23ec1e7d5879f136e78d258bd226bad26601cd2194c492f2b2f1288b7dca792d
7
+ data.tar.gz: b545cc2d12f0faa42e24efee3dc0d86f1fbf2a480222f437df3c95ac3139ee1d03b4ee20b169fcc3eb337585b89d90a2d224df909db06a6b56d345503aee1bf1
data/README.md CHANGED
@@ -1,3 +1,36 @@
1
1
  # jekyll-theme-isabelline
2
2
 
3
- README is being worked on in [a post](/README/)
3
+ Simple clean mobile-friendly theme for long form note taking. Works for blogging too.
4
+
5
+ ## Features:
6
+
7
+ * Compatible with Jekyll 4
8
+ * Designed for long form writing
9
+ * Reserved, classy, easy to read, minimalistic visual design
10
+ * Semantic lightweight mobile first markup; special attention to markup of block quotes, asides, images, image galleries
11
+ * Customizable color scheme
12
+
13
+ ## Installation
14
+
15
+ Add this line to site's `Gemfile`:
16
+
17
+ ```ruby
18
+ gem "jekyll-theme-isabelline", "~> 0.1.0"
19
+ ```
20
+ And add this line to your Jekyll site `_config.yaml`:
21
+
22
+ ```yaml
23
+ theme: jekyll-theme-isabelline
24
+ ```
25
+
26
+ And then execute:
27
+
28
+ ```sh
29
+ $ bundle
30
+ ```
31
+
32
+ Or, install from CLI:
33
+
34
+ ```sh
35
+ $ gem install jekyll-theme-isabelline
36
+ ```
@@ -28,4 +28,5 @@
28
28
 
29
29
  <div id="snackbar">Loading...</div>
30
30
  <!-- <script src='/assets/js/slides.js'></script> -->
31
- <script src='{{ "/assets/js/clipboard.js" | relative_url }}'></script>
31
+ <script src='{{ "/assets/js/clipboard.js" | relative_url }}'></script>
32
+ <script src='{{ "/assets/js/gallery.js" | relative_url }}'></script>
@@ -0,0 +1,29 @@
1
+ {% assign gallery_name = include.name | default: "gallery" %}
2
+
3
+ {% assign gallery_prefix = page.id | prepend: "/assets" | append: "/" | append: gallery_name %}
4
+
5
+ {% assign sorted_static_files = site.static_files | map: "path" | sort %}
6
+
7
+ {% assign valid_image_extensions = "jpg,jpeg,png,gif" | split: "," %}
8
+
9
+ <div class="gallery" id="gallery-{{ gallery_name }}">
10
+ {% assign image_index = 0 %}
11
+ {% assign gallery_nav = "" %}
12
+ <div class="images">
13
+ {% for image_path in sorted_static_files %}
14
+ {% assign image_ext = image_path | split: "." | last %}
15
+ {% if valid_image_extensions contains image_ext %}
16
+ {% if image_path contains gallery_prefix %}
17
+ {% assign image_index = image_index | plus: 1 %}
18
+ <img id="{{ gallery_name }}-{{ image_index }}" src="{{ site.baseurl }}{{ image_path }}" />
19
+ {% endif %}
20
+ {% endif %}
21
+ {% endfor %}
22
+ </div>
23
+ <nav>
24
+ <div class="play">
25
+ <input type="checkbox" checked="false" id="{{ gallery_name }}-play" />
26
+ <label for="{{ gallery_name }}-play"></label>
27
+ </div>
28
+ </nav>
29
+ </div>
@@ -7,6 +7,6 @@
7
7
  {{ page.title }} &middot; {{ site.title }}
8
8
  {% endif %}
9
9
  </title>
10
- <link rel="stylesheet" href="{{ site.baseurl }}/assets/css/style.css">
10
+ <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
11
11
  {% include head-meta.html %}
12
12
  </head>
@@ -11,9 +11,16 @@
11
11
  {% capture alt %}alt="{{ alt }}" title="{{ alt }}"{% endcapture %}
12
12
  {% endif %}
13
13
 
14
- {% assign frame=include.frame | default: true %}
14
+ {% assign frame=include.frame %}
15
+ {% if frame == blank %}
16
+ {% assign frame=true %}
17
+ {% endif %}
18
+
19
+ {% if include.width != blank %}
20
+ {% capture width %}style="width:{{ include.width }}"{% endcapture %}
21
+ {% endif %}
15
22
 
16
- <figure class="figure {% if include.caption %}caption{% endif %} {% if frame %}frame{% endif %}">
17
- <a target="_blank" href="{{ imagePath }}"><img {{ src }} {{ alt }} width="100%" /></a>
23
+ <figure {{width}} class="figure {% if include.caption %}caption{% endif %} {% if frame %}frame{% endif %}">
24
+ <a target="_blank" href="{{ imagePath }}"><img {{ src }} {{ alt }} style="width:100%" /></a>
18
25
  {% if caption != blank %}<figcaption>{{ caption }}</figcaption>{% endif %}
19
26
  </figure>
@@ -1,22 +1,38 @@
1
1
 
2
- {% assign title=(include.title | default: site.index.title)%}
2
+ {% assign title=include.title %}
3
3
 
4
- {% if title == blank %}
5
- <h1>{{ include.posts | size }} blogs since {{ include.posts | sort: 'date' | map: 'date' | compact | first | date: '%Y' }}</h1>
6
- {% else if %}
4
+ {% if title != blank %}
7
5
  <h1>{{ title }}</h1>
6
+ {% else %}
7
+ <h1>{{ include.posts | size }} blogs since {{ include.posts | sort: 'date' | map: 'date' | compact | first | date: '%Y' }}</h1>
8
8
  {% endif %}
9
9
 
10
- {% if site.index.intro != blank %}
11
- {{ site.index.intro }}
12
- {% endif %}
13
-
14
- {% if site.index.subtitle != blank %}
15
- <h2>{{ site.index.subtitle }}</h2>
16
- {% endif %}
17
10
 
18
11
  {% assign prev_year = 'first run' %}
19
12
  {% assign sorted_posts = include.posts | sort: "date" | reverse %}
13
+
14
+ {% assign pinned_posts=sorted_posts | where: "pinned", 1 %}
15
+
16
+ {% if pinned_posts.size > 0 %}
17
+ <ul class="index">
18
+ {% for post in pinned_posts %}
19
+ <li>
20
+ <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
21
+ <span class="posted">{{ post.date | date: "%b %-d, %Y" }}</span>
22
+ {% if jekyll.environment == "local" %}
23
+ {% if post.collection == 'private' %}
24
+ <span class="badge collection {{ post.collection }}">{{ post.collection }}</span>
25
+ {% endif %}
26
+ {% if post.draft %}
27
+ <span class="badge draft">draft</span>
28
+ {% endif %}
29
+ {% endif %}
30
+ </li>
31
+ {% endfor %}
32
+ </ul>
33
+ {% endif %}
34
+
35
+
20
36
  {% for post in sorted_posts %}
21
37
 
22
38
  {% assign current_year = post.date | date: "%Y" %}
@@ -0,0 +1,10 @@
1
+ ---
2
+ layout: base
3
+ ---
4
+
5
+
6
+ <main>
7
+ <article>
8
+ {{ content }}
9
+ </article>
10
+ </main>
@@ -41,7 +41,7 @@ $serif: "Noto Serif", Times, serif;
41
41
 
42
42
  $header-serif: "Bree Serif",$serif;
43
43
  $body-serif: "Noto Serif", "Bree Serif",$serif;
44
- $header-color: darken($body-background-color,80%);
44
+ $header-color: darken($body-background-color,90%);
45
45
  $header-link-color: darken($body-background-color,70%);
46
46
 
47
47
  $image-caption-serif: "Fira Sans Extra Condensed", "Neucha", $sans-serif;
@@ -129,12 +129,15 @@ header {
129
129
  font-size: 80%;
130
130
  font-weight: normal;
131
131
  margin: .5em 0;
132
- float: right;
132
+ float: left;
133
133
 
134
134
  // site menu shows posts in "global" category
135
135
  ul {
136
136
  padding: 0;
137
137
  margin: 0;
138
+ li:first-child {
139
+ padding-left: 0;
140
+ }
138
141
  li {
139
142
  color: $header-link-color;
140
143
  list-style: none;
@@ -156,15 +159,6 @@ header {
156
159
  }
157
160
  }
158
161
 
159
- // div.column {
160
- // width: 30%;
161
- // float: left;
162
- // padding: .5rem;
163
- // margin: .5rem;
164
- // border: 1px solid #ccc;
165
- // }
166
-
167
- // link styling
168
162
  a {
169
163
  color: darken($link-color,15%);
170
164
  &:hover, &:active, &:visited {
@@ -190,7 +184,8 @@ main {
190
184
 
191
185
  // figure is a composition of the image and caption
192
186
  figure {
193
- margin: 1em 0;
187
+ margin: 1em auto;
188
+ width: 80%;
194
189
  figcaption {
195
190
  //font-size: .8em;
196
191
  text-align: center;
@@ -200,11 +195,29 @@ main {
200
195
  }
201
196
 
202
197
  img {
203
- border-radius: 4px;
198
+ border-radius: 6px;
204
199
  // width: 100%;
205
200
  }
206
201
  }
207
202
 
203
+ p img {
204
+ border-radius: 6px;
205
+ width: 100%;
206
+ }
207
+
208
+ p img + em {
209
+ font-family: $image-caption-serif;
210
+ color: $image-caption-color;
211
+ font-style: normal;
212
+ text-align: center;
213
+ display: block;
214
+ width: 100%;
215
+ }
216
+
217
+ figure.frame img {
218
+ border: 1px solid $header-color;
219
+ }
220
+
208
221
  // for slideshows show the first figure, hide rest
209
222
  div.slideshow figure {
210
223
  display: none;
@@ -213,6 +226,106 @@ main {
213
226
  }
214
227
  }
215
228
 
229
+ div.gallery {
230
+ width: 100%;
231
+ float: left;
232
+ margin-bottom: 1em;
233
+
234
+ img {
235
+ width: 100%;
236
+
237
+ // height: 200px;
238
+ // float: left;
239
+ }
240
+
241
+ div.images {
242
+ position: relative;
243
+ height: 500px;
244
+ overflow: hidden;
245
+
246
+ will-change: height;
247
+ transition: 300ms ease;
248
+
249
+ img.transition {
250
+ will-change: left;
251
+ transition: 300ms ease;
252
+ }
253
+
254
+ img.left { left: -100% !important; }
255
+ img.right { left: 100% !important; }
256
+ img.center { left: 0 !important; }
257
+
258
+ img {
259
+ cursor: pointer;
260
+ border-radius: 6px;
261
+
262
+ position: absolute;
263
+ top: 0;
264
+ left: 100%;
265
+ }
266
+
267
+ img:first-child {
268
+ left: 0;
269
+ }
270
+ }
271
+
272
+
273
+ nav {
274
+ width: 100%;
275
+ text-align: center;
276
+ i {
277
+ cursor: pointer;
278
+ margin: .5rem;
279
+ display: inline-block;
280
+ width: 1rem;
281
+ height: 1rem;
282
+ border-radius: .5rem;
283
+ transition: all 300ms ease;
284
+
285
+ background-color: hsl($hue,10,80);
286
+ &.selected {
287
+ background-color: hsl($hue,50,40);
288
+ }
289
+ }
290
+
291
+ // slightly modified version of
292
+ // https://css-tricks.com/making-pure-css-playpause-button/
293
+ .play {
294
+ float: left;
295
+
296
+ label {
297
+ margin: .5rem;
298
+ display: inline-block;
299
+ box-sizing: border-box;
300
+ width: 0;
301
+ height: 1rem;
302
+ cursor: pointer;
303
+ border-color: transparent transparent transparent hsl($hue,50,40); // same color as i.selected
304
+
305
+ transition: 300ms all ease;
306
+ will-change: border-width;
307
+
308
+ // paused state
309
+ border-style: double;
310
+ border-width: 0 0 0 1rem;
311
+ }
312
+ input[type='checkbox'] {
313
+ display: none;
314
+ &:checked + label {
315
+ border-style: solid;
316
+ border-width: .5rem 0 .5rem 1rem;
317
+ }
318
+ }
319
+ }
320
+ }
321
+
322
+
323
+ }
324
+
325
+ div.gallery + p {
326
+ clear: both;
327
+ }
328
+
216
329
  // drop caps
217
330
  // TODO: this needs work
218
331
  @if $drop-caps {
@@ -263,14 +376,14 @@ main {
263
376
  padding-left: 0;
264
377
  li {
265
378
  list-style: none;
266
- padding-left: 1em;
267
- padding-bottom: .2em;
379
+ padding-left: 1.2em;
380
+ padding-bottom: .3em;
268
381
  margin-left: 0;
269
382
 
270
383
  // mdash for unordered list items
271
384
  &::before {
272
385
  content: "\2014";
273
- margin-left: -1em;
386
+ margin-left: -1.2em;
274
387
  margin-right: .2em;
275
388
  }
276
389
 
Binary file
@@ -0,0 +1 @@
1
+ <svg id="b34a7ed3-b085-4444-bb69-8e8541180262" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="744.61498" height="542.26178" viewBox="0 0 744.61498 542.26178"><path d="M932.50251,629.9509a322.61072,322.61072,0,0,1-15.07,89.18c-.21.67-.43,1.33-.65,2h-56.24c.06-.6.12-1.27.18-2,3.75-43.11,25.37-305.49-.48-350.36C862.50251,372.41086,936.86249,492.97086,932.50251,629.9509Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M928.28254,719.13089c-.47.67-.96,1.34-1.46,2h-42.19c.32-.57.69-1.24,1.12-2,6.97-12.58,27.6-50.19,46.75-89.18,20.58-41.9,39.46-85.39,37.87-101.13C970.86249,532.37088,985.10248,640.59085,928.28254,719.13089Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M283.04472,675.92378a158.394,158.394,0,0,0,7.399,43.78516c.10309.32894.21112.653.31912.98195H318.3753c-.02945-.29461-.05894-.62355-.0884-.98195-1.84115-21.166-12.456-149.988.23569-172.01807C317.413,549.478,280.90408,608.67,283.04472,675.92378Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M285.11662,719.70894c.23078.32894.47135.65789.71684.98195H306.5477c-.15712-.27986-.33877-.60881-.54989-.98195-3.42211-6.17648-13.5509-24.64205-22.95309-43.78516-10.10427-20.57187-19.37389-41.92437-18.59322-49.65232C264.21092,628.01442,257.21944,681.14773,285.11662,719.70894Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M811.27948,721.05261H523.01163a5.34456,5.34456,0,0,1-5.33828-5.33828V644.20739a5.34457,5.34457,0,0,1,5.33828-5.33828H811.27948a5.34457,5.34457,0,0,1,5.33828,5.33828v71.50694A5.34456,5.34456,0,0,1,811.27948,721.05261ZM523.01163,641.00442a3.20647,3.20647,0,0,0-3.203,3.203v71.50694a3.20647,3.20647,0,0,0,3.203,3.203H811.27948a3.20647,3.20647,0,0,0,3.203-3.203V644.20739a3.20647,3.20647,0,0,0-3.203-3.203Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><circle cx="340.11008" cy="498.34802" r="21.74535" fill="#e6e6e6"/><path d="M618.024,662.72023a3.62423,3.62423,0,0,0,0,7.24845H788.88027a3.62422,3.62422,0,1,0,0-7.24845Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M618.024,684.46558a3.62422,3.62422,0,0,0,0,7.24844h73.52a3.62422,3.62422,0,1,0,0-7.24844Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M883.27948,615.05261H595.01163a5.34456,5.34456,0,0,1-5.33828-5.33828V538.20739a5.34457,5.34457,0,0,1,5.33828-5.33828H883.27948a5.34457,5.34457,0,0,1,5.33828,5.33828v71.50694A5.34456,5.34456,0,0,1,883.27948,615.05261ZM595.01163,535.00442a3.20647,3.20647,0,0,0-3.203,3.203v71.50694a3.20647,3.20647,0,0,0,3.203,3.203H883.27948a3.20647,3.20647,0,0,0,3.203-3.203V538.20739a3.20647,3.20647,0,0,0-3.203-3.203Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><circle cx="412.11008" cy="392.34802" r="21.74535" fill="#e6e6e6"/><path d="M690.024,556.72023a3.62423,3.62423,0,0,0,0,7.24845H860.88027a3.62422,3.62422,0,1,0,0-7.24845Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M690.024,578.46558a3.62422,3.62422,0,0,0,0,7.24844h73.52a3.62422,3.62422,0,1,0,0-7.24844Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M827.27948,436.05261H539.01163a5.34456,5.34456,0,0,1-5.33828-5.33828V184.20739a5.34457,5.34457,0,0,1,5.33828-5.33828H827.27948a5.34457,5.34457,0,0,1,5.33828,5.33828V430.71433A5.34456,5.34456,0,0,1,827.27948,436.05261ZM539.01163,181.00442a3.20647,3.20647,0,0,0-3.203,3.203V430.71433a3.20647,3.20647,0,0,0,3.203,3.203H827.27948a3.20647,3.20647,0,0,0,3.203-3.203V184.20739a3.20647,3.20647,0,0,0-3.203-3.203Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><circle cx="356.11008" cy="213.34802" r="21.74535" fill="#e6e6e6"/><path d="M634.024,377.72023a3.62422,3.62422,0,0,0,0,7.24845H804.88027a3.62422,3.62422,0,1,0,0-7.24845Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M634.024,399.46558a3.62422,3.62422,0,0,0,0,7.24844h73.52a3.62422,3.62422,0,1,0,0-7.24844Z" transform="translate(-227.69251 -178.86911)" fill="#e6e6e6"/><path d="M355.039,461.66244l3.1777,25.30059a13.30065,13.30065,0,0,0,18.60319,10.49486l0,0a13.30065,13.30065,0,0,0,6.2482-18.56187l-13.36334-24.29862-4.3696-104.46964-28.259,6.59024Z" transform="translate(-227.69251 -178.86911)" fill="#ffb8b8"/><polygon points="233.19 517.322 211.19 519.322 198.19 338.322 197.69 384.822 149.69 512.822 130.69 497.822 162.19 370.322 147.19 299.322 245.19 299.322 233.19 517.322" fill="#2f2e41"/><path d="M482.69846,720.6521l-40.89749-.99874a11.082,11.082,0,0,1-11.75527-12.79412l1.676-10.53039a9.01161,9.01161,0,0,1,8.25674-7.57218h0c6.98,7.22421,14.2,6.15724,21.61179-1.54559l16.85941,17.103,2.51765-.33842a8.38681,8.38681,0,0,1,9.17284,5.97815h0A8.38682,8.38682,0,0,1,482.69846,720.6521Z" transform="translate(-227.69251 -178.86911)" fill="#2f2e41"/><path d="M389.54319,719.29961l-41.0141-15.4744a11.84639,11.84639,0,0,1-5.64946-17.693l6.35939-9.45957a9.63322,9.63322,0,0,1,11.41191-3.6322h0c3.522,10.14429,11.00406,12.35517,21.65525,8.21643l10.4609,20.28718,2.59391.80357a8.96533,8.96533,0,0,1,6.20894,9.92156v0A8.96534,8.96534,0,0,1,389.54319,719.29961Z" transform="translate(-227.69251 -178.86911)" fill="#2f2e41"/><circle cx="198.19" cy="47.32178" r="26" fill="#ffb8b8"/><path d="M428.88251,274.19089l-45-1c12.36493-13.68021,19.87616-27.95128,21-43h24Z" transform="translate(-227.69251 -178.86911)" fill="#ffb8b8"/><path d="M475.88251,492.19089c-42.47778-10.89874-82.33441-18.24478-107-5,4.31966-45.41129-.67687-103.379-15.49915-163.96512-4.81437-19.67875-1.549-37.411,15.99915-47.53488l23.5-13.5,36,1,18.78311,10.39155a47.16015,47.16015,0,0,1,25.25368,50.97711C462.82727,377.66693,468.28069,434.98523,475.88251,492.19089Z" transform="translate(-227.69251 -178.86911)" fill="#3f3d56"/><path d="M484.88251,460.19089l3.52391,25.25469a13.30065,13.30065,0,0,1-15.22634,14.9793h0A13.30067,13.30067,0,0,1,462.31151,484.132l6.571-26.94111-23-102,29-1Z" transform="translate(-227.69251 -178.86911)" fill="#ffb8b8"/><path d="M378.88251,365.19089l-47-3c3.67218-46.2356,14.122-71.51129,30-80l17,20Z" transform="translate(-227.69251 -178.86911)" fill="#3f3d56"/><path d="M443.88251,217.19089c-9.16009-2.93048-13.91406,15.85229-27.5,27.5-3.08831,2.64775-10.794-7.67615-13.5-4.5l-4.37524-13.31663c-5.191-15.79959,4.1631-33.02343,20.42725-36.495q.64759-.13823,1.30658-.24816h0a29.15735,29.15735,0,0,1,32.87228,20.91065,3.85886,3.85886,0,0,1-2.9263,4.75332Z" transform="translate(-227.69251 -178.86911)" fill="#2f2e41"/><polygon points="257.19 177.322 213.19 187.322 211.19 115.322 236.19 116.322 257.19 177.322" fill="#3f3d56"/><rect y="540.26178" width="738.22003" height="2" fill="#3f3d56"/><path d="M895.76841,350.074H607.50056a5.34457,5.34457,0,0,1-5.33829-5.33828V218.22876a5.34457,5.34457,0,0,1,5.33829-5.33829H895.76841a5.34457,5.34457,0,0,1,5.33828,5.33829V344.7357A5.34457,5.34457,0,0,1,895.76841,350.074Z" transform="translate(-227.69251 -178.86911)" fill="#f50057"/><path d="M666.20634,256.98533a3.62423,3.62423,0,1,0,0,7.24845H837.06263a3.62422,3.62422,0,0,0,0-7.24845Z" transform="translate(-227.69251 -178.86911)" fill="#fff"/><path d="M666.20634,277.98533a3.62423,3.62423,0,1,0,0,7.24845H837.06263a3.62422,3.62422,0,0,0,0-7.24845Z" transform="translate(-227.69251 -178.86911)" fill="#fff"/><path d="M666.20634,298.73068a3.62422,3.62422,0,1,0,0,7.24844h73.52a3.62422,3.62422,0,1,0,0-7.24844Z" transform="translate(-227.69251 -178.86911)" fill="#fff"/></svg>
@@ -0,0 +1,161 @@
1
+ (function () {
2
+ // "hydrate" div.gallery with play/pause and nav behaviors
3
+ var process_gallery = function (g) {
4
+ var
5
+ // milliseconds to wait before switch to next slide
6
+ NEXT_SLIDE_TIMEOUT = 3000;
7
+
8
+ var
9
+ images_container = g.querySelector('.images'),
10
+
11
+ // images in this gallery
12
+ images = g.querySelectorAll('.images img'),
13
+
14
+ // container for nav buttons
15
+ gallery_nav = g.querySelector('nav'),
16
+
17
+ // clickable buttons, one per image
18
+ // computed below
19
+ navs = [],
20
+
21
+ // index of the currently selected image
22
+ selected_index = 0,
23
+
24
+ // play control consists of a label and a checkbox
25
+ // defer computing because nav innerHTML gets clobbered
26
+ play_checkbox,
27
+
28
+ // handle to setInterval
29
+ play_interval;
30
+
31
+ /*
32
+ +--------+--------+--------+
33
+ | image1 | image2 | image3 |
34
+ | |selected| |
35
+ +--------+--------+--------+
36
+ */
37
+
38
+ var adjust_height = function (index) {
39
+ images_container.style.height = images[index].offsetHeight + 'px';
40
+ }
41
+
42
+ // show image at index
43
+ // update nav controls accordingly
44
+ var select_image = function (index) {
45
+ if (selected_index === index) return;
46
+
47
+ var slide = function () {
48
+ images[selected_index].removeEventListener('transitionend', slide);
49
+
50
+ images[selected_index].classList.remove('transition');
51
+ images[index].classList.remove('transition');
52
+
53
+ navs[index].classList.add('selected');
54
+ navs[selected_index].classList.remove('selected');
55
+
56
+ selected_index = index;
57
+ }
58
+
59
+ images[selected_index].addEventListener('transitionend', slide);
60
+
61
+ if (index < selected_index) {
62
+ setTimeout(function () {
63
+ images[index].classList.remove('right');
64
+ images[index].classList.add('left');
65
+
66
+ adjust_height(index);
67
+
68
+ setTimeout(function () {
69
+ images[index].classList.add('transition');
70
+ images[selected_index].classList.add('transition');
71
+ images[index].classList.remove('left');
72
+ images[index].classList.add('center');
73
+ images[selected_index].classList.add('right');
74
+ images[selected_index].classList.remove('center');
75
+ },1)
76
+ },1)
77
+
78
+ } else {
79
+ setTimeout(function () {
80
+ images[index].classList.remove('left');
81
+ images[index].classList.add('right');
82
+
83
+ adjust_height(index);
84
+
85
+ setTimeout(function () {
86
+ images[index].classList.add('transition');
87
+ images[selected_index].classList.add('transition');
88
+ images[index].classList.remove('right');
89
+ images[index].classList.add('center');
90
+ images[selected_index].classList.add('left');
91
+ images[selected_index].classList.remove('center');
92
+ },1);
93
+ },1);
94
+
95
+ }
96
+ }
97
+
98
+ // show next image
99
+ var next_image = function () {
100
+ if (selected_index >= images.length-1) {
101
+ select_image(0);
102
+ } else {
103
+ select_image(selected_index+1);
104
+ }
105
+ }
106
+
107
+ // handler for nav buttons
108
+ // selects an image corresponding to the clicked nav button
109
+ var nav_to_image = function () {
110
+ select_image(Array.from(navs).indexOf(this));
111
+ }
112
+
113
+ // play/pause slideshow
114
+ var toggle_play = function () {
115
+ if (play_checkbox.checked===true) {
116
+ clearInterval(play_interval);
117
+ } else {
118
+ play_interval = setInterval(next_image, NEXT_SLIDE_TIMEOUT);
119
+ }
120
+ }
121
+
122
+ // build nav bullets
123
+ var navHtml = '';
124
+ for (var i=0; i<images.length; ++i) {
125
+ var image = images[i]
126
+ image.addEventListener('click', next_image)
127
+ navHtml += '<i class="' + (i===0? 'selected' : '') + '" data-target="' + image.id + '"></i>'
128
+ }
129
+ gallery_nav.innerHTML += navHtml;
130
+
131
+ // attach nav bullet listeners
132
+ navs = gallery_nav.querySelectorAll('i');
133
+ for (var i=0; i<navs.length; ++i) {
134
+ var nav = navs[i];
135
+ nav.addEventListener('click', nav_to_image)
136
+ }
137
+
138
+ // play button
139
+ play_checkbox = g.querySelector('.play input[type=checkbox]');
140
+ play_checkbox.addEventListener('change', toggle_play);
141
+
142
+ // resize image container when initial image loads
143
+ if (images[selected_index].complete) {
144
+ adjust_height(selected_index);
145
+ } else {
146
+ images[selected_index].addEventListener('load', function () {
147
+ adjust_height(selected_index);
148
+ });
149
+ images[selected_index].addEventListener('error', function() {
150
+ console.warn('error loading image', arguments, images[selected_index].src, images[selected_index])
151
+ });
152
+ }
153
+ }
154
+
155
+ var galleries = document.getElementsByClassName('gallery');
156
+
157
+ for (var i=0; i<galleries.length; ++i) {
158
+ var g = galleries[i];
159
+ process_gallery(g);
160
+ }
161
+ })();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-isabelline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18
4
+ version: 0.1.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rouslan Zenetl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-03 00:00:00.000000000 Z
11
+ date: 2020-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 2.0.2
39
+ version: 2.1.0
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 2.0.2
46
+ version: 2.1.0
47
47
  description:
48
48
  email:
49
49
  - isabelline@rzen.dev
@@ -58,6 +58,7 @@ files:
58
58
  - _includes/byline.html
59
59
  - _includes/disqus.html
60
60
  - _includes/footer.html
61
+ - _includes/gallery.html
61
62
  - _includes/google_analytics.html
62
63
  - _includes/head-meta.html
63
64
  - _includes/head.html
@@ -66,6 +67,7 @@ files:
66
67
  - _includes/post_index.html
67
68
  - _layouts/.DS_Store
68
69
  - _layouts/base.html
70
+ - _layouts/gallery.html
69
71
  - _layouts/page.html
70
72
  - _layouts/post.html
71
73
  - _layouts/tags.html
@@ -76,7 +78,17 @@ files:
76
78
  - _sass/_snackbar.scss
77
79
  - _sass/_syntax.scss
78
80
  - assets/.DS_Store
79
- - assets/blog/example1/Quarter_Horse_Buckskin.jpg
81
+ - assets/blog/example/Quarter_Horse_Buckskin.jpg
82
+ - assets/blog/example/gallery/1/lanius_isabellinus1.jpg
83
+ - assets/blog/example/gallery/Lanius_isabellinus1.jpg
84
+ - assets/blog/example/gallery/dusan-smetana-ah7KHxYg6Ow-unsplash.jpg
85
+ - assets/blog/example/gallery/jay-ruzesky-h13Y8vyIXNU-unsplash.jpg
86
+ - assets/blog/example/gallery/maurits-bausenhart-OkYjLpB2gzA-unsplash.jpg
87
+ - assets/blog/example/gallery/sneaky-elbow-h00rqvO5A-M-unsplash.jpg
88
+ - assets/blog/example/gallery2/Quarter_Horse_Buckskin.jpg
89
+ - assets/blog/example/gallery2/dusan-smetana-ah7KHxYg6Ow-unsplash.jpg
90
+ - assets/blog/example/gallery2/jay-ruzesky-h13Y8vyIXNU-unsplash.jpg
91
+ - assets/blog/getting-started/undraw_browsing_online_sr8c.svg
80
92
  - assets/css/style.scss
81
93
  - assets/favicon/README.md
82
94
  - assets/favicon/android-chrome-192x192.png
@@ -105,10 +117,11 @@ files:
105
117
  - assets/fonts/Noto Serif/ga6Iaw1J5X9T9RW6j9bNfFoWaDq8fMVxMw.woff2
106
118
  - assets/fonts/Noto Serif/ga6Iaw1J5X9T9RW6j9bNfFsWaDq8fMVxMw.woff2
107
119
  - assets/js/clipboard.js
120
+ - assets/js/gallery.js
108
121
  - assets/js/slides.js
109
122
  - assets/js/snackbar.js
110
123
  - index.html
111
- homepage: https://github.com/rzen/jekyll-theme-isabelline
124
+ homepage: https://git.rzen.dev/rzen/jekyll-theme-isabelline
112
125
  licenses:
113
126
  - MIT
114
127
  metadata:
@@ -128,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
141
  - !ruby/object:Gem::Version
129
142
  version: '0'
130
143
  requirements: []
131
- rubygems_version: 3.0.6
144
+ rubygems_version: 3.1.4
132
145
  signing_key:
133
146
  specification_version: 4
134
147
  summary: Simple clean mobile-friendly theme for long form note taking. Works for blogging