jekflix 3.0.0

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