jekflix 3.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.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +125 -0
  4. data/_includes/author.html +87 -0
  5. data/_includes/comments.html +30 -0
  6. data/_includes/date.html +4 -0
  7. data/_includes/extra-css.html +0 -0
  8. data/_includes/extra-js.html +0 -0
  9. data/_includes/footer.html +91 -0
  10. data/_includes/head.html +97 -0
  11. data/_includes/header.html +27 -0
  12. data/_includes/links.html +9 -0
  13. data/_includes/loader.html +31 -0
  14. data/_includes/logo.html +3 -0
  15. data/_includes/menu.html +6 -0
  16. data/_includes/minutes-to-read.html +9 -0
  17. data/_includes/modal.html +35 -0
  18. data/_includes/new-post-tag.html +6 -0
  19. data/_includes/pagination-home.html +14 -0
  20. data/_includes/pagination-post.html +21 -0
  21. data/_includes/progress-bar.html +8 -0
  22. data/_includes/read-icon.html +3 -0
  23. data/_includes/recommendation.html +30 -0
  24. data/_includes/search.html +7 -0
  25. data/_includes/share.html +11 -0
  26. data/_includes/stats.html +12 -0
  27. data/_includes/subscription.html +1 -0
  28. data/_includes/svg-icons.html +1 -0
  29. data/_includes/time-bar.html +8 -0
  30. data/_includes/toc.html +1 -0
  31. data/_layouts/404.html +18 -0
  32. data/_layouts/author.html +68 -0
  33. data/_layouts/category.html +71 -0
  34. data/_layouts/compress.html +8 -0
  35. data/_layouts/contact.html +94 -0
  36. data/_layouts/default.html +17 -0
  37. data/_layouts/home.html +187 -0
  38. data/_layouts/main.html +28 -0
  39. data/_layouts/message-sent.html +18 -0
  40. data/_layouts/minimal.html +18 -0
  41. data/_layouts/page.html +11 -0
  42. data/_layouts/post.html +154 -0
  43. data/_layouts/search.html +15 -0
  44. data/_layouts/tags.html +38 -0
  45. data/_sass/_animations.scss +65 -0
  46. data/_sass/_author.scss +91 -0
  47. data/_sass/_elements.scss +3 -0
  48. data/_sass/_footer.scss +98 -0
  49. data/_sass/_form.scss +69 -0
  50. data/_sass/_functions.scss +3 -0
  51. data/_sass/_header.scss +150 -0
  52. data/_sass/_hero.scss +108 -0
  53. data/_sass/_highlight.scss +140 -0
  54. data/_sass/_home.scss +218 -0
  55. data/_sass/_icons.scss +45 -0
  56. data/_sass/_include-media.scss +569 -0
  57. data/_sass/_menu.scss +90 -0
  58. data/_sass/_mixins.scss +51 -0
  59. data/_sass/_modal.scss +154 -0
  60. data/_sass/_no-js.scss +9 -0
  61. data/_sass/_normalize.scss +238 -0
  62. data/_sass/_pagination.scss +90 -0
  63. data/_sass/_post.scss +722 -0
  64. data/_sass/_search.scss +138 -0
  65. data/_sass/_share.scss +37 -0
  66. data/_sass/_staff.scss +38 -0
  67. data/_sass/_theme.scss +7 -0
  68. data/_sass/_typo.scss +7 -0
  69. data/_sass/_variables.scss +24 -0
  70. data/_sass/jekflix.scss +1 -0
  71. data/_sass/main.scss +25 -0
  72. data/_sass/preview.scss +310 -0
  73. metadata +199 -0
@@ -0,0 +1,21 @@
1
+ <!-- Pagination links -->
2
+ {% if paginator.page_trail %}
3
+ {% assign next_posts = site.posts | where_exp:"post","post.is_generated != true" | where_exp:"post","post.path != page.path" | where_exp:"post","post.date <= page.date" %}
4
+ <div class="pagination pagination-post {{ include.extra_classes }}">
5
+ {% if paginator.is_last != true %}
6
+ <a href="{{ paginator.next_page_path }}">
7
+ {% if include.progressBar %}
8
+ {% include progress-bar.html %}
9
+ {% endif %}
10
+ <span class="text">{{ site.translations.pagination.next_page | default: "Next Page" }} <svg class="arrow"><use xlink:href="#icon-arrow-right"></use></svg></span>
11
+ </a>
12
+ {% else if next_posts.first %}
13
+ <a href="{{ next_posts.first.url }}">
14
+ {% if include.progressBar %}
15
+ {% include progress-bar.html finished=true %}
16
+ {% endif %}
17
+ <span class="text">{{ site.translations.pagination.next_post | default: "Next Post" }} <svg class="arrow"><use xlink:href="#icon-arrow-right"></use></svg></span>
18
+ </a>
19
+ {% endif %}
20
+ </div>
21
+ {% endif %}
@@ -0,0 +1,8 @@
1
+ {% if paginator.total_pages > 1 %}
2
+ <div class="progress-bar {% if include.finished %}finished{% endif %}">
3
+ {% for i in (1..paginator.total_pages) %}
4
+ <div class="bar {% if i <= paginator.page %}completed{% endif %}"></div>
5
+ {% endfor %}
6
+ <svg class="star"><use xlink:href="#icon-star"></use></svg>
7
+ </div>
8
+ {% endif %}
@@ -0,0 +1,3 @@
1
+ <div class="read-icon">
2
+ <svg><use xlink:href="#icon-read"></use></svg>
3
+ </div>
@@ -0,0 +1,30 @@
1
+ <div class="recommendation">
2
+ <div class="message">
3
+ <strong>{{ site.translations.recommendation.text | default: "Why don't you read something next?" }}</strong>
4
+ <div>
5
+ <button>
6
+ <svg><use xlink:href="#icon-arrow-right"></use></svg>
7
+ <span>{{ site.translations.recommendation.back_btn | default: "Go back to top" }}</span>
8
+ </button>
9
+ </div>
10
+ </div>
11
+ {% if page.next %}
12
+ {% assign recommendation = page.next %}
13
+ {% else %}
14
+ {% assign next_posts = site.posts | where_exp:"post","post.is_generated != true" | where_exp:"post","post.path != page.path" %}
15
+ {% assign shuffled_array = next_posts | shuffle %}
16
+ {% assign recommendation = shuffled_array.first %}
17
+ {% endif %}
18
+ <a href="{{ recommendation.url | prepend: site.baseurl }}" class="post-preview">
19
+ <div class="image">
20
+ {% if recommendation.optimized_image %}
21
+ <img src="{{ recommendation.optimized_image }}">
22
+ {% elsif recommendation.image %}
23
+ <img src="{{ recommendation.image }}">
24
+ {% else %}
25
+ <img src="/assets/img/off.jpg">
26
+ {% endif %}
27
+ </div>
28
+ <h3 class="title">{{ recommendation.title }}</h3>
29
+ </a>
30
+ </div>
@@ -0,0 +1,7 @@
1
+ <div class="search-wrapper">
2
+ <div class="search-form">
3
+ <input type="text" class="search-field" placeholder="{{ site.translations.text.search | default: 'Search' }}">
4
+ <svg class="icon-remove-sign"><use xlink:href="#icon-close"></use></svg>
5
+ <ul class="search-results search-list"></ul>
6
+ </div>
7
+ </div>
@@ -0,0 +1,11 @@
1
+ <section class="share">
2
+ <h3>{{ site.translations.text.share | default: "Share" }}</h3>
3
+ <a aria-label="{{ site.translations.button.share_on_twitter | default: 'Share on Twitter' }}" href="https://twitter.com/intent/tweet?text=&quot;{{ page.description }}&quot;%20{{ site.url }}{{ page.url }}%20via%20&#64;{{ site.twitter_username }}&hashtags={% for tag in page.tags %}{{tag}},{% endfor %}"
4
+ onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;" title="{{ site.translations.button.share_on_twitter | default: 'Share on Twitter' }}">
5
+ <svg class="icon icon-twitter"><use xlink:href="#icon-twitter"></use></svg>
6
+ </a>
7
+ <a aria-label="{{ site.translations.button.share_on_facebook | default: 'Share on Facebook' }}" href="https://www.facebook.com/sharer/sharer.php?u={{ site.url }}{{ page.url }}"
8
+ onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;" title="{{ site.translations.button.share_on_facebook | default: 'Share on Facebook' }}">
9
+ <svg class="icon icon-facebook"><use xlink:href="#icon-facebook"></use></svg>
10
+ </a>
11
+ </section>
@@ -0,0 +1,12 @@
1
+ <script>
2
+ var host = window.location.hostname;
3
+ if (host != 'localhost') {
4
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
5
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
6
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
7
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
8
+ ga('create', '{{ site.google_analytics }}', 'auto');
9
+ ga('send', 'pageview');
10
+ }
11
+ </script>
12
+
@@ -0,0 +1 @@
1
+ <!-- Add your newsletter subscription form here -->
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" display="none" version="1.1"><defs><symbol id="icon-menu" viewBox="0 0 1024 1024"><path class="path1" d="M128 213.333h768q17.667 0 30.167 12.5t12.5 30.167-12.5 30.167-30.167 12.5h-768q-17.667 0-30.167-12.5t-12.5-30.167 12.5-30.167 30.167-12.5zM128 725.333h768q17.667 0 30.167 12.5t12.5 30.167-12.5 30.167-30.167 12.5h-768q-17.667 0-30.167-12.5t-12.5-30.167 12.5-30.167 30.167-12.5zM128 469.333h768q17.667 0 30.167 12.5t12.5 30.167-12.5 30.167-30.167 12.5h-768q-17.667 0-30.167-12.5t-12.5-30.167 12.5-30.167 30.167-12.5z"/></symbol><symbol id="icon-search" viewBox="0 0 951 1024"><path class="path1" d="M658.286 475.429q0-105.714-75.143-180.857t-180.857-75.143-180.857 75.143-75.143 180.857 75.143 180.857 180.857 75.143 180.857-75.143 75.143-180.857zM950.857 950.857q0 29.714-21.714 51.429t-51.429 21.714q-30.857 0-51.429-21.714l-196-195.429q-102.286 70.857-228 70.857-81.714 0-156.286-31.714t-128.571-85.714-85.714-128.571-31.714-156.286 31.714-156.286 85.714-128.571 128.571-85.714 156.286-31.714 156.286 31.714 128.571 85.714 85.714 128.571 31.714 156.286q0 125.714-70.857 228l196 196q21.143 21.143 21.143 51.429z"/></symbol><symbol id="icon-close" viewBox="0 0 1000 1000"><path d="M969.8,870.3c27,27.7,27,71.8,0,99.1C955.7,983,937.9,990,920,990c-17.9,0-35.7-7-49.7-20.7L500,599L129.6,969.4C115.6,983,97.8,990,79.9,990s-35.7-7-49.7-20.7c-27-27.3-27-71.4,0-99.1L400.9,500L30.3,129.3c-27-27.3-27-71.4,0-99.1c27.3-27,71.8-27,99.4,0L500,400.9L870.4,30.2c27.7-27,71.8-27,99.4,0c27,27.7,27,71.8,0,99.1L599.1,500L969.8,870.3z"/></symbol><symbol id="icon-twitter" viewBox="0 0 951 1024"><path class="path1" d="M925.714 233.143q-38.286 56-92.571 95.429 0.571 8 0.571 24 0 74.286-21.714 148.286t-66 142-105.429 120.286-147.429 83.429-184.571 31.143q-154.857 0-283.429-82.857 20 2.286 44.571 2.286 128.571 0 229.143-78.857-60-1.143-107.429-36.857t-65.143-91.143q18.857 2.857 34.857 2.857 24.571 0 48.571-6.286-64-13.143-106-63.714t-42-117.429v-2.286q38.857 21.714 83.429 23.429-37.714-25.143-60-65.714t-22.286-88q0-50.286 25.143-93.143 69.143 85.143 168.286 136.286t212.286 56.857q-4.571-21.714-4.571-42.286 0-76.571 54-130.571t130.571-54q80 0 134.857 58.286 62.286-12 117.143-44.571-21.143 65.714-81.143 101.714 53.143-5.714 106.286-28.571z"/></symbol><symbol id="icon-facebook" viewBox="0 0 585 1024"><path class="path1" d="M548 6.857v150.857h-89.714q-49.143 0-66.286 20.571t-17.143 61.714v108h167.429l-22.286 169.143h-145.143v433.714h-174.857v-433.714h-145.714v-169.143h145.714v-124.571q0-106.286 59.429-164.857t158.286-58.571q84 0 130.286 6.857z"/></symbol><symbol id="icon-clock" viewBox="0 0 1000 1000"><path d="M500,10C229.8,10,10,229.8,10,500c0,270.2,219.8,490,490,490c270.2,0,490-219.8,490-490C990,229.8,770.2,10,500,10z M500,910.2c-226.2,0-410.2-184-410.2-410.2c0-226.2,184-410.2,410.2-410.2c226.2,0,410.2,184,410.2,410.2C910.2,726.1,726.2,910.2,500,910.2z M753.1,374c8.2,11.9,5.2,28.1-6.6,36.3L509.9,573.7c-4.4,3.1-9.6,4.6-14.8,4.6c-4.1,0-8.3-1-12.1-3c-8.6-4.5-14-13.4-14-23.1V202.5c0-14.4,11.7-26.1,26.1-26.1c14.4,0,26.1,11.7,26.1,26.1v300l195.6-135.1C728.7,359.2,744.9,362.1,753.1,374z"/></symbol><symbol id="icon-calendar" viewBox="0 0 1000 1000"><path d="M920,500v420H80V500H920 M990,430H10v490c0,38.7,31.3,70,70,70h840c38.7,0,70-31.3,70-70V430L990,430z"/><path d="M850,80v105c0,57.9-47.2,105-105,105c-58,0-105-47.1-105-105V80H360v105c0,57.9-47.2,105-105,105c-58,0-105-47.1-105-105V80C72.8,80,10,142.7,10,220v140h980V220C990,142.7,927.2,80,850,80z"/><path d="M255,10c-19.3,0-35,15.8-35,35v140c0,19.2,15.7,35,35,35c19.3,0,35-15.8,35-35V45C290,25.8,274.3,10,255,10z"/><path d="M745,10c-19.3,0-35,15.8-35,35v140c0,19.2,15.7,35,35,35c19.3,0,35-15.8,35-35V45C780,25.8,764.3,10,745,10z"/></symbol><symbol id="icon-github" viewBox="0 0 12 14"><path d="M6 1q1.633 0 3.012 0.805t2.184 2.184 0.805 3.012q0 1.961-1.145 3.527t-2.957 2.168q-0.211 0.039-0.312-0.055t-0.102-0.234q0-0.023 0.004-0.598t0.004-1.051q0-0.758-0.406-1.109 0.445-0.047 0.801-0.141t0.734-0.305 0.633-0.52 0.414-0.82 0.16-1.176q0-0.93-0.617-1.609 0.289-0.711-0.062-1.594-0.219-0.070-0.633 0.086t-0.719 0.344l-0.297 0.187q-0.727-0.203-1.5-0.203t-1.5 0.203q-0.125-0.086-0.332-0.211t-0.652-0.301-0.664-0.105q-0.352 0.883-0.062 1.594-0.617 0.68-0.617 1.609 0 0.664 0.16 1.172t0.41 0.82 0.629 0.523 0.734 0.305 0.801 0.141q-0.305 0.281-0.383 0.805-0.164 0.078-0.352 0.117t-0.445 0.039-0.512-0.168-0.434-0.488q-0.148-0.25-0.379-0.406t-0.387-0.187l-0.156-0.023q-0.164 0-0.227 0.035t-0.039 0.090 0.070 0.109 0.102 0.094l0.055 0.039q0.172 0.078 0.34 0.297t0.246 0.398l0.078 0.18q0.102 0.297 0.344 0.48t0.523 0.234 0.543 0.055 0.434-0.027l0.18-0.031q0 0.297 0.004 0.691t0.004 0.426q0 0.141-0.102 0.234t-0.312 0.055q-1.812-0.602-2.957-2.168t-1.145-3.527q0-1.633 0.805-3.012t2.184-2.184 3.012-0.805zM2.273 9.617q0.023-0.055-0.055-0.094-0.078-0.023-0.102 0.016-0.023 0.055 0.055 0.094 0.070 0.047 0.102-0.016zM2.516 9.883q0.055-0.039-0.016-0.125-0.078-0.070-0.125-0.023-0.055 0.039 0.016 0.125 0.078 0.078 0.125 0.023zM2.75 10.234q0.070-0.055 0-0.148-0.062-0.102-0.133-0.047-0.070 0.039 0 0.141t0.133 0.055zM3.078 10.562q0.062-0.062-0.031-0.148-0.094-0.094-0.156-0.023-0.070 0.062 0.031 0.148 0.094 0.094 0.156 0.023zM3.523 10.758q0.023-0.086-0.102-0.125-0.117-0.031-0.148 0.055t0.102 0.117q0.117 0.047 0.148-0.047zM4.016 10.797q0-0.102-0.133-0.086-0.125 0-0.125 0.086 0 0.102 0.133 0.086 0.125 0 0.125-0.086zM4.469 10.719q-0.016-0.086-0.141-0.070-0.125 0.023-0.109 0.117t0.141 0.062 0.109-0.109z"></path></symbol><symbol id="icon-medium" viewBox="0 0 1000 1000"><path d="M336.5,240.2v641.5c0,9.1-2.3,16.9-6.8,23.2s-11.2,9.6-20,9.6c-6.2,0-12.2-1.5-18-4.4L37.3,782.7c-7.7-3.6-14.1-9.8-19.4-18.3S10,747.4,10,739V115.5c0-7.3,1.8-13.5,5.5-18.6c3.6-5.1,8.9-7.7,15.9-7.7c5.1,0,13.1,2.7,24.1,8.2l279.5,140C335.9,238.6,336.5,239.5,336.5,240.2L336.5,240.2z M371.5,295.5l292,473.6l-292-145.5V295.5z M990,305.3v576.4c0,9.1-2.6,16.5-7.7,22.1c-5.1,5.7-12,8.5-20.8,8.5s-17.3-2.4-25.7-7.1L694.7,784.9L990,305.3z M988.4,239.7c0,1.1-46.8,77.6-140.3,229.4C754.6,621,699.8,709.8,683.8,735.7L470.5,389l177.2-288.2c6.2-10.2,15.7-15.3,28.4-15.3c5.1,0,9.8,1.1,14.2,3.3l295.9,147.7C987.6,237.1,988.4,238.2,988.4,239.7L988.4,239.7z"/></symbol><symbol id="icon-instagram" viewBox="0 0 489.84 489.84"><path d="M249.62,50.46c65.4,0,73.14.25,99,1.43C372.47,53,385.44,57,394.07,60.32a75.88,75.88,0,0,1,28.16,18.32,75.88,75.88,0,0,1,18.32,28.16c3.35,8.63,7.34,21.6,8.43,45.48,1.18,25.83,1.43,33.57,1.43,99s-0.25,73.14-1.43,99c-1.09,23.88-5.08,36.85-8.43,45.48a81.11,81.11,0,0,1-46.48,46.48c-8.63,3.35-21.6,7.34-45.48,8.43-25.82,1.18-33.57,1.43-99,1.43s-73.15-.25-99-1.43c-23.88-1.09-36.85-5.08-45.48-8.43A75.88,75.88,0,0,1,77,423.86,75.88,75.88,0,0,1,58.69,395.7c-3.35-8.63-7.34-21.6-8.43-45.48-1.18-25.83-1.43-33.57-1.43-99s0.25-73.14,1.43-99c1.09-23.88,5.08-36.85,8.43-45.48A75.88,75.88,0,0,1,77,78.64a75.88,75.88,0,0,1,28.16-18.32c8.63-3.35,21.6-7.34,45.48-8.43,25.83-1.18,33.57-1.43,99-1.43m0-44.13c-66.52,0-74.86.28-101,1.47s-43.87,5.33-59.45,11.38A120.06,120.06,0,0,0,45.81,47.44,120.06,120.06,0,0,0,17.56,90.82C11.5,106.4,7.36,124.2,6.17,150.27s-1.47,34.46-1.47,101,0.28,74.86,1.47,101,5.33,43.87,11.38,59.45a120.06,120.06,0,0,0,28.25,43.38,120.06,120.06,0,0,0,43.38,28.25c15.58,6.05,33.38,10.19,59.45,11.38s34.46,1.47,101,1.47,74.86-.28,101-1.47,43.87-5.33,59.45-11.38a125.24,125.24,0,0,0,71.63-71.63c6.05-15.58,10.19-33.38,11.38-59.45s1.47-34.46,1.47-101-0.28-74.86-1.47-101-5.33-43.87-11.38-59.45a120.06,120.06,0,0,0-28.25-43.38,120.06,120.06,0,0,0-43.38-28.25C394.47,13.13,376.67,9,350.6,7.8s-34.46-1.47-101-1.47h0Z" transform="translate(-4.7 -6.33)" /><path d="M249.62,125.48A125.77,125.77,0,1,0,375.39,251.25,125.77,125.77,0,0,0,249.62,125.48Zm0,207.41a81.64,81.64,0,1,1,81.64-81.64A81.64,81.64,0,0,1,249.62,332.89Z" transform="translate(-4.7 -6.33)"/><circle cx="375.66" cy="114.18" r="29.39" /></symbol><symbol id="icon-linkedin" viewBox="0 0 12 14"><path d="M2.727 4.883v7.742h-2.578v-7.742h2.578zM2.891 2.492q0.008 0.57-0.395 0.953t-1.059 0.383h-0.016q-0.641 0-1.031-0.383t-0.391-0.953q0-0.578 0.402-0.957t1.051-0.379 1.039 0.379 0.398 0.957zM12 8.187v4.437h-2.57v-4.141q0-0.82-0.316-1.285t-0.988-0.465q-0.492 0-0.824 0.27t-0.496 0.668q-0.086 0.234-0.086 0.633v4.32h-2.57q0.016-3.117 0.016-5.055t-0.008-2.313l-0.008-0.375h2.57v1.125h-0.016q0.156-0.25 0.32-0.438t0.441-0.406 0.68-0.34 0.895-0.121q1.336 0 2.148 0.887t0.813 2.598z"></path></symbol><symbol id="icon-heart" viewBox="0 0 34 30"><path d="M17,29.7 L16.4,29.2 C3.5,18.7 0,15 0,9 C0,4 4,0 9,0 C13.1,0 15.4,2.3 17,4.1 C18.6,2.3 20.9,0 25,0 C30,0 34,4 34,9 C34,15 30.5,18.7 17.6,29.2 L17,29.7 Z M9,2 C5.1,2 2,5.1 2,9 C2,14.1 5.2,17.5 17,27.1 C28.8,17.5 32,14.1 32,9 C32,5.1 28.9,2 25,2 C21.5,2 19.6,4.1 18.1,5.8 L17,7.1 L15.9,5.8 C14.4,4.1 12.5,2 9,2 Z" id="Shape"></path></symbol><symbol id="icon-arrow-right" viewBox="0 0 25.452 25.452"><path d="M4.471,24.929v-2.004l12.409-9.788c0.122-0.101,0.195-0.251,0.195-0.411c0-0.156-0.073-0.31-0.195-0.409L4.471,2.526V0.522c0-0.2,0.115-0.384,0.293-0.469c0.18-0.087,0.396-0.066,0.552,0.061l15.47,12.202c0.123,0.1,0.195,0.253,0.195,0.409c0,0.16-0.072,0.311-0.195,0.411L5.316,25.34c-0.155,0.125-0.372,0.147-0.552,0.061C4.586,25.315,4.471,25.13,4.471,24.929z"/></symbol><symbol id="icon-star" viewBox="0 0 48 48"><path fill="currentColor" d="M44,24c0,11.045-8.955,20-20,20S4,35.045,4,24S12.955,4,24,4S44,12.955,44,24z"/><path fill="#ffffff" d="M24,11l3.898,7.898l8.703,1.301l-6.301,6.102l1.5,8.699L24,30.898L16.199,35l1.5-8.699l-6.301-6.102 l8.703-1.301L24,11z"/></symbol><symbol id="icon-read" viewBox="0 0 32 32"><path fill="currentColor" d="M29,4H3C1.343,4,0,5.343,0,7v18c0,1.657,1.343,3,3,3h10c0,0.552,0.448,1,1,1h4c0.552,0,1-0.448,1-1h10 c1.657,0,3-1.343,3-3V7C32,5.343,30.657,4,29,4z M29,5v20H18.708c-0.618,0-1.236,0.146-1.789,0.422l-0.419,0.21V5H29z M15.5,5 v20.632l-0.419-0.21C14.528,25.146,13.91,25,13.292,25H3V5H15.5z M31,25c0,1.103-0.897,2-2,2H18v1h-4v-1H3c-1.103,0-2-0.897-2-2V7 c0-0.737,0.405-1.375,1-1.722V25c0,0.552,0.448,1,1,1h10.292c0.466,0,0.925,0.108,1.342,0.317l0.919,0.46 c0.141,0.07,0.294,0.106,0.447,0.106c0.153,0,0.306-0.035,0.447-0.106l0.919-0.46C17.783,26.108,18.242,26,18.708,26H29 c0.552,0,1-0.448,1-1V5.278C30.595,5.625,31,6.263,31,7V25z M6,12.5C6,12.224,6.224,12,6.5,12h5c0.276,0,0.5,0.224,0.5,0.5 S11.776,13,11.5,13h-5C6.224,13,6,12.776,6,12.5z M6,14.5C6,14.224,6.224,14,6.5,14h5c0.276,0,0.5,0.224,0.5,0.5S11.776,15,11.5,15 h-5C6.224,15,6,14.776,6,14.5z M6,16.5C6,16.224,6.224,16,6.5,16h5c0.276,0,0.5,0.224,0.5,0.5S11.776,17,11.5,17h-5 C6.224,17,6,16.776,6,16.5z M20,12.5c0-0.276,0.224-0.5,0.5-0.5h5c0.276,0,0.5,0.224,0.5,0.5S25.776,13,25.5,13h-5 C20.224,13,20,12.776,20,12.5z M20,14.5c0-0.276,0.224-0.5,0.5-0.5h5c0.276,0,0.5,0.224,0.5,0.5S25.776,15,25.5,15h-5 C20.224,15,20,14.776,20,14.5z M20,16.5c0-0.276,0.224-0.5,0.5-0.5h5c0.276,0,0.5,0.224,0.5,0.5S25.776,17,25.5,17h-5 C20.224,17,20,16.776,20,16.5z"></path></symbol></defs></svg>
@@ -0,0 +1,8 @@
1
+ <div class="time-bar" data-minutes="{{ totalMinutes }}">
2
+ <span class="time-completed"></span>
3
+ <span class="time-remaining"></span>
4
+ <div class="bar">
5
+ <span class="completed" style="width:0%;"></span>
6
+ <span class="remaining" style="width:100%;"></span>
7
+ </div>
8
+ </div>
@@ -0,0 +1 @@
1
+ <!-- Add your table of contents here -->
data/_layouts/404.html ADDED
@@ -0,0 +1,18 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <style type="text/css" media="screen">
6
+ .container {
7
+ margin: 0px auto;
8
+ max-width: 600px;
9
+ text-align: center;
10
+ padding-top: 60px;
11
+ }
12
+ </style>
13
+
14
+ <div class="container">
15
+ <img src="/assets/img/404.gif" width="100%" alt="{{ site.translations.error_404.image_alt | default: '404 - Page not found' }}">
16
+ <p><strong>{{ site.translations.error_404.title | default: "Page not found :(" }}</strong></p>
17
+ <p>{{ site.translations.error_404.message | default: "I'm sorry. We couldn't find the page you are looking for." }}</p>
18
+ </div>
@@ -0,0 +1,68 @@
1
+ ---
2
+ layout: page
3
+ ---
4
+
5
+ <div class="staff">
6
+ {% if page.photo %}
7
+ <img class="img-rounded" src="{{ page.photo }}" alt="{{ author.display_name }}">
8
+ {% else %}
9
+ <img class="img-rounded" src="/assets/img/user.jpg" alt="{{ author.display_name }}">
10
+ {% endif %}
11
+
12
+ <h1 class="name">{{ page.display_name }}</h1>
13
+
14
+ {% if page.position %}
15
+ <h2 class="position">{{ page.position }}</h2>
16
+ {% endif %}
17
+
18
+ <p>{{ page.bio }}</p>
19
+
20
+ <h2>Posts</h2>
21
+
22
+ <ul>
23
+ {% assign filtered_posts = site.posts | where: 'author', page.name | where_exp:"post","post.is_generated != true" %}
24
+ {% for post in filtered_posts %}
25
+ <li>
26
+ <a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a>
27
+ </li>
28
+ {% endfor %}
29
+ </ul>
30
+ </div>
31
+
32
+ {% assign author_urls = '' %}
33
+ {% if page.github_username %}
34
+ {% assign author_urls = author_urls | append: '"https://github.com/' | append: page.github_username | append: '",' %}
35
+ {% endif %}
36
+ {% if page.facebook_username %}
37
+ {% assign author_urls = author_urls | append: '"https://www.facebook.com/' | append: page.facebook_username | append: '",' %}
38
+ {% endif %}
39
+ {% if page.twitter_username %}
40
+ {% assign author_urls = author_urls | append: '"https://twitter.com/' | append: page.twitter_username | append: '",' %}
41
+ {% endif %}
42
+ {% if page.medium_username %}
43
+ {% assign author_urls = author_urls | append: '"https://medium.com/@' | append: page.medium_username | append: '",' %}
44
+ {% endif %}
45
+ {% if page.instagram_username %}
46
+ {% assign author_urls = author_urls | append: '"https://www.instagram.com/' | append: page.instagram_username | append: '",' %}
47
+ {% endif %}
48
+ {% if page.linkedin_username %}
49
+ {% assign author_urls = author_urls | append: '"https://www.linkedin.com/in/' | append: page.linkedin_username | append: '",' %}
50
+ {% endif %}
51
+
52
+ <script type="application/ld+json">
53
+ {
54
+ "@context": "http://schema.org",
55
+ "@type": "Person",
56
+ "name": "{{ page.display_name }}",
57
+ {% if page.photo %}
58
+ "image": "{{ page.photo }}",
59
+ {% else %}
60
+ "image": {{ "/assets/img/user.jpg" | prepend: site.baseurl | prepend: site.url }},
61
+ {% endif %}
62
+ "jobTitle": "{{ page.position }}",
63
+ "url": "{{ page.url | prepend: site.baseurl | prepend: site.url }}",
64
+ "sameAs": [
65
+ {{ author_urls | split: "," | join: "," }}
66
+ ]
67
+ }
68
+ </script>
@@ -0,0 +1,71 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ site.language }}" class="no-js">
3
+ {% include head.html %}
4
+ <body class="main-page has-push-menu">
5
+ {% include svg-icons.html %}
6
+ {% include header.html %}
7
+ <section class="content">
8
+ <main class="home" id="post" role="main">
9
+ <h1 class="title-category">/{{page.title}}</h1>
10
+ <div id="grid" class="row flex-grid">
11
+ {% assign posts = site.posts | where_exp:"post","post.is_generated != true" %}
12
+ {% for post in posts %}
13
+ {% if post.category == page.slug %}
14
+ <article class="box-item">
15
+ <div class="box-body">
16
+ {% if post.image %}
17
+ <a class="cover" href="{{ post.url | prepend: site.baseurl }}">
18
+ {% include loader.html %}
19
+ {% if post.optimized_image %}
20
+ <img src="/assets/img/placeholder.png" width="100%" data-url="{{ post.optimized_image }}" class="preload">
21
+ <noscript>
22
+ <img src="{{ post.optimized_image }}" width="100%">
23
+ </noscript>
24
+ {% elsif post.image %}
25
+ <img src="/assets/img/placeholder.png" width="100%" data-url="{{ post.image }}" class="preload">
26
+ <noscript>
27
+ <img src="{{ post.image }}" width="100%">
28
+ </noscript>
29
+ {% else %}
30
+ <img src="/assets/img/placeholder.png" width="100%" data-url="/assets/img/off.jpg" class="preload">
31
+ <noscript>
32
+ <img src="/assets/img/off.jpg" width="100%">
33
+ </noscript>
34
+ {% endif %}
35
+ {% include new-post-tag.html date=post.date %}
36
+ {% include read-icon.html %}
37
+ </a>
38
+ {% endif %}
39
+ <div class="box-info">
40
+ <time datetime="{{ post.date | date_to_xmlschema }}" class="date">
41
+ {% include date.html date=post.date %}
42
+ </time>
43
+ <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">
44
+ <h2 class="post-title">
45
+ {{ post.title }}
46
+ </h2>
47
+ </a>
48
+ <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">
49
+ <p class="description">{{ post.description }}</p>
50
+ </a>
51
+ <div class="tags">
52
+ {% for tag in post.tags %}
53
+ {% if tag != "" %}
54
+ <a href="{{ site.baseurl}}/tags/#{{tag | slugify }}">#{{ tag }}</a>
55
+ {% endif %}
56
+ {% endfor %}
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </article>
61
+ {% endif %}
62
+ {% endfor %}
63
+ </div>
64
+ </main>
65
+ </section>
66
+ {% include footer.html %}
67
+ </body>
68
+ </html>
69
+
70
+
71
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ # Jekyll layout that compresses HTML
3
+ # v1.4.0
4
+ # http://jch.penibelst.de/
5
+ # © 2014–2015 Anatol Broder
6
+ # MIT License
7
+ ---
8
+ {% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% case _pres.size %}{% when 2 %}{% capture _content %}{{ _content }}<pre{{ _pres.first }}</pre>{{ _pres.last | split: " " | join: " " }}{% endcapture %}{% when 1 %}{% capture _content %}{{ _content }}{{ _pres.last | split: " " | join: " " }}{% endcapture %}{% endcase %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% assign _comment_befores = _content | split: _comments.first %}{% for _comment_before in _comment_befores %}{% assign _comment_content = _comment_before | split: _comments.last | first %}{% if _comment_content %}{% capture _comment %}{{ _comments.first }}{{ _comment_content }}{{ _comments.last }}{% endcapture %}{% assign _content = _content | remove: _comment %}{% endif %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
@@ -0,0 +1,94 @@
1
+ ---
2
+ layout: page
3
+ ---
4
+
5
+ {% if site.email %}
6
+
7
+ <style type="text/css" media="screen">
8
+ .container {
9
+ margin: 0px auto;
10
+ max-width: 600px;
11
+ }
12
+ </style>
13
+
14
+ <div class="container">
15
+
16
+ <h2>{{ site.translations.contact.title | default: "Talk to me" }}</h2>
17
+
18
+ <div id="form" class="contact-form">
19
+ <form accept-charset="UTF-8" method="POST" action="https://formspree.io/{{ site.email }}" v-on:submit.prevent="validateBeforeSubmit" ref="contact">
20
+ <fieldset>
21
+ <input type="hidden" name="_subject" value="{{ site.translations.contact.subject | default: 'New contact!' }}" />
22
+ <input type="hidden" name="_next" value="{{ site.url }}{{ site.sent_message_url }}" />
23
+ <input type="hidden" name="_language" value="{{ site.language }}" />
24
+
25
+ <input type="text" name="name" placeholder="{{ site.translations.contact.placeholders.name | default: 'Your name' }}" v-validate="'required'"
26
+ :class="{ 'has-error': errors.has('name') }">
27
+ <span v-if="errors.has('name')" v-cloak>${ errors.first('name') }</span>
28
+
29
+ <input type="text" name="email" placeholder="{{ site.translations.contact.placeholders.email | default: 'Your email' }}" v-validate="'required|email'"
30
+ :class="{ 'has-error': errors.has('email') }">
31
+ <span v-if="errors.has('email')" v-cloak>${ errors.first('email') }</span>
32
+
33
+ <textarea name="message" onkeyup="adjust_textarea(this)" placeholder="{{ site.translations.contact.placeholders.message | default: 'Your message' }}" v-validate="'required'"
34
+ :class="{ 'has-error': errors.has('message') }"></textarea>
35
+ <span v-if="errors.has('message')" v-cloak>${ errors.first('message') }</span>
36
+
37
+ <button type="submit">{{ site.translations.contact.submit_btn | default: "Send" }}</button>
38
+ </fieldset>
39
+ </form>
40
+ </div>
41
+
42
+ </div>
43
+
44
+ <script type="text/javascript">
45
+ function adjust_textarea(h) {
46
+ h.style.height = "200px";
47
+ h.style.height = (h.scrollHeight)+"px";
48
+ }
49
+ </script>
50
+
51
+ <script src="https://unpkg.com/vue@2.4.2"></script>
52
+ <script src="https://unpkg.com/vee-validate@2.0.0-rc.8"></script>
53
+ <script type="text/javascript">
54
+ Vue.use(VeeValidate);
55
+
56
+ const dictionary = {
57
+ {{ site.translations.contact.errors.locale | default: 'en' }}: {
58
+ custom: {
59
+ name: {
60
+ required: "{{ site.translations.contact.errors.empty_name | default: 'Name is required' }}"
61
+ },
62
+ email: {
63
+ required: "{{ site.translations.contact.errors.empty_email | default: 'Email is required' }}",
64
+ email: "{{ site.translations.contact.errors.invalid_email | default: 'Email is invalid' }}"
65
+ },
66
+ message: {
67
+ required: "{{ site.translations.contact.errors.empty_message | default: 'Message is required' }}"
68
+ }
69
+ }
70
+ }
71
+ };
72
+
73
+ VeeValidate.Validator.updateDictionary(dictionary);
74
+ VeeValidate.Validator.setLocale("{{ site.translations.contact.errors.locale | default: 'en' }}");
75
+
76
+ new Vue({
77
+ el: '#form',
78
+ delimiters: ['${', '}'],
79
+ methods: {
80
+ validateBeforeSubmit: function () {
81
+ this.$validator.validateAll();
82
+ if (!this.errors.any()) {
83
+ this.$refs.contact.submit();
84
+ }
85
+ }
86
+ }
87
+ });
88
+ </script>
89
+
90
+ {% else %}
91
+
92
+ <script>window.location = "{% if site.url == '' and site.baseurl == '' %}/{% else %}{{ site.url }}{{ site.baseurl }}{% endif %}";</script>
93
+
94
+ {% endif %}
@@ -0,0 +1,17 @@
1
+ ---
2
+ layout: compress
3
+ ---
4
+
5
+ <!DOCTYPE html>
6
+ <html lang="{{ site.language }}" class="no-js">
7
+ {% include head.html %}
8
+ <body class="has-push-menu">
9
+ {% include svg-icons.html %}
10
+ {% include header.html %}
11
+ <section class="content">
12
+ {{ content }}
13
+ </section>
14
+ {% include footer.html %}
15
+ </body>
16
+ </html>
17
+
@@ -0,0 +1,187 @@
1
+ ---
2
+ layout: main
3
+ ---
4
+
5
+ {% if site.paginate %}
6
+ {% assign posts = paginator.posts | where_exp:"post","post.is_generated != true" %}
7
+ {% else %}
8
+ {% assign posts = site.posts | where_exp:"post","post.is_generated != true" %}
9
+ {% endif %}
10
+
11
+ {% if site.show_hero and paginator == nil or paginator.page == 1 %}
12
+ {% assign offset = 1 %}
13
+ {% else %}
14
+ {% assign offset = 0 %}
15
+ {% endif %}
16
+
17
+ <main class="home {% if site.show_hero and paginator == nil or paginator.page == 1 %}no-padding{% endif %}" role="main">
18
+ {% if site.show_hero and paginator == nil or paginator.page == 1 %}
19
+ <!-- Hero -->
20
+ {% assign featured = posts.first %}
21
+ <section class="hero" style="background-image: url({{ featured.image }})">
22
+ <div class="pixels"></div>
23
+ <div class="gradient"></div>
24
+ <div class="content">
25
+ <time datetime="{{ featured.date | date_to_xmlschema }}" class="date">
26
+ {% if site.date_format == nil %}
27
+ {{ featured.date | date: "%m.%d.%Y" }}
28
+ {% else %}
29
+ {{ featured.date | date: site.date_format }}
30
+ {% endif %}
31
+ </time>
32
+ <h1 class="title">{{ featured.title }}</h1>
33
+ <p class="description">{{ featured.subtitle }}</p>
34
+ <div class="buttons">
35
+ <a href="{{ featured.url }}" role="button" class="button">
36
+ <svg><use xlink:href="#icon-read"></use></svg>
37
+ <span>{{ site.translations.button.read_now | default: "Read Now" }}</span>
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </section>
42
+ {% endif %}
43
+ <!-- Posts -->
44
+ <section id="grid" class="row flex-grid">
45
+ {% for post in posts offset: offset %}
46
+ <article class="box-item">
47
+ <span class="category">
48
+ <a href="{{ site.baseurl }}/{{ site.categories_folder | default: 'category' }}/{{ post.category }}">
49
+ <span>{{ post.category }}</span>
50
+ </a>
51
+ </span>
52
+ <div class="box-body">
53
+ <a class="cover" href="{{ post.url | prepend: site.baseurl }}">
54
+ {% include loader.html %}
55
+ {% if post.optimized_image %}
56
+ <img src="/assets/img/placeholder.png" width="100%" data-url="{{ post.optimized_image }}" class="preload">
57
+ <noscript>
58
+ <img src="{{ post.optimized_image }}" width="100%">
59
+ </noscript>
60
+ {% elsif post.image %}
61
+ <img src="/assets/img/placeholder.png" width="100%" data-url="{{ post.image }}" class="preload">
62
+ <noscript>
63
+ <img src="{{ post.image }}" width="100%">
64
+ </noscript>
65
+ {% else %}
66
+ <img src="/assets/img/placeholder.png" width="100%" data-url="/assets/img/off.jpg" class="preload">
67
+ <noscript>
68
+ <img src="/assets/img/off.jpg" width="100%">
69
+ </noscript>
70
+ {% endif %}
71
+ {% include new-post-tag.html date=post.date %}
72
+ {% include read-icon.html %}
73
+ </a>
74
+ <div class="box-info">
75
+ <time datetime="{{ post.date | date_to_xmlschema }}" class="date">
76
+ {% include date.html date=post.date %}
77
+ </time>
78
+ <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">
79
+ <h2 class="post-title">
80
+ {{ post.title }}
81
+ </h2>
82
+ </a>
83
+ <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">
84
+ <p class="description">{{ post.description }}</p>
85
+ </a>
86
+ <div class="tags">
87
+ {% for tag in post.tags %}
88
+ {% if tag != "" %}
89
+ <a href="{{ site.baseurl}}/tags/#{{tag | slugify }}">#{{ tag }}</a>
90
+ {% endif %}
91
+ {% endfor %}
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </article>
96
+ {% endfor %}
97
+ </section>
98
+ <!-- Pagination -->
99
+ {% if site.paginate %}
100
+ {% include pagination-home.html %}
101
+ {% endif %}
102
+ </main>
103
+
104
+ {% assign social_urls = '' %}
105
+ {% if site.github_username %}
106
+ {% assign social_urls = social_urls | append: '"https://github.com/' | append: site.github_username | append: '",' %}
107
+ {% endif %}
108
+ {% if site.facebook_username %}
109
+ {% assign social_urls = social_urls | append: '"https://www.facebook.com/' | append: site.facebook_username | append: '",' %}
110
+ {% endif %}
111
+ {% if site.twitter_username %}
112
+ {% assign social_urls = social_urls | append: '"https://twitter.com/' | append: site.twitter_username | append: '",' %}
113
+ {% endif %}
114
+ {% if site.medium_username %}
115
+ {% assign social_urls = social_urls | append: '"https://medium.com/@' | append: site.medium_username | append: '",' %}
116
+ {% endif %}
117
+ {% if site.instagram_username %}
118
+ {% assign social_urls = social_urls | append: '"https://www.instagram.com/' | append: site.instagram_username | append: '",' %}
119
+ {% endif %}
120
+ {% if site.linkedin_username %}
121
+ {% assign social_urls = social_urls | append: '"https://www.linkedin.com/in/' | append: site.linkedin_username | append: '",' %}
122
+ {% endif %}
123
+
124
+ <script type="application/ld+json">
125
+ {
126
+ "@context": "http://schema.org",
127
+ "@type": "WebPage",
128
+ "mainEntity": {
129
+ "@type": "Blog",
130
+ "name": "{{ site.name }}",
131
+ "headline": "{{ site.title }}",
132
+ "description": "{{ site.description }}",
133
+ "url": "{{ site.url }}{{site.baseurl}}/",
134
+ "inLanguage": "{{ site.language }}",
135
+ "isFamilyFriendly": "true",
136
+ "creator": {
137
+ "@type": "Organization",
138
+ "name": "{{ site.name }}",
139
+ "url": "{{ site.url }}{{site.baseurl}}/",
140
+ "sameAs": [
141
+ {{ social_urls | split: "," | join: "," }}
142
+ ]
143
+ },
144
+ "mainEntity": {
145
+ "@type": "ItemList",
146
+ "itemListElement": [
147
+ {% assign limit = 8 %}
148
+ {% for post in posts limit: limit %}
149
+ {% assign author = site.authors | where: "name", post.author | first %}
150
+ {
151
+ "@type": "BlogPosting",
152
+ "name": "{{ post.title }}",
153
+ "headline": "{{ post.subtitle }}",
154
+ "description": "{{ post.description }}",
155
+ "image": "{{ post.image }}",
156
+ "url": "{{ post.url | prepend: site.baseurl | prepend: site.url }}",
157
+ "inLanguage": "{{ site.language }}",
158
+ "dateCreated": "{{ post.date | date: '%Y-%m-%d/' }}",
159
+ "datePublished": "{{ post.date | date: '%Y-%m-%d/' }}",
160
+ "dateModified": "{{ post.date | date: '%Y-%m-%d/' }}",
161
+ "author": {
162
+ "@type": "Person",
163
+ "name": "{{ author.display_name }}",
164
+ "url": "{{ author.url | prepend: site.baseurl | prepend: site.url }}"
165
+ },
166
+ "publisher": {
167
+ "@type": "Organization",
168
+ "name": "{{ site.name }}",
169
+ "url": "{{ site.url }}{{site.baseurl}}/",
170
+ "logo": {
171
+ "@type": "ImageObject",
172
+ "url": "{{ site.url }}{{site.baseurl}}/assets/img/blog-image.png",
173
+ "width": "600",
174
+ "height": "315"
175
+ }
176
+ },
177
+ "mainEntityOfPage": "True",
178
+ "genre": "{{ post.category | capitalize }}",
179
+ "articleSection": "{{ post.category | capitalize }}",
180
+ "keywords": [{{ post.tags | join: '","' | append: '"' | prepend: '"' }}]
181
+ }{% if forloop.index < limit %},{% endif %}
182
+ {% endfor %}
183
+ ]
184
+ }
185
+ }
186
+ }
187
+ </script>