jekyll-theme-ethereal 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 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>