slow-steps 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +215 -0
  3. data/_config.yml +55 -0
  4. data/_includes/.DS_Store +0 -0
  5. data/_includes/branding/site-logo.svg +51 -0
  6. data/_includes/env_filter.html +10 -0
  7. data/_includes/errors/robot-403.svg +26 -0
  8. data/_includes/errors/robot-404.svg +28 -0
  9. data/_includes/errors/robot-405.svg +27 -0
  10. data/_includes/footer/footer.html +22 -0
  11. data/_includes/footer/footer_full.html +43 -0
  12. data/_includes/forms/mc-register.html +157 -0
  13. data/_includes/head/.DS_Store +0 -0
  14. data/_includes/head/README.md +31 -0
  15. data/_includes/head/descriptors/og-meta.html +74 -0
  16. data/_includes/head/descriptors/structured-data.html +124 -0
  17. data/_includes/head/descriptors/twitter-meta.html +17 -0
  18. data/_includes/head/env/conditional.html +2 -0
  19. data/_includes/head/head.html +78 -0
  20. data/_includes/image.html +10 -0
  21. data/_includes/link.html +1 -0
  22. data/_includes/navigation/global.html +48 -0
  23. data/_includes/scripts.html +21 -0
  24. data/_layouts/about.html +143 -0
  25. data/_layouts/compress.html +11 -0
  26. data/_layouts/default.html +19 -0
  27. data/_layouts/env/clinician.html +48 -0
  28. data/_layouts/env/landing.html +68 -0
  29. data/_layouts/env/pwp.html +83 -0
  30. data/_layouts/error-page.html +10 -0
  31. data/_layouts/feed.html +39 -0
  32. data/_layouts/post.html +26 -0
  33. data/_layouts/register.html +10 -0
  34. data/_sass/about.sass +178 -0
  35. data/_sass/aos-overrides.sass +5 -0
  36. data/_sass/breakpoints/about.sass +78 -0
  37. data/_sass/colors/_variables.sass +43 -0
  38. data/_sass/colors/breakpoints/768.sass +20 -0
  39. data/_sass/colors/burger.sass +22 -0
  40. data/_sass/colors/env/_clinician.sass +16 -0
  41. data/_sass/colors/env/_pwp.sass +16 -0
  42. data/_sass/colors/navigation.sass +13 -0
  43. data/_sass/env/breakpoints/768.sass +79 -0
  44. data/_sass/env/clinician.sass +150 -0
  45. data/_sass/env/landing.sass +180 -0
  46. data/_sass/env/pwp.sass +181 -0
  47. data/_sass/error-page.sass +109 -0
  48. data/_sass/feed.sass +58 -0
  49. data/_sass/footer.sass +23 -0
  50. data/_sass/footer_full.sass +82 -0
  51. data/_sass/forms/mc-forms.sass +193 -0
  52. data/_sass/global.sass +55 -0
  53. data/_sass/navigation/_variables.sass +30 -0
  54. data/_sass/navigation/breakpoints/768.sass +84 -0
  55. data/_sass/navigation/burger.sass +38 -0
  56. data/_sass/navigation/env/clinician.sass +45 -0
  57. data/_sass/navigation/env/landing.sass +19 -0
  58. data/_sass/navigation/env/pwp.sass +46 -0
  59. data/_sass/navigation/global.sass +69 -0
  60. data/_sass/post.sass +69 -0
  61. data/_sass/typography/_variables.sass +21 -0
  62. data/_sass/typography/branding.sass +1 -0
  63. data/_sass/typography/resets.sass +40 -0
  64. data/assets/css/env/gaitq_clinician.sass +30 -0
  65. data/assets/css/env/gaitq_landing.sass +13 -0
  66. data/assets/css/env/gaitq_pwp.sass +30 -0
  67. data/assets/css/gaitq_errors.sass +8 -0
  68. data/assets/css/gaitq_feed.sass +12 -0
  69. data/assets/css/gaitq_global.sass +30 -0
  70. data/assets/css/gaitq_post.sass +12 -0
  71. data/assets/css/img_handler.sass +5 -0
  72. data/assets/fonts/.DS_Store +0 -0
  73. data/assets/fonts/Quicksand/OFL.txt +93 -0
  74. data/assets/fonts/Quicksand/Quicksand-VariableFont_wght.ttf +0 -0
  75. data/assets/fonts/Quicksand/README.txt +67 -0
  76. data/assets/fonts/Quicksand/static/Quicksand-Bold.ttf +0 -0
  77. data/assets/fonts/Quicksand/static/Quicksand-Light.ttf +0 -0
  78. data/assets/fonts/Quicksand/static/Quicksand-Medium.ttf +0 -0
  79. data/assets/fonts/Quicksand/static/Quicksand-Regular.ttf +0 -0
  80. data/assets/fonts/Quicksand/static/Quicksand-SemiBold.ttf +0 -0
  81. data/assets/fonts/fontawesome-free-5.11.2-web/.DS_Store +0 -0
  82. data/assets/fonts/fontawesome-free-5.11.2-web/css/.DS_Store +0 -0
  83. data/assets/fonts/fontawesome-free-5.11.2-web/css/all.min.css +5856 -0
  84. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.eot +0 -0
  85. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.svg +3496 -0
  86. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.ttf +0 -0
  87. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.woff +0 -0
  88. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-brands-400.woff2 +0 -0
  89. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.eot +0 -0
  90. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.svg +803 -0
  91. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.ttf +0 -0
  92. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.woff +0 -0
  93. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-regular-400.woff2 +0 -0
  94. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.eot +0 -0
  95. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.svg +4667 -0
  96. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.ttf +0 -0
  97. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.woff +0 -0
  98. data/assets/fonts/fontawesome-free-5.11.2-web/webfonts/fa-solid-900.woff2 +0 -0
  99. data/assets/js/animate_after_load.js +1 -0
  100. data/assets/js/calc-mobile-viewport.js +6 -0
  101. data/assets/js/mobile-nav-slider.js +24 -0
  102. data/assets/vendor/aos/aos.css +1 -0
  103. data/assets/vendor/aos/aos.js +546 -0
  104. metadata +306 -0
@@ -0,0 +1,43 @@
1
+ <!-- footer -->
2
+ <footer class="ft-wrapper">
3
+
4
+ <div class="ft__head">
5
+ <a href="{{ site.baseurl }}/">
6
+ {% include /branding/site-logo.svg %}</a>
7
+ </div>
8
+ <div class="ft__body">
9
+
10
+ <section class="ft__sitemap">
11
+ <div class="ft__sitemap--menu">
12
+ {% for item in site.data.menu.navigation %}
13
+ <h2 class="ft__sitemap--header">{{ item.name }}</h2>
14
+ <ul class="ft__sitemap--submenu">
15
+ {% for sub in item.submenu %}
16
+ <li><a href="{{ sub.url }}">{{ sub.name }}</a></li>
17
+ {% endfor %}
18
+ </ul>
19
+ {% endfor %}
20
+ </div>
21
+ </section>
22
+
23
+ <!-- quick contact form -->
24
+
25
+ <section class="ft__contact">
26
+ {% include /forms/mc-register.html %}
27
+ </section>
28
+ </div>
29
+ <!-- footer base and copyright -->
30
+
31
+ <div class="ft__base">
32
+ <a href="{{ site.author.url }}" class="slogan">made slowly</a>
33
+ <div class="legal-links">
34
+ {% for item in site.data.menu.legals %}
35
+ <a href="{{ item.url }}">{{ item.name }}</a>
36
+ {% endfor %}
37
+ </div>
38
+ <p class="copyright">&copy; <script>
39
+ document.write(new Date().getFullYear())
40
+ </script> {{ site.title }} Limited</p>
41
+ </div>
42
+
43
+ </footer>
@@ -0,0 +1,157 @@
1
+
2
+ <form action="{{ site.data.forms[page.env].action }}" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
3
+
4
+ <div class="form__block">
5
+ <h2 class="form--title">{{ site.data.forms[page.env].header }}</h2>
6
+
7
+ <p class="form--strap">{{ site.data.forms[page.env].strapline }}</p>
8
+ {% for item in site.data.forms[page.env].inputs %}
9
+
10
+ <div class="
11
+ form__elem
12
+ {{ item.type }}__elem
13
+ mc--{{ item.width }}
14
+ mc-field-group
15
+ {% if item.type == 'select' OR item.type == 'radio' %}input-group{% endif %}">
16
+
17
+ <label class="form--label {{ item.type }}-label" for="{{ item.mce-id }}">
18
+ {{ item.label }}
19
+ {% if item.required %}
20
+ <span class="mc-asterisk">*</span>
21
+ {% endif %}
22
+ </label>
23
+ {% if item.type == 'radio' %}
24
+ <ul>
25
+ {% for option in item.opts %}
26
+ <li>
27
+ <input
28
+ type="{{ item.type }}"
29
+ value="{{ option.value }}"
30
+ name="{{ item.name }}"
31
+ id="{{ item.mce-id }}-{{ option.mce-id }}" {{ item.autofocus }}>
32
+ <label
33
+ for="{{ item.mce-id }}-{{ option.mce-id }}">
34
+ {{ option.name }}
35
+ </label>
36
+ </li>
37
+ {% endfor %}
38
+ </ul>
39
+ {% endif %}
40
+
41
+ {% if item.type == 'select' %}
42
+ <select name="{{ item.name }}" class="form--select form--elem {% if item.required %}required {% endif %}" id="{{ item.mce-id }}" {{ item.autofocus }}>
43
+ {% for option in item.opts %}
44
+ <option
45
+ type="{{ item.type }}"
46
+ value="{{ option.value }}"
47
+ name="{{ item.name }}"
48
+ id="{{ item.mce-id }}-{{ option.mce-id }}">
49
+ {{ option.name }}
50
+ </option>
51
+ {% endfor %}
52
+ </select>
53
+ {% endif %}
54
+
55
+ {% if item.type == 'textarea' %}
56
+ <textarea
57
+ rows="4"
58
+ name="{{ item.name }}"
59
+ id="item.mce-id"
60
+ class="form--textarea form--elem" {{ item.autofocus }}></textarea>
61
+ {% endif %}
62
+
63
+ {% if item.type == 'checkbox' %}
64
+ <label class="form--label {{ item.type }}-label--mod" for="{{ item.mce-id }}">
65
+ <p>{{ item.label }}</p>
66
+ <span class="styled-checkbox__block">
67
+ <input type="checkbox" class="styled-checkbox switch" id="{{ item.mce-id }}" {{ item.autofocus }}>
68
+ <span class="icon"><span class="icon--elem"></span></span>
69
+ <span class="no">NO</span>
70
+ <span class="yes">YES</span>
71
+ </span>
72
+ </label>
73
+ {% endif %}
74
+
75
+ {% if item.type != 'select' and item.type != 'radio' and item.type != 'textarea' and item.type != 'checkbox' %}
76
+ <input
77
+ type="{{ item.type }}"
78
+ value=""
79
+ {% if item.type == 'tel' %}
80
+ placeholder="Landline or mobile"
81
+ pattern="[0-9]{3}-[0-9]{3}-[0-9]{3}"
82
+ {% endif %}
83
+ name="{{ item.name }}"
84
+ class="{% if item.required %}required {% endif %} form--input form--elem"
85
+ id="{{ item.mce-id }}"
86
+ {{ item.autofocus }}>
87
+ {% endif %}
88
+ </div>
89
+
90
+ {% endfor %}
91
+
92
+ <div id="mergeRow-gdpr" class="mergeRow gdpr-mergeRow content__gdprBlock mc-field-group">
93
+ <div class="content__gdpr">
94
+ <label for="interestgroup_field" class="form--label gdpr--title">What is your prefered method of communication?</label>
95
+ <fieldset class="mc_fieldset gdprRequired mc-field-group" name="interestgroup_field">
96
+
97
+ {% for item in site.data.forms[page.env].gdpr %}
98
+
99
+ <label class="mc--{{ item.width }} form--label {{ item.type }}-label--mod checkbox subfield" for="gdpr_{{ item.mce-id }}">
100
+ <p>{{ item.label }}</p>
101
+ <span class="styled-checkbox__block">
102
+ <input type="checkbox" class="styled-checkbox switch av-checkbox gdpr" id="gdpr_{{ item.mce-id }}" value="Y" name="{{ item.name }}">
103
+ <span class="icon"><span class="icon--elem"></span></span>
104
+ <span class="no">NO</span>
105
+ <span class="yes">YES</span>
106
+ </span>
107
+ </label>
108
+ {% endfor %}
109
+ </fieldset>
110
+
111
+ <p class="content__gdprLegal">You can unsubscribe at any time by clicking the link at the bottom of our emails. For information about our privacy practices, click <a href="/privacy-policy/">here</a>.</p>
112
+
113
+ </div>
114
+ <div class="content__gdprLegal">
115
+ <p>We use Mailchimp as our marketing platform. By clicking below, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about
116
+ Mailchimp's privacy practices <a href="https://mailchimp.com/legal/" target="_blank">here.</a></p>
117
+ </div>
118
+ </div>
119
+
120
+
121
+ <div class="clear">
122
+ <input type="submit" value="Submit" name="subscribe" id="mc-embedded-subscribe" class="button">
123
+ </div>
124
+
125
+
126
+ <div id="mce-responses" class="clear">
127
+ <div class="response" id="mce-error-response" style="display:none">
128
+ </div>
129
+ <div class="response" id="mce-success-response" style="display:none">
130
+ </div>
131
+ </div>
132
+
133
+ <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
134
+ <div style="position: absolute; left: -5000px;" aria-hidden="true">
135
+ <input type="text" name="{{ site.data.forms.pwp.botspot-name }}" tabindex="-1" value="">
136
+ </div>
137
+
138
+
139
+
140
+ </div>
141
+
142
+ </form>
143
+
144
+
145
+ <script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script>
146
+
147
+ <script type='text/javascript'>
148
+ (function($) {
149
+ window.fnames = new Array();
150
+ window.ftypes = new Array();
151
+ {% for item in site.data.forms[page.env].inputs %}
152
+ fnames[{{ forloop.index0 }}] = '{{ item.name }}';
153
+ ftypes[{{ forloop.index0 }}] = '{{ item.type }}';
154
+ {% endfor %}
155
+ }(jQuery));
156
+ var $mcj = jQuery.noConflict(true);
157
+ </script>
Binary file
@@ -0,0 +1,31 @@
1
+ # Header _includes
2
+
3
+ Everything we place in a pages header originates here.
4
+
5
+ ## descriptors
6
+
7
+ Descriptive stuff that describes the website, the company, the developer and the particular page.
8
+
9
+ ### Global includes
10
+
11
+ #### Open Graph protocol - og-meta.html
12
+
13
+ Mostly used by facebook to understand what a given page is all about. This is how we control our content when posted on facebook. Thumbs and descriptions are taken from page front matter, if that doesn't exist we default to site settings in _config.yml.
14
+
15
+ If the page is part of a blog, we change `og:type` from website to article and add details from front matter.
16
+
17
+ We have the option to include a fb:app_id.
18
+
19
+ #### Twitter Meta - twitter-meta.html
20
+
21
+ Similar to og-meta, we control how our content appears on Twitter. We look for data in pages front matter first then default to site data.
22
+
23
+ #### Structured Data - structured-datd.html
24
+
25
+ This is how we control the indexing of our pages with search engines, in particular Google.
26
+
27
+ ## env
28
+
29
+ ### conditional.html
30
+
31
+ Conditional `<link rel="stylesheet"` to style each environment. We do this so that we only load the css needed for a given page. All pages get gaitq_global.css. With front matter we include environmental stylesheet with `env: pwp | clinician`. The existence of `page.env` triggers conditional.html.
@@ -0,0 +1,74 @@
1
+
2
+ <!-- *** OG *** https://ogp.me/ -->
3
+ <meta property="og:title" content="{% if page.url == "/" %} {{ site.title }} {% else %} {{ page.title }} | {{ site.title }} {% endif %}" />
4
+
5
+ <!-- Adds article properties for posts -->
6
+
7
+ <meta property="og:type" content="
8
+ {% if page.id %}
9
+ {%- assign facebook = site.socials | where: 'name', 'Facebook' -%}
10
+
11
+
12
+ article" />
13
+ <meta
14
+ property=article:publisher
15
+ content="{{ facebook[0].url }}/">
16
+ <meta
17
+ property=article:author
18
+ content="{{ site.url }}">
19
+ <meta
20
+ property=article:section
21
+ content="News from {{ site.title }}" >
22
+ <meta
23
+ property=article:published_time
24
+ content="{{ page.date | date_to_xmlschema }}">
25
+ <meta
26
+ property=article:modified_time
27
+ content="{{ 'now' | date_to_xmlschema }}">
28
+ <!-- this just pulls the first cat -->
29
+ <meta
30
+ property=article:tag
31
+ content="{{ page.categories }}">
32
+ {% else %}
33
+ website" />
34
+ {% endif %}
35
+
36
+ <meta property=og:updated_time content="{{ 'now' | date_to_xmlschema }}">
37
+
38
+ <!-- use local image if it exist but only for posts -->
39
+
40
+ {% if page.id %}
41
+ {% assign image = '/posts/' | append: page.image %}
42
+ {% else %}
43
+ {% assign image = site.fallback_path | append: site.brand %}
44
+ {% endif %}
45
+
46
+ {% assign image_url = site.url | append: site.baseurl | append: image %}
47
+
48
+ <meta property="og:image" content="{{ image_url }}" />
49
+
50
+ <meta property="og:image:type" content="image/{{ image | split: '.' | last }}" />
51
+
52
+ {% imagesize image:opengraph %}
53
+
54
+ <!-- to implement this properly we need some kind of db recording the descriptors of our thumbs -->
55
+
56
+ <meta property="og:image:alt" content="{{ site.subtitle }}" />
57
+
58
+ <meta property="og:url" content="{{ site.url }}{{ site.baseurl }}{{ page.url }}" />
59
+
60
+ <meta property="og:description" content="
61
+ {% if page.description %}
62
+ {{ page.description }}
63
+ {% else %}
64
+ {{ site.description }}
65
+ {% endif %}" />
66
+
67
+ <meta property="og:locale" content="en" />
68
+
69
+ <meta property="og:site_name" content="{{ site.title }} | {{ site.subtitle }}" />
70
+
71
+ <!-- *** fb:app_id *** https://developers.facebook.com/docs/sharing/webmasters/#markup -->
72
+ <meta property="fb:app_id" content="{{ site.data.socials.facebook.app_id }}" />
73
+
74
+ <!-- *** END OG *** -->
@@ -0,0 +1,124 @@
1
+
2
+ {%- assign facebook = site.socials | where: 'name', 'Facebook' -%}
3
+
4
+ {%- assign twitter = site.socials | where: 'name', 'Twitter' -%}
5
+
6
+ <!-- *** STRUCTURED DATA *** -->
7
+ <!-- WebSite -->
8
+ <!-- const -->
9
+ <script type="application/ld+json">
10
+ { "@context":"https://schema.org",
11
+ "@graph":[ {
12
+ "@type":"WebSite",
13
+ "@id":"{{ site.url }}{{ site.baseurl }}/#website",
14
+ "url": "{{ site.url }}{{ site.baseurl }}/",
15
+ "sameAs":[
16
+ "mailto:{{ site.email }}",
17
+ "{{ twitter[0].url }}/",
18
+ "{{ facebook[0].url }}/" ],
19
+ "name": "{{ site.title }} | {{ site.subtitle }}",
20
+ "description": "{{ site.description }}",
21
+ "image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}",
22
+ "author":[ {
23
+ /* Person */
24
+ "@type": "Person",
25
+ "@context": "http://schema.org",
26
+ "name": "{{ site.title }}",
27
+ "description": "{{ site.description }}",
28
+ "image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}"} ]
29
+ } , {
30
+ /* WePage */
31
+ /* var */
32
+ "@type":"WebPage",
33
+ "@id":"{{ site.url }}{{ site.baseurl }}{{ page.url }}#webpage",
34
+ "url":"{{ site.url }}{{ site.baseurl }}{{ page.url }}",
35
+ "inLanguage":"en-GB",
36
+ "name":"{%- if page.title -%} {{ page.title }} | {{ site.title }} {%- else -%} {{ site.title }} | {{ site.subtitle }} {% endif %}",
37
+ "description": "{%- if page.description -%} {{ page.descrition }}{%- else -%}{{ site.description }}{% endif %}",
38
+ "datePublished":"{{ page.date }}",
39
+ "dateModified":"{{ 'now' | date_to_xmlschema }}",
40
+ "isPartOf":[{
41
+ "@id":"{{ site.url }}{{ site.baseurl }}/#website"}] }] } </script>
42
+
43
+ <!-- Organization -->
44
+ <script type="application/ld+json">
45
+ { "@context": "http://schema.org",
46
+ "@type": "Organization",
47
+ "url": "{{ site.url }}{{ site.baseurl }}/",
48
+ /* only applies to registered business */
49
+ "legalName": "{{ site.title }} Limited",
50
+ "description": "{{ site.description }}",
51
+ "image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}",
52
+ "logo": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.logo }}",
53
+ "address": {
54
+ "@type": "PostalAddress",
55
+ "streetAddress": "{{ site.postal_add.street }}",
56
+ "addressLocality": "{{ site.postal_add.city }}",
57
+ "addressRegion": "{{ site.postal_add.region }}",
58
+ "addressCountry": "{{ site.postal_add.country }}",
59
+ "postalCode": "{{ site.postal_add.postcode }}" },
60
+ "telephone": "{{ site.phone }}",
61
+ "sameAs":[
62
+ "mailto:{{ site.email }}",
63
+ "{{ twitter[0].url }}/",
64
+ "{{ facebook[0].url }}/" ] } </script>
65
+
66
+ <!-- Article -->
67
+ {% if page.id %}<!-- this is a post -->
68
+ <script type="application/ld+json">
69
+ {
70
+ "@context": "http://schema.org",
71
+ "@type": "Article",
72
+ "author": {
73
+ "@type": "Person",
74
+ "name":
75
+ "{%- if page.author -%}{{ site.data.authors[page.author].name }}{%- else -%}{{ site.title }}{% endif %}"
76
+ },
77
+ "creator": {
78
+ "@type": "Person",
79
+ "name":
80
+ "{%- if page.author -%}{{ site.data.authors[page.author].name }}{%- else -%}{{ site.title }}{% endif %}"
81
+ },
82
+ "publisher": {
83
+ "@type": "Organization",
84
+ "name": "{{ site.title }}",
85
+ "logo": {
86
+ "@type": "ImageObject",
87
+ "url": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.logo }}"
88
+ }
89
+ },
90
+ "headline": "{{ page.title }} | {{ site.title }}",
91
+ "datePublished": "{{ page.date | date_to_xmlschema }}",
92
+ "dateModified": "{{ 'now' | date_to_xmlschema }}",
93
+ "description": "{{ page.description }}",
94
+ "inLanguage": "en",
95
+ "url": "{{ page.url }}",
96
+ "name": "{{ page.title }} | {{ site.title }}",
97
+ "image": {
98
+ "@type": "ImageObject",
99
+ "url": "{%- if page.image -%}{{ site.url }}{{ site.baseurl }}{{ site.default_path }}{{ page.image | prepend: 'posts/' }}{%- else -%}{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}{%- endif -%}"
100
+ },
101
+ "mainEntityOfPage": "{{ site.url }}{{ site.baseurl }}{{ page.url }}"
102
+ }
103
+ </script>
104
+ {% else %}
105
+ <!-- LocalBusiness -->
106
+ <script type="application/ld+json">
107
+ { "@context": "http://schema.org",
108
+ "@type": "LocalBusiness",
109
+ "address": {
110
+ "@type": "PostalAddress",
111
+ "streetAddress": "{{ site.postal_add.street }}",
112
+ "addressLocality": "{{ site.postal_add.city }}",
113
+ "addressRegion": "{{ site.postal_add.region }}",
114
+ "addressCountry": "{{ site.postal_add.country }}",
115
+ "postalCode": "{{ site.postal_add.postcode }}"
116
+ },
117
+ "name": "{{ site.title }} | {{ site.subtitle }}",
118
+ "alternateName": "{{ site.title }}",
119
+ "description": "{{ site.description }}",
120
+ "telephone": "{{ site.phone }}",
121
+ "openingHours": "{{ site.opening_hours }}",
122
+ "image": "{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}"
123
+ } </script>
124
+ {% endif %}
@@ -0,0 +1,17 @@
1
+
2
+ <!-- *** TWITTER:CARD *** https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/abouts-cards -->
3
+ <meta name="twitter:card" content="summary_large_image" />
4
+
5
+ <meta name="twitter:site" content="@{{ site.data.socials.twitter.username }}" />
6
+ <meta name="twitter:creator" content="@{{ site.author.twitter }}">
7
+ <meta name="twitter:title" content="{% if page.url == "/" %} {{ site.title }} | {{ site.subtitle }} {% else %} {{ page.title }} | {{ site.title }}{% endif %}" />
8
+
9
+ <meta name="twitter:description" content="{% if page.description == null %} {{ site.description }}
10
+ {% else %} {{ page.description }} {% endif %}" />
11
+
12
+ <meta name="twitter:image" content="
13
+ {%- if page.image -%}{{ site.url }}{{ site.baseurl }}{{ site.default_path }}
14
+ {%- if page.id -%}{{ page.image | prepend: 'posts/' }}{%- else -%}{{ page.image }}{%- endif -%}{%- else -%}{{ site.url }}{{ site.baseurl }}{{ site.fallback_path }}{{ site.brand }}{%- endif -%}" />
15
+ <!-- to implement this we need some kind of db recording the descriptors of our thumbs -->
16
+ <meta name="twitter:image:alt" content="" />
17
+ <!-- *** END TWITTER:CARD *** -->