recursero-jekyll-theme 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +69 -18
- data/_config.yml +77 -0
- data/_data/assets.json +6 -0
- data/_data/en.yml +61 -15
- data/_data/es.yml +64 -15
- data/_data/forms/contacto.yml +2 -2
- data/_data/layouts/about.yml +39 -22
- data/_data/layouts/category.yml +5 -10
- data/_data/layouts/menu.yml +73 -0
- data/_data/layouts/page.yml +7 -7
- data/_data/layouts/place.yml +13 -11
- data/_data/layouts/post.yml +7 -7
- data/_includes/contact.html +8 -5
- data/_includes/floating_alert.html +6 -0
- data/_includes/item.html +38 -0
- data/_includes/menu.html +23 -0
- data/_includes/onboarding.html +37 -0
- data/_includes/pack.html +1 -0
- data/_includes/password.html +1 -0
- data/_includes/picture.html +23 -0
- data/_includes/preload_font.html +1 -0
- data/_includes/search.html +4 -3
- data/_includes/share.html +3 -2
- data/_includes/submit.html +5 -1
- data/_layouts/about.html +1 -1
- data/_layouts/default.html +34 -2
- data/_layouts/page.html +1 -1
- data/_layouts/place.html +1 -1
- data/_layouts/post.html +2 -2
- data/_sass/accessibility.scss +48 -7
- data/_sass/editor.scss +17 -0
- data/_sass/embed.scss +8 -0
- data/_sass/floating_alert.scss +48 -0
- data/_sass/fonts.scss +0 -0
- data/_sass/helpers.scss +327 -31
- data/_sass/menu.scss +36 -0
- data/_sass/snap.scss +60 -0
- data/_sass/toggler.scss +34 -11
- data/assets/css/styles.scss +89 -7
- data/assets/css/styles.scss.orig +3 -0
- data/assets/data/manifest.js +29 -0
- data/assets/fonts/forkawesome-webfont.woff2 +0 -0
- data/assets/js/pack.3cf11284b767fdbbefa6.js +113 -0
- data/assets/js/pack.3cf11284b767fdbbefa6.js.map +1 -0
- data/assets/js/pack.4ced2556b94e5c09e5bc.js +113 -0
- data/assets/js/pack.4ced2556b94e5c09e5bc.js.map +1 -0
- data/assets/js/pack.c42a6f683b2c0c0fa404.js +90 -0
- data/assets/js/pack.c42a6f683b2c0c0fa404.js.map +1 -0
- data/assets/js/pack.d9a353affdca4644a9b2.js +113 -0
- data/assets/js/pack.d9a353affdca4644a9b2.js.map +1 -0
- data/assets/js/sw.3cf11284b767fdbbefa6.js +2 -0
- data/assets/js/sw.3cf11284b767fdbbefa6.js.map +1 -0
- data/assets/templates/alert.html +7 -0
- data/assets/templates/results.html +15 -7
- metadata +96 -45
- data/_includes/navbar.html +0 -53
- data/_sass/share.html +0 -12
- data/_sass/share_box.html +0 -16
- data/assets/js/pack.js +0 -90
- data/assets/js/pack.js.map +0 -1
data/_data/layouts/page.yml
CHANGED
|
@@ -27,7 +27,7 @@ description:
|
|
|
27
27
|
topics, we invite you to use it as a content warning, so that others
|
|
28
28
|
may decide when they want to read it.
|
|
29
29
|
author:
|
|
30
|
-
type: '
|
|
30
|
+
type: 'array'
|
|
31
31
|
label:
|
|
32
32
|
es: 'Autores'
|
|
33
33
|
en: 'Authors'
|
|
@@ -59,7 +59,7 @@ image:
|
|
|
59
59
|
Describe the main image for the visually impaired and
|
|
60
60
|
search engines
|
|
61
61
|
content:
|
|
62
|
-
type: '
|
|
62
|
+
type: 'content'
|
|
63
63
|
label:
|
|
64
64
|
es: 'Contenido del artículo'
|
|
65
65
|
en: 'Post content'
|
|
@@ -67,7 +67,7 @@ content:
|
|
|
67
67
|
es: 'Escribe aquí el artículo'
|
|
68
68
|
en: 'Write your post here'
|
|
69
69
|
permalink:
|
|
70
|
-
type: '
|
|
70
|
+
type: 'string'
|
|
71
71
|
label:
|
|
72
72
|
es: 'Enlace'
|
|
73
73
|
en: 'Permalink'
|
|
@@ -79,7 +79,7 @@ permalink:
|
|
|
79
79
|
If you want to use link format for this post other than the default,
|
|
80
80
|
change it here.
|
|
81
81
|
categories:
|
|
82
|
-
type: '
|
|
82
|
+
type: 'has_and_belongs_to_many'
|
|
83
83
|
filter:
|
|
84
84
|
layout: 'category'
|
|
85
85
|
inverse: 'posts'
|
|
@@ -90,7 +90,7 @@ categories:
|
|
|
90
90
|
es: 'Ayudan a organizar los artículos en temas'
|
|
91
91
|
en: 'Use categories to order posts by theme'
|
|
92
92
|
tags:
|
|
93
|
-
type: '
|
|
93
|
+
type: 'array'
|
|
94
94
|
label:
|
|
95
95
|
es: 'Etiquetas'
|
|
96
96
|
en: 'Tags'
|
|
@@ -98,7 +98,7 @@ tags:
|
|
|
98
98
|
es: 'Usa etiquetas para resaltar palabras clave'
|
|
99
99
|
en: 'Tags are helpful as keywords'
|
|
100
100
|
posts:
|
|
101
|
-
type: '
|
|
101
|
+
type: 'related_posts'
|
|
102
102
|
label:
|
|
103
103
|
es: 'Artículos relacionados'
|
|
104
104
|
en: ''
|
|
@@ -122,7 +122,7 @@ order:
|
|
|
122
122
|
es: 'La posición del artículo en la lista de artículos'
|
|
123
123
|
en: 'Post position in list'
|
|
124
124
|
notes:
|
|
125
|
-
type: '
|
|
125
|
+
type: 'markdown'
|
|
126
126
|
private: true
|
|
127
127
|
label:
|
|
128
128
|
es: 'Notas'
|
data/_data/layouts/place.yml
CHANGED
|
@@ -50,7 +50,7 @@ image:
|
|
|
50
50
|
Describe the main image for the visually impaired and
|
|
51
51
|
search engines
|
|
52
52
|
content:
|
|
53
|
-
type: '
|
|
53
|
+
type: 'content'
|
|
54
54
|
label:
|
|
55
55
|
es: 'Contenido del artículo'
|
|
56
56
|
en: 'Post content'
|
|
@@ -58,7 +58,7 @@ content:
|
|
|
58
58
|
es: 'Escribe aquí el artículo'
|
|
59
59
|
en: 'Write your post here'
|
|
60
60
|
permalink:
|
|
61
|
-
type: '
|
|
61
|
+
type: 'string'
|
|
62
62
|
label:
|
|
63
63
|
es: 'Enlace'
|
|
64
64
|
en: 'Permalink'
|
|
@@ -70,7 +70,7 @@ permalink:
|
|
|
70
70
|
If you want to use link format for this post other than the default,
|
|
71
71
|
change it here.
|
|
72
72
|
categories:
|
|
73
|
-
type: '
|
|
73
|
+
type: 'has_and_belongs_to_many'
|
|
74
74
|
filter:
|
|
75
75
|
layout: 'category'
|
|
76
76
|
inverse: 'posts'
|
|
@@ -81,7 +81,7 @@ categories:
|
|
|
81
81
|
es: 'Ayudan a organizar los artículos en temas'
|
|
82
82
|
en: 'Use categories to order posts by theme'
|
|
83
83
|
tags:
|
|
84
|
-
type: '
|
|
84
|
+
type: 'array'
|
|
85
85
|
label:
|
|
86
86
|
es: 'Etiquetas'
|
|
87
87
|
en: 'Tags'
|
|
@@ -89,7 +89,7 @@ tags:
|
|
|
89
89
|
es: 'Las etiquetas son términos ad-hoc para agrupar información, pueden ser lugares, especialidades, tipos de cirugía, alertas de contenido, etc.'
|
|
90
90
|
en: 'Tags are helpful as keywords'
|
|
91
91
|
posts:
|
|
92
|
-
type: '
|
|
92
|
+
type: 'related_posts'
|
|
93
93
|
label:
|
|
94
94
|
es: 'Artículos relacionados'
|
|
95
95
|
en: ''
|
|
@@ -122,7 +122,7 @@ coordenadas:
|
|
|
122
122
|
help:
|
|
123
123
|
es: ''
|
|
124
124
|
email:
|
|
125
|
-
type: '
|
|
125
|
+
type: 'string'
|
|
126
126
|
label:
|
|
127
127
|
es: 'Correo electrónico'
|
|
128
128
|
en: 'E-mail address'
|
|
@@ -130,7 +130,7 @@ email:
|
|
|
130
130
|
es: 'Dirección de correo electrónico para comunicarse'
|
|
131
131
|
en: 'E-mail address to contact'
|
|
132
132
|
transporte_publico:
|
|
133
|
-
type: '
|
|
133
|
+
type: 'array'
|
|
134
134
|
label:
|
|
135
135
|
es: 'Transporte público'
|
|
136
136
|
en: 'Public transportation'
|
|
@@ -138,7 +138,7 @@ transporte_publico:
|
|
|
138
138
|
es: 'Líneas de colectivos, trenes y subtes que pasan cerca'
|
|
139
139
|
en: 'Buses, trains and subways nearby'
|
|
140
140
|
telefonos:
|
|
141
|
-
type: '
|
|
141
|
+
type: 'array'
|
|
142
142
|
label:
|
|
143
143
|
es: 'Teléfonos'
|
|
144
144
|
en: 'Phone numbers'
|
|
@@ -146,7 +146,7 @@ telefonos:
|
|
|
146
146
|
es: 'Los números de teléfono para comunicarse, entre paréntesis los horarios u otra información útil, ej. "12345678 (de 10 a 17hs)"'
|
|
147
147
|
en: 'Phone numbers to call, with opening hours or other useful information in between parentheses, for example "12345678 (de 10 a 17hs)"'
|
|
148
148
|
horarios_de_atencion:
|
|
149
|
-
type: '
|
|
149
|
+
type: 'array'
|
|
150
150
|
label:
|
|
151
151
|
es: 'Horarios de atención'
|
|
152
152
|
en: 'Working hours'
|
|
@@ -154,7 +154,7 @@ horarios_de_atencion:
|
|
|
154
154
|
es: 'En el formato 09:00-17:00'
|
|
155
155
|
en: 'Use the format 09:00-17:00'
|
|
156
156
|
redes_sociales:
|
|
157
|
-
type: '
|
|
157
|
+
type: 'array'
|
|
158
158
|
label:
|
|
159
159
|
es: 'Sitio web y redes sociales'
|
|
160
160
|
en: 'Social networks'
|
|
@@ -186,7 +186,7 @@ order:
|
|
|
186
186
|
es: 'La posición del artículo en la lista de artículos'
|
|
187
187
|
en: 'Post position in list'
|
|
188
188
|
notes:
|
|
189
|
-
type: '
|
|
189
|
+
type: 'markdown'
|
|
190
190
|
private: true
|
|
191
191
|
label:
|
|
192
192
|
es: 'Notas'
|
|
@@ -194,3 +194,5 @@ notes:
|
|
|
194
194
|
help:
|
|
195
195
|
es: 'Comentarios internos, recordatorios, información privada. ¡No se publica en el sitio!'
|
|
196
196
|
en: "Internal comments, reminders, private information. This won't be published to the website and will appear encrypted in source code"
|
|
197
|
+
|
|
198
|
+
|
data/_data/layouts/post.yml
CHANGED
|
@@ -27,7 +27,7 @@ description:
|
|
|
27
27
|
topics, we invite you to use it as a content warning, so that others
|
|
28
28
|
may decide when they want to read it.
|
|
29
29
|
author:
|
|
30
|
-
type: '
|
|
30
|
+
type: 'array'
|
|
31
31
|
label:
|
|
32
32
|
es: 'Autores'
|
|
33
33
|
en: 'Authors'
|
|
@@ -59,7 +59,7 @@ image:
|
|
|
59
59
|
Describe the main image for the visually impaired and
|
|
60
60
|
search engines
|
|
61
61
|
content:
|
|
62
|
-
type: '
|
|
62
|
+
type: 'content'
|
|
63
63
|
label:
|
|
64
64
|
es: 'Contenido del artículo'
|
|
65
65
|
en: 'Post content'
|
|
@@ -67,7 +67,7 @@ content:
|
|
|
67
67
|
es: 'Escribe aquí el artículo'
|
|
68
68
|
en: 'Write your post here'
|
|
69
69
|
permalink:
|
|
70
|
-
type: '
|
|
70
|
+
type: 'string'
|
|
71
71
|
label:
|
|
72
72
|
es: 'Enlace'
|
|
73
73
|
en: 'Permalink'
|
|
@@ -79,7 +79,7 @@ permalink:
|
|
|
79
79
|
If you want to use link format for this post other than the default,
|
|
80
80
|
change it here.
|
|
81
81
|
categories:
|
|
82
|
-
type: '
|
|
82
|
+
type: 'has_and_belongs_to_many'
|
|
83
83
|
filter:
|
|
84
84
|
layout: 'category'
|
|
85
85
|
inverse: 'posts'
|
|
@@ -90,7 +90,7 @@ categories:
|
|
|
90
90
|
es: 'Ayudan a organizar los artículos en temas'
|
|
91
91
|
en: 'Use categories to order posts by theme'
|
|
92
92
|
tags:
|
|
93
|
-
type: '
|
|
93
|
+
type: 'array'
|
|
94
94
|
label:
|
|
95
95
|
es: 'Etiquetas'
|
|
96
96
|
en: 'Tags'
|
|
@@ -98,7 +98,7 @@ tags:
|
|
|
98
98
|
es: 'Usa etiquetas para resaltar palabras clave'
|
|
99
99
|
en: 'Tags are helpful as keywords'
|
|
100
100
|
posts:
|
|
101
|
-
type: '
|
|
101
|
+
type: 'related_posts'
|
|
102
102
|
label:
|
|
103
103
|
es: 'Artículos relacionados'
|
|
104
104
|
en: ''
|
|
@@ -122,7 +122,7 @@ order:
|
|
|
122
122
|
es: 'La posición del artículo en la lista de artículos'
|
|
123
123
|
en: 'Post position in list'
|
|
124
124
|
notes:
|
|
125
|
-
type: '
|
|
125
|
+
type: 'markdown'
|
|
126
126
|
private: true
|
|
127
127
|
label:
|
|
128
128
|
es: 'Notas'
|
data/_includes/contact.html
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
Esta imagen obtiene una cookie desde la API de Sutty para autorizar el
|
|
3
|
+
envío del formulario.
|
|
4
4
|
{% endcomment %}
|
|
5
|
-
<img class="d-none" src="https://api.sutty.nl/v1/sites/{{ site.hostname }}/contact/cookie.png" />
|
|
5
|
+
<img class="d-none invisible" src="https://api.sutty.nl/v1/sites/{{ site.hostname }}/contact/cookie.png" />
|
|
6
6
|
|
|
7
7
|
{% comment %}
|
|
8
8
|
El formulario se envía a la API. La definición del formulario se
|
|
9
9
|
encuentra en _data/forms/contacto.yml
|
|
10
10
|
{% endcomment %}
|
|
11
|
-
<form
|
|
12
|
-
|
|
11
|
+
<form
|
|
12
|
+
data-controller="contact"
|
|
13
|
+
data-delay="60"
|
|
14
|
+
action="https://api.sutty.nl/v1/sites/{{ site.hostname }}/contact/{{ include.name }}"
|
|
15
|
+
method="post">
|
|
13
16
|
{%- for field in include.form -%}
|
|
14
17
|
{% assign template = field[1].type | append: '.html' %}
|
|
15
18
|
<div class="col{{ field[1].col | default: 12 | prepend: '-' }}">
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div
|
|
2
|
+
data-controller="floating-alert"
|
|
3
|
+
class="floating-alert floating-alert-bottom floating-alert-default"
|
|
4
|
+
role="status" aria-live="polite" aria-atomic="true">
|
|
5
|
+
<div data-target="toast.content" class="floating-alert-content white background-black-t4"></div>
|
|
6
|
+
</div>
|
data/_includes/item.html
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
El ítem tiene un dropdown si tiene sub ítems o si tiene categorías.
|
|
3
|
+
{%- endcomment -%}
|
|
4
|
+
{%- assign dropdown = include.item.items | present -%}
|
|
5
|
+
{%- unless dropdown -%}
|
|
6
|
+
{%- assign dropdown = include.item.categories | present -%}
|
|
7
|
+
{%- endunless -%}
|
|
8
|
+
|
|
9
|
+
<div class="nav-item w-100 w-lg-auto {{ dropdown | value_if: 'dropdown d-flex flex-wrap' }}">
|
|
10
|
+
{%- comment -%}
|
|
11
|
+
La URL del item puede ser:
|
|
12
|
+
* El artículo vinculado
|
|
13
|
+
* El vínculo escrito manualmente
|
|
14
|
+
* La primera categoría de la lista
|
|
15
|
+
* La dirección propia (en el caso de categorías)
|
|
16
|
+
{%- endcomment -%}
|
|
17
|
+
<a
|
|
18
|
+
href="{{ include.item.post.url | default: include.item.link | default: include.item.categories[0].url | default: include.item.url }}"
|
|
19
|
+
class="nav-link flex-grow-1 flex-grow-lg-0">
|
|
20
|
+
{{ include.item.title }}
|
|
21
|
+
</a>
|
|
22
|
+
|
|
23
|
+
{%- if dropdown -%}
|
|
24
|
+
<button class="dropdown-toggle border-0 background-white w-5 w-lg-auto pl-lg-3"></button>
|
|
25
|
+
<div class="dropdown-menu w-100 w-lg-auto flex-grow-1 flex-grow-lg-0">
|
|
26
|
+
{% for item in include.item.items %}
|
|
27
|
+
{%- include_cached item.html item=item -%}
|
|
28
|
+
{% endfor %}
|
|
29
|
+
|
|
30
|
+
{%- comment -%}
|
|
31
|
+
Esto necesita `replace` en sutty-archives
|
|
32
|
+
{%- endcomment -%}
|
|
33
|
+
{%- for item in include.item.categories offset: 1 -%}
|
|
34
|
+
{%- include_cached item.html item=item -%}
|
|
35
|
+
{%- endfor -%}
|
|
36
|
+
</div>
|
|
37
|
+
{%- endif -%}
|
|
38
|
+
</div>
|
data/_includes/menu.html
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
Empezamos con los ítems que no dependen de otros e implementamos
|
|
3
|
+
recursivamente.
|
|
4
|
+
{%- endcomment -%}
|
|
5
|
+
{%- assign items = site.posts | where: 'layout', 'menu' | where: 'item', nil -%}
|
|
6
|
+
|
|
7
|
+
<nav class="navbar navbar-expand-lg navbar-light">
|
|
8
|
+
<button class="navbar-toggler"
|
|
9
|
+
type="button"
|
|
10
|
+
data-toggle="collapse"
|
|
11
|
+
data-target="#menu"
|
|
12
|
+
aria-label="{{ site.i18n.menu.title }}">
|
|
13
|
+
<span class="navbar-toggler-icon"></span>
|
|
14
|
+
</button>
|
|
15
|
+
|
|
16
|
+
<div class="collapse navbar-collapse" id="menu">
|
|
17
|
+
<div class="navbar-nav w-100 d-flex align-items-start justify-content-center">
|
|
18
|
+
{% for item in items %}
|
|
19
|
+
{%- include_cached item.html item=item -%}
|
|
20
|
+
{% endfor %}
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</nav>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
La barra de notificaciones, donde le pedimos a les usuaries que vayan
|
|
3
|
+
haciendo varias cosas. Quizás debería llamarse onboarding.
|
|
4
|
+
|
|
5
|
+
Primero tenemos que poder salir del navegador interno de Facebook,
|
|
6
|
+
Instagram, Telegram, etc.
|
|
7
|
+
{% endcomment %}
|
|
8
|
+
|
|
9
|
+
<aside
|
|
10
|
+
data-sw="{{ jekyll.production | ternary: site.data.assets['sw.js'], 'sw.js' }}"
|
|
11
|
+
data-controller="onboarding"
|
|
12
|
+
class="w-100 background-primary"
|
|
13
|
+
role="status"
|
|
14
|
+
aria-live="polite"
|
|
15
|
+
aria-atomic="true">
|
|
16
|
+
<div data-onboarding-target="internalBrowser" hidden>
|
|
17
|
+
<div class="h-20vh d-flex align-items-center">
|
|
18
|
+
{% comment %}
|
|
19
|
+
Con esta URL le decimos a Android y posible iOS que queremos abrir
|
|
20
|
+
este link en un navegador externo.
|
|
21
|
+
|
|
22
|
+
https://stackoverflow.com/a/58342222
|
|
23
|
+
{% endcomment %}
|
|
24
|
+
<a href="intent:{{ site.url }}#Intent;end" class="btn btn-block btn-primary">
|
|
25
|
+
{{ site.i18n.onboarding.internal_browser }}
|
|
26
|
+
</a>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div data-onboarding-target="browser" hidden>
|
|
31
|
+
<div class="h-20vh d-flex align-items-center">
|
|
32
|
+
<button data-action="onboarding#install" class="btn btn-block btn-primary">
|
|
33
|
+
{{ site.i18n.onboarding.browser }}
|
|
34
|
+
</button>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</aside>
|
data/_includes/pack.html
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script defer src="{{ jekyll.production | ternary: site.data.assets['assets/js/pack.js'], 'assets/js/pack.js' }}"></script>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% include input.html field=include.field form=include.form %}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
Imágenes responsive. Esto logra que solo se carguen las versiones de
|
|
3
|
+
las imágenes con el ancho máximo de la pantalla.
|
|
4
|
+
|
|
5
|
+
TODO: Las imágenes en md y superior nunca llegan al ancho máximo así
|
|
6
|
+
que tienen una resolución de más.
|
|
7
|
+
{% endcomment %}
|
|
8
|
+
{%- assign image = include.image.path | default: 'public/placeholder.png' %}
|
|
9
|
+
{%- assign height = include.height | default: site.i18n.post.height -%}
|
|
10
|
+
{%- assign width = include.width | default: '100' -%}
|
|
11
|
+
|
|
12
|
+
<picture>
|
|
13
|
+
{% for size in site.images.sizes %}
|
|
14
|
+
<source srcset="{{ image | thumbnail: size }}" media="(max-width: {{ size }}px)" />
|
|
15
|
+
{% endfor %}
|
|
16
|
+
|
|
17
|
+
<img
|
|
18
|
+
class="u-photo w-{{ width }} {{ include.cover | equals: false | value_unless: 'fit-cover' }} h-{{ height }} {{ include.extra }}"
|
|
19
|
+
loading="lazy"
|
|
20
|
+
itemprop="image"
|
|
21
|
+
src="{{ image | thumbnail: 1140 }}"
|
|
22
|
+
alt="{{ include.image.description | include.default_description }}" />
|
|
23
|
+
</picture>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<link rel="preload" as="font" type="font/woff2" crossorigin href="{{ include.font }}?{{ site.time | date: '%s' }}" />
|
data/_includes/search.html
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{%- comment -%}
|
|
2
2
|
Encabezado con buscador
|
|
3
3
|
{%- endcomment -%}
|
|
4
|
+
{%- assign param = include.param | default: 'search' -%}
|
|
4
5
|
<section id="{{ site.i18n.search.id }}">
|
|
5
6
|
<div class="jumbotron">
|
|
6
|
-
<form method="get" class="search" action="{{ site.i18n.search.url }}" data-controller="search">
|
|
7
|
+
<form method="get" class="search" action="{{ site.i18n.search.url }}" data-controller="search" data-action="search#search">
|
|
7
8
|
<div class="form-group">
|
|
8
|
-
<label for="
|
|
9
|
+
<label for="{{ param }}_q" class="sr-only">{{ site.i18n.search.placeholder }}</label>
|
|
9
10
|
<input
|
|
10
11
|
type="search"
|
|
11
12
|
required
|
|
12
|
-
id="
|
|
13
|
+
id="{{ param }}_q"
|
|
13
14
|
name="q"
|
|
14
15
|
placeholder="{{ site.i18n.search.placeholder }}"
|
|
15
16
|
class="form-control form-control-lg m-0"
|
data/_includes/share.html
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
{% endunless %}
|
|
6
6
|
{% assign title = include.title | default: '' | cgi_escape %}
|
|
7
7
|
{% assign description = include.description | default: '' | cgi_escape %}
|
|
8
|
+
{% assign tags = include.tags | join: ',' | default: '' | cgi_escape %}
|
|
8
9
|
|
|
9
10
|
<a
|
|
10
11
|
{% if include.share.url == '%url' %}
|
|
@@ -12,10 +13,10 @@
|
|
|
12
13
|
{% else %}
|
|
13
14
|
target="_blank"
|
|
14
15
|
{% endif %}
|
|
15
|
-
rel="nofollow"
|
|
16
|
+
rel="noopener nofollow"
|
|
16
17
|
title="{{ include.share.title }}"
|
|
17
18
|
class="d-flex flex-column align-items-center p-3"
|
|
18
|
-
href="{{ include.share.url | replace: '%url', url | replace: '%title', title | replace: '%description', description }}">
|
|
19
|
+
href="{{ include.share.url | replace: '%url', url | replace: '%title', title | replace: '%description', description | replace: '%tags', tags }}">
|
|
19
20
|
<i class="fa fa-fw fa-2x fa-{{ include.share.icon }}"></i>
|
|
20
21
|
<span>{{ include.share.title }}</span>
|
|
21
22
|
</a>
|
data/_includes/submit.html
CHANGED
data/_layouts/about.html
CHANGED
|
@@ -22,7 +22,7 @@ layout: default
|
|
|
22
22
|
|
|
23
23
|
<p>
|
|
24
24
|
<time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
|
25
|
-
{%- assign date_format = site.i18n.date | default: "%b %-d, %Y" -%}
|
|
25
|
+
{%- assign date_format = site.i18n.date.format | default: "%b %-d, %Y" -%}
|
|
26
26
|
{{ page.date | date: date_format }}
|
|
27
27
|
</time>
|
|
28
28
|
{%- for author in page.author -%}
|
data/_layouts/default.html
CHANGED
|
@@ -9,14 +9,46 @@
|
|
|
9
9
|
<meta name="color-scheme" content="light"/>
|
|
10
10
|
<meta name="referrer" content="strict-origin-when-cross-origin"/>
|
|
11
11
|
|
|
12
|
+
{% comment %}
|
|
13
|
+
No tenemos forma de hashear SASS aún, por lo que renovamos la caché
|
|
14
|
+
aplicando la hora de compilación del sitio. Es importante que los
|
|
15
|
+
CSS se renueven cuando se regenera el sitio, porque pueden contener
|
|
16
|
+
variables dinámicas (como personalización de colores y tipografía) o
|
|
17
|
+
minificarse distinto dependiendo del contenido.
|
|
18
|
+
{% endcomment %}
|
|
12
19
|
<link href="assets/css/styles.css" rel="stylesheet">
|
|
13
|
-
|
|
20
|
+
|
|
21
|
+
{% comment %}
|
|
22
|
+
Webpack. La configuración se pasa por variables de entorno, en
|
|
23
|
+
desarrollo hay que evitar el archivo .env (copiarlo de .env.example
|
|
24
|
+
si no existe.
|
|
25
|
+
{% endcomment %}
|
|
26
|
+
<link rel="preload" as="script" type="text/javascript" href="env.js" />
|
|
27
|
+
<script type="text/javascript" src="env.js"></script>
|
|
28
|
+
{% include_cached pack.html %}
|
|
29
|
+
|
|
30
|
+
{% comment %}
|
|
31
|
+
Agregar otras tipografías. Esto hace que las tipografías se carguen
|
|
32
|
+
lo más rápido posible y minimizar el tiempo en que se ven las del
|
|
33
|
+
navegador. En Firefox todavía no está soportado.
|
|
34
|
+
|
|
35
|
+
Fork Awesome lleva la hora de generación para poder renovarlo si
|
|
36
|
+
agregamos íconos nuevos, de lo contrario puede quedar cacheado para
|
|
37
|
+
siempre y les visitantes van a ver íconos rotos.
|
|
38
|
+
{% endcomment %}
|
|
39
|
+
{% include_cached preload_font.html font='assets/fonts/forkawesome-webfont.woff2' %}
|
|
40
|
+
|
|
41
|
+
<link rel="icon" type="image/svg+xml" href="public/favicon.svg">
|
|
42
|
+
<link rel="alternate icon" href="public/favicon.ico">
|
|
43
|
+
<link rel="mask-icon" href="public/favicon.svg" color="white">
|
|
44
|
+
<link rel="manifest" href="manifest.json">
|
|
14
45
|
|
|
15
46
|
{% seo %}
|
|
16
47
|
{% feed_meta %}
|
|
17
48
|
</head>
|
|
18
49
|
<body class="d-flex flex-column justify-content-between d-print-block min-vh-100">
|
|
19
|
-
{
|
|
50
|
+
{%- include_cached onboarding.html -%}
|
|
51
|
+
{%- include_cached menu.html active_cache_key=page.layout %}
|
|
20
52
|
{% include_cached search.html %}
|
|
21
53
|
|
|
22
54
|
<main class="flex-grow-1 container-fluid d-flex flex-column justify-content-start">
|
data/_layouts/page.html
CHANGED
|
@@ -28,7 +28,7 @@ layout: default
|
|
|
28
28
|
|
|
29
29
|
<p>
|
|
30
30
|
<time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
|
31
|
-
{%- assign date_format = site.i18n.date | default: "%b %-d, %Y" -%}
|
|
31
|
+
{%- assign date_format = site.i18n.date.format | default: "%b %-d, %Y" -%}
|
|
32
32
|
{{ page.date | date: date_format }}
|
|
33
33
|
</time>
|
|
34
34
|
{%- for author in page.author -%}
|
data/_layouts/place.html
CHANGED
|
@@ -28,7 +28,7 @@ layout: default
|
|
|
28
28
|
|
|
29
29
|
<p>
|
|
30
30
|
<time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
|
31
|
-
{%- assign date_format = site.i18n.date | default: "%b %-d, %Y" -%}
|
|
31
|
+
{%- assign date_format = site.i18n.date.format | default: "%b %-d, %Y" -%}
|
|
32
32
|
{{ page.date | date: date_format }}
|
|
33
33
|
</time>
|
|
34
34
|
{%- for author in page.author -%}
|
data/_layouts/post.html
CHANGED
|
@@ -28,8 +28,8 @@ layout: default
|
|
|
28
28
|
|
|
29
29
|
<p>
|
|
30
30
|
<time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
|
31
|
-
{%- assign date_format = site.i18n.date | default: "%b %-d, %Y" -%}
|
|
32
|
-
{{ page.date |
|
|
31
|
+
{%- assign date_format = site.i18n.date.format | default: "%b %-d, %Y" -%}
|
|
32
|
+
{{ page.date | date_local: date_format }}
|
|
33
33
|
</time>
|
|
34
34
|
{%- for author in page.author -%}
|
|
35
35
|
•
|
data/_sass/accessibility.scss
CHANGED
|
@@ -1,13 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
////
|
|
2
|
+
/// Accesibilidad
|
|
3
|
+
/// @group Accesibilidad
|
|
4
|
+
////
|
|
5
|
+
|
|
6
|
+
/// La navegación es suave. Esto hace que al navegar a elementos dentro
|
|
7
|
+
/// de la misma página no haga un salto, sino que haya una transición.
|
|
8
|
+
///
|
|
9
|
+
/// Es especialmente útil en sliders.
|
|
10
|
+
///
|
|
11
|
+
/// Sin embargo puede producir mareos a algunas personas.
|
|
12
|
+
* { scroll-behavior: smooth; }
|
|
4
13
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*/
|
|
14
|
+
/// Aquí se aplica la opción `prefers-reduced-motion: reduce`, pero
|
|
15
|
+
/// SassDoc no la estaría mostrando.
|
|
8
16
|
@media (prefers-reduced-motion: reduce) {
|
|
17
|
+
/// Si les usuaries prefirieron reducir las animaciones de los sitios,
|
|
18
|
+
/// deshabilitamos la navegación suavizada y las animaciones.
|
|
9
19
|
* {
|
|
10
|
-
scroll-behavior: auto;
|
|
20
|
+
scroll-behavior: auto !important;
|
|
11
21
|
animation: none !important;
|
|
12
22
|
}
|
|
13
23
|
}
|
|
24
|
+
|
|
25
|
+
/// Utilizamos Axe para poder marcarnos cuáles elementos no cumplen con
|
|
26
|
+
/// parámetros de accesibilidad durante el desarrollo. Esta clase
|
|
27
|
+
/// muestra un borde rojo alrededor de los elementos inaccesibles y al
|
|
28
|
+
/// obtener el foco, muestra los mensajes de error generados por Axe.js.
|
|
29
|
+
///
|
|
30
|
+
/// @link _packs/entry.js
|
|
31
|
+
.inaccesible {
|
|
32
|
+
outline: $red 1px solid;
|
|
33
|
+
|
|
34
|
+
@extend .position-relative;
|
|
35
|
+
|
|
36
|
+
&:focus::after {
|
|
37
|
+
@extend .position-fixed;
|
|
38
|
+
@extend .background-red;
|
|
39
|
+
@extend .white;
|
|
40
|
+
@extend .p-3;
|
|
41
|
+
|
|
42
|
+
left: 0;
|
|
43
|
+
bottom: 0;
|
|
44
|
+
width: 100vw;
|
|
45
|
+
font-size: 1rem;
|
|
46
|
+
|
|
47
|
+
word-wrap: normal;
|
|
48
|
+
line-break: auto;
|
|
49
|
+
white-space: pre-line;
|
|
50
|
+
|
|
51
|
+
/// El contenido se trae desde el ariaLabel del elemento.
|
|
52
|
+
content: attr(aria-label);
|
|
53
|
+
}
|
|
54
|
+
}
|
data/_sass/editor.scss
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
////
|
|
2
|
+
/// Estilos del editor de Sutty
|
|
3
|
+
/// @group Editor
|
|
4
|
+
///
|
|
5
|
+
|
|
6
|
+
/// Alineaciones soportadas. No soportamos justificado porque es
|
|
7
|
+
/// difícil que quede bien en web.
|
|
8
|
+
$aligns: (left,center,right);
|
|
9
|
+
|
|
10
|
+
/// Recorrer las alineaciones.
|
|
11
|
+
/// @name Alineaciones
|
|
12
|
+
@each $align in $aligns {
|
|
13
|
+
/// El editor coloca la alineación en un atributo data-align,
|
|
14
|
+
/// recorriendo cada una de las alineaciones disponibles.
|
|
15
|
+
/// @todo Lograr que SassDoc muestre el código completo.
|
|
16
|
+
div[data-align="#{$align}"] { text-align: $align; }
|
|
17
|
+
}
|
data/_sass/embed.scss
CHANGED