jekyll-theme-ethereal 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ea0c7bad0e38f4e1c0dc644d44dd064e08be3b2984ecde5043a14de93cd64f9
4
- data.tar.gz: 11b7586d57173aba6137af819e6b07f506ebde3729b7fe458700cbfadfbd1be8
3
+ metadata.gz: eb966ca5c76cc867d1a4e8fa61a47b08d26badb8e375abf2e20531ba5f3d6e2c
4
+ data.tar.gz: 32bb6cd722c17766a20e5d1d29a00490bd1cc13417ed21c0682607bfb6579ab2
5
5
  SHA512:
6
- metadata.gz: 9b518b7993dfef5130fd6350332bdf678c6b141929b3c799e3088cfc5dcb5e9120b0ca927d77a316a4d689fbb947faa357de77d55292ca01bb11777267e86062
7
- data.tar.gz: 3c5e6934170e96d7627e1f87802ddb0ee5dd6788e81a870e54b56f1485168b8caf0be577538bf93137cb81947ec0ae28fe99073026395962f324531cff4a8fbe
6
+ metadata.gz: e600781b4072caa118b7ba7e26f7b5b5bf6a388f4dd823aad1eadb4357e5d2dceff9db13c2e9f1cc9168ddac267d3850461f28fb8ec00dcb812b26a20f1ffe46
7
+ data.tar.gz: b53647d65a397c0151f3871c12dda3e09b3b60bac5b246f1dfc8de6a80fbfc690a29784e629cdbd75e95deefd2b13906227cfafdcec16aafe94071be50d0d576
data/README.md CHANGED
@@ -22,6 +22,10 @@ You can preview the theme [here](https://moodule.github.io/jekyll-theme-ethereal
22
22
 
23
23
  > **SEO ready**: sitemap, robots.txt and tags are automatically generated for the website
24
24
 
25
+ > **Light**: svg images, thumbs and lazy loading for raster images, few libraries
26
+
27
+ > **Hardened**: form validation, recaptcha, verified libraries
28
+
25
29
  # Installation
26
30
 
27
31
  Add this line to your Jekyll site's `Gemfile`:
@@ -50,6 +54,11 @@ For those unfamiliar with how Jekyll works, check out [jekyllrb.com](https://jek
50
54
  or read up on just the basics of [front matter](https://jekyllrb.com/docs/frontmatter/), [writing posts](https://jekyllrb.com/docs/posts/),
51
55
  and [creating pages](https://jekyllrb.com/docs/pages/).
52
56
 
57
+ ## Initialization
58
+
59
+ Copy the file `_config.yml` from the theme repository to the root of your website folder tree.
60
+ The following section explains what the settings impact and how to configure `_config.yml` properly.
61
+
53
62
  ## Configuration
54
63
 
55
64
  You can use the following custom parameters in `_config.yml`.
@@ -65,6 +74,12 @@ Social icons will appear for each url your fill in, among `facebook_url` etc.
65
74
  ### Contact
66
75
  Your contact information can be used in contact forms, the footer or anywhere else.
67
76
 
77
+ ### Recaptcha
78
+
79
+ The contact form is validated using [google's recaptcha plugin][recaptcha-documentation].
80
+ First, you need to [sign your website up] to enable the plugin.
81
+ Google will provide you with a **client-side integration key**: copy it to `_config.yml` under `recaptcha.sitekey`.
82
+
68
83
  ## Publication
69
84
 
70
85
  ### On Github Pages
@@ -536,3 +551,5 @@ The theme is available as open source under the terms of the [CC-BY-4.0](LICENSE
536
551
  [cookieconsent]: https://github.com/osano/cookieconsent
537
552
  [html5up]: https://html5up.net/
538
553
  [jekyll-logo]: https://github.com/jekyll/brand
554
+ [recaptcha-documentation]: https://developers.google.com/recaptcha/intro
555
+ [recaptcha-registering]: https://www.google.com/recaptcha/admin
@@ -0,0 +1,21 @@
1
+ <form method="post" id="{{ include.form_id | 'contact-form' }}" action="#" onsubmit="{{ include.onsubmit_callback | 'sendContactMessage' }}()" onreset="{{ include.onreset_callback | 'resetContactForm' }}()" >
2
+ <div class="fields">
3
+ <div class="field half">
4
+ <label for="name">Name</label>
5
+ <input type="text" name="{{ include.name_input_id | 'contact-name' }}" id="{{ include.name_input_id | 'contact-name' }}" required minlength="4" maxlength="64" />
6
+ </div>
7
+ <div class="field half">
8
+ <label for="email">Email</label>
9
+ <input type="email" name="{{ include.email_input_id | 'contact-email' }}" id="{{ include.email_input_id | 'contact-email' }}" required minlength="8" maxlength="64" />
10
+ </div>
11
+ <div class="field">
12
+ <label for="message">Message</label>
13
+ <textarea name="{{ include.message_input_id | 'contact-message' }}" id="{{ include.message_input_id | 'contact-message' }}" rows="4"vrequired minlength="16" maxlength="256" ></textarea>
14
+ </div>
15
+ </div>
16
+ <ul class="actions">
17
+ <li><div id="{{ include.recaptcha_widget_id | 'recaptcha-checkbox' }}" ></div></li>
18
+ <li><input type="submit" id="{{ include.submit_input_id | 'contact-submit-button' }}" value="Send Message" class="button primary fa-envelope" disabled /></li>
19
+ <li><input type="reset" id="{{ include.reset_input_id | 'contact-reset-button' }}" value="Reset" class="icon button fa-undo" /></li>
20
+ </ul>
21
+ </form>
@@ -0,0 +1,52 @@
1
+ <script type="text/javascript">
2
+ const contactFormElement = document.getElementById("{{ include.form_id | default: 'contact-form' }}");
3
+ const nameInputElement = document.getElementById("{{ include.name_input_id | default: 'contact-name' }}");
4
+ const emailInputElement = document.getElementById("{{ include.email_input_id | default: 'contact-email' }}");
5
+ const messageInputElement = document.getElementById("{{ include.message_input_id | default: 'contact-message' }}");
6
+ const submitInputElement = document.getElementById("{{ include.submit_input_id | default: 'contact-submit-button' }}");
7
+ var recaptchaWidget;
8
+
9
+ const isInputValid = function() {
10
+ return (nameInputElement.checkValidity()
11
+ && emailInputElement.checkValidity()
12
+ && messageInputElement.checkValidity())
13
+ };
14
+
15
+ const isRecaptchaValid = function() {
16
+ var responseToken = grecaptcha.getResponse(recaptchaWidget);
17
+ return true;
18
+ };
19
+
20
+ const disableSubmitInputElement = function (disabled = true) {
21
+ submitInputElement.disabled = disabled;
22
+ }
23
+
24
+ const {{ include.onreset_callback | 'resetContactForm' }} = function() {
25
+ contactFormElement.reset();
26
+ disableSubmitInputElement();
27
+ };
28
+
29
+ const {{ include.onsubmit_callback | 'sendContactMessage()' }} = function() {
30
+ encodeURIComponent(nameInputElement.value);
31
+ encodeURIComponent(emailInputElement.value);
32
+ encodeURIComponent(messageInputElement.value);
33
+ };
34
+
35
+ var onloadCallback = function() {
36
+ var verifyForm = function(response) {
37
+ if (isInputValid() && isRecaptchaValid()) {
38
+ disableSubmitInputElement(false);
39
+ } else {
40
+ disableSubmitInputElement();
41
+ }
42
+ };
43
+ recaptchaWidget = grecaptcha.render('{{ include.recaptcha_widget_id | 'recaptcha-checkbox' }}', {
44
+ 'sitekey' : '{{ site.recaptcha.sitekey }}',
45
+ 'theme' : 'dark',
46
+ 'callback' : verifyForm,
47
+ 'expired-callback': disableSubmitInputElement,
48
+ 'size' : 'compact'
49
+ });
50
+ };
51
+ </script>
52
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
data/_includes/date.html CHANGED
@@ -1,13 +1,14 @@
1
- {% assign day = include.date | date: "%-d" %}
2
- {% assign month = include.date | date: "%-m" %}
3
- {% if page.lang == "en" %}
1
+ {%- assign day = include.date | date: "%-d" -%}
2
+ {%- assign month = include.date | date: "%-m" -%}
3
+ {%- if page.lang == "en" -%}
4
4
  {{ include.date | date: "%B" }} {{ day }}, {{ include.date | date: "%Y" }}
5
- {% elsif page.lang == "fr" %}
6
- {% if day == "1" %}
5
+ {%- elsif page.lang == "fr" -%}
6
+ {%- if day == "1" -%}
7
7
  {{ day }}<sup>er</sup>
8
- {% else %} {{ day }}
9
- {% endif %}
10
- {% case month %}
8
+ {%- else -%}
9
+ {{ day }}
10
+ {%- endif -%}
11
+ {%- case month -%}
11
12
  {% when '1' %}janvier
12
13
  {% when '2' %}février
13
14
  {% when '3' %}mars
@@ -20,5 +21,6 @@
20
21
  {% when '10' %}octobre
21
22
  {% when '11' %}novembre
22
23
  {% when '12' %}décembre
23
- {% endcase %} {{ include.date | date: "%Y" }}
24
- {% endif %}
24
+ {%- endcase -%}
25
+ {{ include.date | date: "%Y" }}
26
+ {%- endif -%}
@@ -4,11 +4,11 @@
4
4
  <li>&copy; {{ site.copyright.holder }} - {{ site.copyright.license }}</li>
5
5
  <li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
6
6
  <li>Jekyll integration: <a href="http://github.com/moodule" target="_blank">Moodule</a></li>
7
- {% if site.legal_terms.url %}
7
+ {%- if site.legal_terms.url -%}
8
8
  <li><a href="{{ site.legal_terms.url | absolute_url }}" target="_blank">Legal Terms</a></li>
9
- {% endif %}
10
- {% if site.privacy_policy.url %}
9
+ {%- endif -%}
10
+ {%- if site.privacy_policy.url -%}
11
11
  <li><a href="{{ site.privacy_policy.url | absolute_url }}" target="_blank">Privacy Policy</a></li>
12
- {% endif %}
12
+ {%- endif -%}
13
13
  </ul>
14
14
  </footer>
data/_includes/head.html CHANGED
@@ -1,13 +1,21 @@
1
- {%- assign posts=site.posts | where:"lang-ref", page.lang-ref | sort: 'lang' %}
2
- {%- assign pages=site.pages | where:"lang-ref", page.lang-ref | sort: 'lang' | concat: posts %}
1
+ {%- assign posts=site.posts | where:"lang-ref", page.lang-ref | sort: 'lang' -%}
2
+ {%- assign pages=site.pages | where:"lang-ref", page.lang-ref | sort: 'lang' | concat: posts -%}
3
3
  <head>
4
4
  <title>{{ include.title }} - {{ include.subtitle }}</title>
5
5
  <meta charset="utf-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
7
7
  <link rel="stylesheet" href="{{ 'assets/css/main.css' | absolute_url }}" />
8
- {%- for page in pages %}
8
+ {%- if include.stylesheets -%}
9
+ {%- for file in include.stylesheets -%}
10
+ <link rel="stylesheet" href="{{ file.url | absolute_url }}" />
11
+ {%- endfor -%}
12
+ {%- endif -%}
13
+ {%- for page in pages -%}
9
14
  <link rel="alternate" hreflang="{{ page.lang }}" href="{{ page.url }}" />
10
- {%- endfor %}
15
+ {%- endfor -%}
16
+ {%- if site.favicon -%}
17
+ <link rel="icon" href="{{ site.favicon | absolute_url }}" />
18
+ {%- endif -%}
11
19
  <noscript><link rel="stylesheet" href="{{ 'assets/css/noscript.css' | absolute_url }}" /></noscript>
12
- {% if site.favicon %}<link rel="icon" href="{{ site.favicon | absolute_url }}" />{% endif %}
20
+ {% seo %}
13
21
  </head>
@@ -1,14 +1,13 @@
1
- {% assign posts=site.posts | where:"lang-ref", page.lang-ref | sort: 'lang' %}
2
- {% assign pages=site.pages | where:"lang-ref", page.lang-ref | sort: 'lang' | concat: posts %}
3
-
1
+ {%- assign posts=site.posts | where:"lang-ref", page.lang-ref | sort: 'lang' %}
2
+ {%- assign pages=site.pages | where:"lang-ref", page.lang-ref | sort: 'lang' | concat: posts -%}
4
3
  <div id="language-selector">
5
4
  <ul class="language">
6
- {% for page in pages %}
7
- {% if page.lang != "x-default" %}
5
+ {%- for page in pages -%}
6
+ {%- if page.lang != "x-default" -%}
8
7
  <li>
9
8
  <a href="{{ page.url | absolute_url }}" class="{{ page.lang }}">{{ page.lang }}</a>
10
9
  </li>
11
- {% endif %}
12
- {% endfor %}
10
+ {%- endif -%}
11
+ {%- endfor -%}
13
12
  </ul>
14
13
  </div>
data/_includes/panel.html CHANGED
@@ -1,13 +1,15 @@
1
1
  <section
2
2
  class="panel {{ include.type }} {{ include.style.size }} {{ include.style.text.position | default: 'right' }} {{ include.style.background.color }}"
3
3
  id="{{ include.id | default: include.type }}">
4
- {% if include.type=="banner" %}
5
- {% include panel_banner.html header=include.header content=include.content style=include.style %}
6
- {% elsif include.type=="contact" %}
7
- {% include panel_contact.html header=include.header content=include.content style=include.style %}
8
- {% elsif include.type=="spotlight" %}
9
- {% include panel_spotlight.html header=include.header content=include.content style=include.style %}
10
- {% else %}
11
- {% include panel_generic.html header=include.header content=include.content style=include.style %}
12
- {% endif %}
4
+ {%- if include.type=="banner" -%}
5
+ {% include panel_banner.html header=include.header content=include.content style=include.style data=include.data %}
6
+ {%- elsif include.type=="contact" -%}
7
+ {% include panel_contact.html header=include.header content=include.content style=include.style data=include.data %}
8
+ {%- elsif include.type=="spotlight" -%}
9
+ {% include panel_spotlight.html header=include.header content=include.content style=include.style data=include.data %}
10
+ {%- elsif include.type=="map" -%}
11
+ {% include panel_map.html header=include.header content=include.content style=include.style data=include.data %}
12
+ {%- else -%}
13
+ {% include panel_generic.html header=include.header content=include.content style=include.style data=include.data %}
14
+ {%- endif -%}
13
15
  </section>
@@ -1,30 +1,23 @@
1
+ {%- assign form_id="contact-form" -%}
2
+ {%- assign name_input_id="contact-name" -%}
3
+ {%- assign email_input_id="contact-email" -%}
4
+ {%- assign message_input_id="contact-message" -%}
5
+ {%- assign submit_input_id="contact-submit-button" -%}
6
+ {%- assign reset_input_id="contact-reset-button" -%}
7
+ {%- assign recaptcha_widget_id="recaptcha-checkbox" -%}
8
+ {%- assign onsubmit_callback="sendContactMessage" -%}
9
+ {%- assign onreset_callback="resetContactForm" -%}
10
+
1
11
  <div class="intro {{ include.style.header.color | default: 'color4' }}">
2
12
  <h2 class="major">{{ include.header.title | default: 'Contact'}}</h2>
3
13
  <p>{{ include.header.description }}</p>
4
14
  </div>
5
15
  <div class="inner columns divided">
6
16
  <div class="span-3-25">
7
- <form method="post" action="#">
8
- <div class="fields">
9
- <div class="field half">
10
- <label for="name">Name</label>
11
- <input type="text" name="name" id="name" />
12
- </div>
13
- <div class="field half">
14
- <label for="email">Email</label>
15
- <input type="email" name="email" id="email" />
16
- </div>
17
- <div class="field">
18
- <label for="message">Message</label>
19
- <textarea name="message" id="message" rows="4"></textarea>
20
- </div>
21
- </div>
22
- <ul class="actions">
23
- <li><input type="submit" value="Send Message" class="button primary" /></li>
24
- </ul>
25
- </form>
17
+ {% include contact_form.html form_id=form_id name_input_id=name_input_id email_input_id=email_input_id message_input_id=message_input_id submit_input_id=submit_input_id reset_input_id=reset_input_id recaptcha_widget_id=recaptcha_widget_id onsubmit_callback=onsubmit_callback onreset_callback=onreset_callback %}
26
18
  </div>
27
19
  <div class="span-1-5">
28
20
  {% include social.html color=include.style.icons.color %}
29
21
  </div>
30
22
  </div>
23
+ {% include contact_script.html form_id=form_id name_input_id=name_input_id email_input_id=email_input_id message_input_id=message_input_id submit_input_id=submit_input_id reset_input_id=reset_input_id recaptcha_widget_id=recaptcha_widget_id onsubmit_callback=onsubmit_callback onreset_callback=onreset_callback %}
@@ -0,0 +1,57 @@
1
+ <style>
2
+ body { margin: 0; padding: 0; }
3
+ #map-container { position: relative; top: 0; bottom: 0; width: 100%; };
4
+
5
+ #marker {
6
+ background-image: url('..images/rocket.png');
7
+ background-size: cover;
8
+ width: 50px;
9
+ height: 50px;
10
+ border-radius: 50%;
11
+ cursor: pointer;
12
+ }
13
+
14
+ .mapboxgl-popup {
15
+ max-width: 200px;
16
+ }
17
+ </style>
18
+ <div class="intro {{ include.style.header.joined }} {{ include.style.header.color }}">
19
+ <h2 class="major">{{ include.header.title }}</h2>
20
+ <p>{{ include.header.description }}</p>
21
+ </div>
22
+ <div id='map-container'></div>
23
+ <script src="{{ 'assets/js/mapbox-gl.js' | absolute_url }}" /></script>
24
+ <script defer>
25
+ mapboxgl.accessToken = "{{ include.data.token }}";
26
+ var map = new mapboxgl.Map({
27
+ container: "map-container",
28
+ style: "{{ include.data.style }}",
29
+ center: [{{ include.data.center.longitude | default: 0.0 }}, {{ include.data.center.latitude | default: 0.0 }}],
30
+ zoom: {{ include.data.zoom | default: 1 }}
31
+ });
32
+
33
+ var data_points = {{ include.content | strip_html }}
34
+
35
+ map.on('load', function () {
36
+
37
+ map.addLayer({
38
+ "id": "points",
39
+ "type": "symbol",
40
+ "source": {
41
+ "type": "geojson",
42
+ "data": data_points
43
+ },
44
+ "layout": {
45
+ // get the icon name from the source's "icon" property
46
+ // concatenate the name to get an icon from the style's sprite sheet
47
+ "icon-image": ["concat", ["get", "icon"], "-15"],
48
+ // get the title name from the source's "title" property
49
+ "text-field": ["get", "name"],
50
+ "text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"],
51
+ "text-offset": [0, 0.6],
52
+ "text-anchor": "top"
53
+ }
54
+ });
55
+
56
+ });
57
+ </script>
@@ -1,18 +1,31 @@
1
1
  <!-- Scripts -->
2
- <script src="{{ 'assets/js/jquery.min.js' | absolute_url }}"></script>
3
- <script src="{{ 'assets/js/browser.min.js' | absolute_url }}"></script>
4
- <script src="{{ 'assets/js/breakpoints.min.js' | absolute_url }}"></script>
5
- <script src="{{ 'assets/js/main.js' | absolute_url }}"></script>
6
- <script src="{{ 'assets/js/cookieconsent.min.js' | absolute_url }}" data-cfasync="false"></script>
2
+ <script src="{{ 'assets/js/jquery.min.js' | absolute_url }}" type="text/javascript" type="text/javascript" ></script>
3
+ <script src="{{ 'assets/js/browser.min.js' | absolute_url }}" type="text/javascript" ></script>
4
+ <script src="{{ 'assets/js/breakpoints.min.js' | absolute_url }}" type="text/javascript" ></script>
5
+ <script src="{{ 'assets/js/main.js' | absolute_url }}" type="text/javascript" ></script>
6
+ <script src="{{ 'assets/js/cookieconsent.min.js' | absolute_url }}" data-cfasync="false" type="text/javascript" ></script>
7
7
  <script>
8
8
  window.cookieconsent.initialise({
9
- "palette": {
10
- "popup": {
11
- "background": "#252e39"
12
- },
13
- "button": {
14
- "background": "#14a7d0"
15
- }
16
- }
9
+ "palette": {
10
+ "popup": {
11
+ "background": "#252e39"
12
+ },
13
+ "button": {
14
+ "background": "#14a7d0"
15
+ }
16
+ }
17
17
  });
18
18
  </script>
19
+ <script src="{{ 'assets/js/simple-jekyll-search.min.js' | absolute_url }}" type="text/javascript" ></script>
20
+ <script>
21
+ SimpleJekyllSearch({
22
+ searchInput: document.getElementById('search-input'),
23
+ resultsContainer: document.getElementById('search-results'),
24
+ json: "{{ '/index.json' | absolute_url }}"
25
+ })
26
+ </script>
27
+ {%- if include.scripts -%}
28
+ {%- for file in include.scripts -%}
29
+ <script src="{{ file.url | absolute_url }}" type="text/javascript" ></script>
30
+ {%- endfor -%}
31
+ {%- endif -%}
@@ -1,36 +1,36 @@
1
1
  <!-- Social Icons -->
2
2
  <ul class="contact-icons {{ include.color | default: 'color1' }}">
3
- {% if site.twitter.url %}
3
+ {%- if site.twitter.url -%}
4
4
  <li class="icon brands fa-twitter"><a href="{{ site.twitter.url }}" target="_blank"><span class="label">{{ site.twitter.label }}</span></a></li>
5
- {% endif %}
6
- {% if site.facebook.url %}
5
+ {%- endif -%}
6
+ {%- if site.facebook.url -%}
7
7
  <li class="icon brands fa-facebook-f"><a href="{{ site.facebook.url }}" target="_blank"><span class="label">{{ site.facebook.label }}</span></a></li>
8
- {% endif %}
9
- {% if site.snapchat.url %}
8
+ {%- endif -%}
9
+ {%- if site.snapchat.url -%}
10
10
  <li class="icon brands fa-snapchat-ghost"><a href="{{ site.snapchat.url }}" target="_blank"><span class="label">{{ site.snapchat.label }}</span></a></li>
11
- {% endif %}
12
- {% if site.medium.url %}
11
+ {%- endif -%}
12
+ {%- if site.medium.url -%}
13
13
  <li class="icon brands fa-medium-m"><a href="{{ site.medium.url }}" target="_blank"><span class="label">{{ site.medium.label }}</span></a></li>
14
- {% endif %}
15
- {% if site.instagram.url %}
14
+ {%- endif -%}
15
+ {%- if site.instagram.url -%}
16
16
  <li class="icon brands fa-instagram"><a href="{{ site.instagram.url }}" target="_blank"><span class="label">{{ site.instagram.label }}</span></a></li>
17
- {% endif %}
18
- {% if site.pinterest.url %}
17
+ {%- endif -%}
18
+ {%- if site.pinterest.url -%}
19
19
  <li class="icon brands fa-pinterest"><a href="{{ site.pinterest.url }}" target="_blank"><span class="label">{{ site.pinterest.label }}</span></a></li>
20
- {% endif %}
21
- {% if site.500px.url %}
20
+ {%- endif -%}
21
+ {%- if site.500px.url -%}
22
22
  <li class="icon brands fa-500px"><a href="{{ site.500px.url }}" target="_blank"><span class="label">{{ site.500px.label }}</span></a></li>
23
- {% endif %}
24
- {% if site.gitlab.url %}
23
+ {%- endif -%}
24
+ {%- if site.gitlab.url -%}
25
25
  <li class="icon brands fa-gitlab"><a href="{{ site.gitlab.url }}" target="_blank"><span class="label">{{ site.gitlab.label }}</span></a></li>
26
- {% endif %}
27
- {% if site.github.url %}
26
+ {%- endif -%}
27
+ {%- if site.github.url -%}
28
28
  <li class="icon brands fa-github"><a href="{{ site.github.url }}" target="_blank"><span class="label">{{ site.github.label }}</span></a></li>
29
- {% endif %}
30
- {% if site.slack.url %}
29
+ {%- endif -%}
30
+ {%- if site.slack.url -%}
31
31
  <li class="icon brands fa-slack"><a href="{{ site.slack.url }}" target="_blank"><span class="label">{{ site.slack.label }}</span></a></li>
32
- {% endif %}
33
- {% if site.linkedin.url %}
32
+ {%- endif -%}
33
+ {%- if site.linkedin.url -%}
34
34
  <li class="icon brands fa-linkedin"><a href="{{ site.linkedin.url }}" target="_blank"><span class="label">{{ site.linkedin.label }}</span></a></li>
35
- {% endif %}
35
+ {%- endif -%}
36
36
  </ul>