observatorio-jekyll-theme 0.1.2

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.
Files changed (163) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +168 -0
  3. data/README.md +164 -0
  4. data/_config.yml +112 -0
  5. data/_data/assets.json +4 -0
  6. data/_data/en.yml +106 -0
  7. data/_data/es.yml +131 -0
  8. data/_data/forms/asociate.yml +55 -0
  9. data/_data/forms/contacto.yml +59 -0
  10. data/_data/forms/dona.yml +60 -0
  11. data/_data/forms/newsletter.yml +18 -0
  12. data/_data/forms/shipping_address.yml +94 -0
  13. data/_data/forms/sumate.yml +46 -0
  14. data/_data/forms/user.yml +13 -0
  15. data/_data/layouts/about.yml +112 -0
  16. data/_data/layouts/banner_1.yml +65 -0
  17. data/_data/layouts/banner_2.yml +89 -0
  18. data/_data/layouts/biblioteca.yml +110 -0
  19. data/_data/layouts/cart.yml +222 -0
  20. data/_data/layouts/confirmation.yml +68 -0
  21. data/_data/layouts/contacto.yml +82 -0
  22. data/_data/layouts/email.yml +56 -0
  23. data/_data/layouts/integrante.yml +60 -0
  24. data/_data/layouts/menu.yml +73 -0
  25. data/_data/layouts/payment.yml +126 -0
  26. data/_data/layouts/peticiones.yml +87 -0
  27. data/_data/layouts/post.yml +135 -0
  28. data/_data/layouts/product.yml +142 -0
  29. data/_data/layouts/shipment.yml +126 -0
  30. data/_data/layouts/theme.yml +266 -0
  31. data/_includes/5b0263ea6cfc4dab9f3d3fcec87a8337.webp +0 -0
  32. data/_includes/archive.html +14 -0
  33. data/_includes/archive_layout_about.html +0 -0
  34. data/_includes/archive_layout_articulos.html +14 -0
  35. data/_includes/archive_layout_banner-1.html +0 -0
  36. data/_includes/archive_layout_banner-2.html +0 -0
  37. data/_includes/archive_layout_banner_1.html +0 -0
  38. data/_includes/archive_layout_banner_2.html +0 -0
  39. data/_includes/archive_layout_biblioteca.html +16 -0
  40. data/_includes/archive_layout_contacto.html +0 -0
  41. data/_includes/archive_layout_integrantes.html +26 -0
  42. data/_includes/archive_layout_layout.html +0 -0
  43. data/_includes/archive_layout_menu.html +0 -0
  44. data/_includes/archive_layout_theme.html +0 -0
  45. data/_includes/archive_post.html +0 -0
  46. data/_includes/boolean.html +30 -0
  47. data/_includes/cart_add.html +8 -0
  48. data/_includes/cart_controller.html +11 -0
  49. data/_includes/contact.html +23 -0
  50. data/_includes/content.html +1 -0
  51. data/_includes/country.html +53 -0
  52. data/_includes/device_detector.html +15 -0
  53. data/_includes/donacion.html +125 -0
  54. data/_includes/email.html +1 -0
  55. data/_includes/file.html +35 -0
  56. data/_includes/floating_alert.html +6 -0
  57. data/_includes/footer.html +11 -0
  58. data/_includes/form/boolean.html +1 -0
  59. data/_includes/form/content.html +1 -0
  60. data/_includes/form/email.html +1 -0
  61. data/_includes/form/file.html +1 -0
  62. data/_includes/form/hidden.html +1 -0
  63. data/_includes/form/image.html +1 -0
  64. data/_includes/form/input.html +1 -0
  65. data/_includes/form/markdown_content.html +1 -0
  66. data/_includes/form/number.html +1 -0
  67. data/_includes/form/predefined_array.html +1 -0
  68. data/_includes/form/section.html +1 -0
  69. data/_includes/form/separator.html +1 -0
  70. data/_includes/form/string.html +1 -0
  71. data/_includes/form/submit.html +1 -0
  72. data/_includes/form/tel.html +1 -0
  73. data/_includes/form/text.html +1 -0
  74. data/_includes/form/url.html +1 -0
  75. data/_includes/hidden.html +5 -0
  76. data/_includes/image.html +32 -0
  77. data/_includes/input.html +49 -0
  78. data/_includes/intento%20logo%20b_edited.webp +0 -0
  79. data/_includes/item.html +38 -0
  80. data/_includes/logo.png +0 -0
  81. data/_includes/logo.svg +1560 -0
  82. data/_includes/markdown_content.html +1 -0
  83. data/_includes/matomo.html +15 -0
  84. data/_includes/menu.html +27 -0
  85. data/_includes/navbar.html +32 -0
  86. data/_includes/newsletter.html +10 -0
  87. data/_includes/notification.html +5 -0
  88. data/_includes/number.html +1 -0
  89. data/_includes/pack.html +1 -0
  90. data/_includes/password.html +1 -0
  91. data/_includes/pay_what_you_can_controller.html +13 -0
  92. data/_includes/picture.html +23 -0
  93. data/_includes/post.html +48 -0
  94. data/_includes/postal_code.html +45 -0
  95. data/_includes/predefined_array.html +39 -0
  96. data/_includes/preload_font.html +1 -0
  97. data/_includes/product.html +38 -0
  98. data/_includes/search.html +25 -0
  99. data/_includes/section.html +1 -0
  100. data/_includes/separator.html +1 -0
  101. data/_includes/share.html +22 -0
  102. data/_includes/share_box.html +29 -0
  103. data/_includes/social_networks.html +8 -0
  104. data/_includes/state.html +52 -0
  105. data/_includes/string.html +3 -0
  106. data/_includes/subitem.html +7 -0
  107. data/_includes/submit.html +5 -0
  108. data/_includes/tel.html +1 -0
  109. data/_includes/text.html +32 -0
  110. data/_includes/url.html +1 -0
  111. data/_includes/video.html +7 -0
  112. data/_layouts/about.html +52 -0
  113. data/_layouts/acciones.html +21 -0
  114. data/_layouts/archive.html +5 -0
  115. data/_layouts/asociate.html +20 -0
  116. data/_layouts/biblioteca.html +85 -0
  117. data/_layouts/cart.html +72 -0
  118. data/_layouts/confirmation.html +23 -0
  119. data/_layouts/contacto.html +47 -0
  120. data/_layouts/default.html +72 -0
  121. data/_layouts/dona.html +20 -0
  122. data/_layouts/home.html +142 -0
  123. data/_layouts/integrante.html +26 -0
  124. data/_layouts/layout-categories.html +5 -0
  125. data/_layouts/layout.html +6 -0
  126. data/_layouts/page.html +5 -0
  127. data/_layouts/participa.html +12 -0
  128. data/_layouts/payment.html +21 -0
  129. data/_layouts/peticiones.html +24 -0
  130. data/_layouts/post.html +91 -0
  131. data/_layouts/product.html +110 -0
  132. data/_layouts/shipment.html +52 -0
  133. data/_layouts/sumate.html +20 -0
  134. data/_sass/accessibility.scss +54 -0
  135. data/_sass/content.scss +11 -0
  136. data/_sass/editor.scss +29 -0
  137. data/_sass/embed.scss +13 -0
  138. data/_sass/floating_alert.scss +48 -0
  139. data/_sass/fonts.scss +29 -0
  140. data/_sass/helpers.scss +379 -0
  141. data/_sass/menu.scss +36 -0
  142. data/_sass/share_box.scss +26 -0
  143. data/_sass/slider.scss +29 -0
  144. data/_sass/snap.scss +60 -0
  145. data/_sass/toggler.scss +62 -0
  146. data/assets/css/styles.scss +173 -0
  147. data/assets/data/site.json +10 -0
  148. data/assets/fonts/forkawesome-webfont.woff2 +0 -0
  149. data/assets/fonts/roboto/v27/KFOjCnqEu92Fr1Mu51TzBhc9-subset.woff2 +0 -0
  150. data/assets/fonts/roboto/v27/KFOkCnqEu92Fr1MmgWxP-subset.woff2 +0 -0
  151. data/assets/fonts/roboto/v27/KFOkCnqEu92Fr1Mu52xP-subset.woff2 +0 -0
  152. data/assets/fonts/roboto/v27/KFOlCnqEu92Fr1MmWUlvAw-subset.woff2 +0 -0
  153. data/assets/fonts/roboto/v27/KFOmCnqEu92Fr1Me5Q-subset.woff2 +0 -0
  154. data/assets/js/pack.9dc6883564ec9354c89d.js +114 -0
  155. data/assets/js/pack.9dc6883564ec9354c89d.js.map +1 -0
  156. data/assets/templates/alert.html +9 -0
  157. data/assets/templates/cart.html +67 -0
  158. data/assets/templates/confirmation.html +67 -0
  159. data/assets/templates/payment_methods.html +64 -0
  160. data/assets/templates/recover_order.html +13 -0
  161. data/assets/templates/results.html +53 -0
  162. data/assets/templates/shipping_methods.html +38 -0
  163. metadata +568 -0
@@ -0,0 +1,379 @@
1
+ ////
2
+ /// @group Utilidades
3
+ ////
4
+
5
+ /// Direcciones posibles
6
+ $directions: (top, right, bottom, left);
7
+
8
+ /// Crea una propiedad con prefijos de navegador, cuando no es
9
+ /// soportada por estándares, por ejemplo el guionado de texto.
10
+ @mixin vendor-prefix($property, $definition...) {
11
+ @each $prefix in $vendor-prefixes {
12
+ #{$prefix}$property: $definition;
13
+ }
14
+ }
15
+
16
+ @each $breakpoint in map-keys($grid-breakpoints) {
17
+ @include media-breakpoint-up($breakpoint) {
18
+ /// Obtiene el sufijo para cada clase responsive usando mixins de
19
+ /// Bootstrap. Valores posibles:
20
+ /// `""` (nada, aplica a todas las resoluciones), `-xs`, `-sm`,
21
+ /// `-md`, `-lg`, `-xl`.
22
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
23
+
24
+ /// Grilla en CSS, soporta armar una cantidad de columnas, indicar las
25
+ /// columnas que ocupan los elementos descendientes e incluso
26
+ /// solapamiento.
27
+ ///
28
+ /// @example html
29
+ /// <div class="d-grid grid-cols-5">
30
+ /// <div class="grid-row-1 grid-col-1-to-2"></div>
31
+ /// <div class="grid-row-2 grid-col-2-to-3"></div>
32
+ /// </div>
33
+ .d#{$infix}-grid {
34
+ display: grid !important;
35
+
36
+ @each $spacer, $_ in $spacers {
37
+ &.grid-cols#{$infix}-#{$spacer} {
38
+ grid-template-columns: repeat($spacer, 1fr) !important;
39
+ }
40
+
41
+ & > .grid-row#{$infix}-#{$spacer} {
42
+ grid-row: $spacer !important;
43
+ }
44
+
45
+ & > .grid-col#{$infix}-#{$spacer} {
46
+ grid-column: $spacer !important;
47
+ }
48
+
49
+ @each $spacer_to, $_ in $spacers {
50
+ & > .grid-col#{$infix}-#{$spacer}-to-#{$spacer_to} {
51
+ grid-column: #{$spacer} / #{$spacer_to} !important;
52
+ }
53
+ }
54
+ }
55
+ }
56
+
57
+ /// Ocultar la barra de scroll, útil para sliders horizontales.
58
+ ///
59
+ /// @example html
60
+ /// <div class="no-scrollbar-md"></div>
61
+ .no-scrollbar#{$infix} {
62
+ scrollbar-width: none;
63
+ -webkit-overflow-scrolling: touch;
64
+
65
+ &::-webkit-scrollbar { display: none; }
66
+ }
67
+
68
+ :enabled {
69
+ .show-when-disabled#{$infix} {
70
+ display: none !important;
71
+ }
72
+ }
73
+
74
+ :disabled {
75
+ .hide-when-disabled#{$infix} {
76
+ display: none !important;
77
+ }
78
+ }
79
+
80
+ /// Cursores
81
+ $cursors: (pointer, none);
82
+ @each $cursor in $cursors {
83
+ /// El elemento va a tener un cursor
84
+ ///
85
+ /// @example html
86
+ /// <div class="cursor-pointer"></div>
87
+ .cursor#{$infix}-#{$cursor} {
88
+ cursor: $cursor;
89
+ }
90
+ }
91
+
92
+ /// Eventos del cursor
93
+ $events: (none, auto);
94
+ @each $event in $events {
95
+ /// Habilita o deshabilita recibir eventos al tocar o clickear.
96
+ ///
97
+ /// @example html
98
+ /// <div class="pointer-event-none"></div>
99
+ .pointer-event#{$infix}-#{$event} {
100
+ pointer-events: $event;
101
+ }
102
+ }
103
+
104
+ /// Agrega una transición a cualquier modificación de atributos
105
+ .transition#{$infix} {
106
+ @include transition($transition-base);
107
+ }
108
+
109
+ /// Valores posibles para la propiedad `object-fit`
110
+ $objects: (contain, cover, fill, none, scale-down);
111
+ @each $object in $objects {
112
+ /// Ajustes de imagen y video con respecto al contenedor
113
+ ///
114
+ /// @example html
115
+ /// <img class="object-cover object-lg-contain"/>
116
+ .fit#{$infix}-#{$object} {
117
+ object-fit: #{$object};
118
+ }
119
+ }
120
+
121
+ /// _Overflow_, qué hacer cuando el contenido sobrepasa los límites del
122
+ /// contenedor.
123
+ $overflows: (auto, hidden, scroll);
124
+ /// También puede ser solo dentro de un eje
125
+ $overflow-axis: (x, y);
126
+ @each $overflow in $overflows {
127
+ /// Manejar el contenido sobre cualquier eje
128
+ ///
129
+ /// @example html
130
+ /// <div class="overflow-hidden overflow-scroll-md"></div>
131
+ .overflow#{$infix}-#{$overflow} {
132
+ overflow: $overflow !important;
133
+ }
134
+
135
+ @each $axis in $overflow-axis {
136
+ /// Manejar el contenido sobre un eje particular
137
+ ///
138
+ /// @example html
139
+ /// <div class="overflow-hidden-y overflow-scroll-x"></div>
140
+ .overflow-#{$axis}#{$infix}-#{$overflow} {
141
+ overflow-#{$axis}: $overflow !important;
142
+ }
143
+ }
144
+ }
145
+
146
+ @each $spacer, $length in $spacers {
147
+ /// Poder aumentar o disminuir el alto de la tipografía. Los
148
+ /// `spacers` están definidos en Bootstrap y pueden ser extendidos
149
+ /// desde styles.scss
150
+ ///
151
+ /// @link assets/css/styles.scss
152
+ /// @example html
153
+ /// <h1 class="f-3"></h1>
154
+ .f#{$infix}-#{$spacer} {
155
+ font-size: $length !important;
156
+ }
157
+
158
+ /// Columnas de texto
159
+ ///
160
+ /// @example html
161
+ /// <div class="text-column-1 text-column-md-3"></div>
162
+ .text-column#{$infix}-#{$spacer} {
163
+ column-count: $spacer;
164
+ }
165
+
166
+ /// Limitar la cantidad de líneas de un bloque de texto,
167
+ /// reemplazando el sobrante por puntos suspensivos. Es útil cuando
168
+ /// el diseño solo pide una cantidad de líneas pero no sabemos cuál
169
+ /// va a ser el largo.
170
+ ///
171
+ /// @example html
172
+ /// <h1 class="line-clamp-1"></h1>
173
+ .line-clamp#{$infix}-#{$spacer} {
174
+ overflow: hidden;
175
+ display: -webkit-box;
176
+ -webkit-line-clamp: $spacer;
177
+ -webkit-box-orient: vertical;
178
+ }
179
+
180
+ @each $direction in $directions {
181
+ /// Ubicación absoluta, usar con position-*
182
+ ///
183
+ /// @example html
184
+ /// <div class="position-absolute top-0 left-3"></div>
185
+ .#{$direction}#{$infix}-#{$spacer} {
186
+ #{$direction}: $length
187
+ }
188
+ }
189
+ }
190
+
191
+ /// Anchos y altos en base a `$sizes` definido por Bootstrap. Para
192
+ /// personalizar los tamaños, modificarlos o agregarlos en `styles.scss`
193
+ ///
194
+ /// @link assets/css/styles.scss
195
+ @each $prop, $abbrev in (width: w, height: h) {
196
+ @each $size, $length in $sizes {
197
+ .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
198
+ .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
199
+ .min-#{$abbrev}#{$infix}-#{$size} { min-#{$prop}: $length !important; }
200
+ .max-#{$abbrev}#{$infix}-#{$size} { max-#{$prop}: $length !important; }
201
+ }
202
+ }
203
+
204
+ /// Tipos de _scroll_ posible
205
+ $scrolls: (auto, smooth);
206
+ @each $scroll in $scrolls {
207
+ /// Poder modificar el tipo de _scroll_ de forma _responsive_
208
+ ///
209
+ /// @example html
210
+ /// <div class="scroll-auto scroll-md-smooth"></div>
211
+ .scroll#{$infix}-#{$scroll} {
212
+ scroll-behavior: #{$scroll};
213
+ }
214
+ }
215
+
216
+ /// Bordes. Bootstrap no define bordes _responsive_
217
+ ///
218
+ /// @link node_modules/bootstrap/scss/utilities/_borders.scss
219
+ /// @example html
220
+ /// <div class="border border-md-top-0"></div>
221
+ .border#{$infix} { border: $border-width solid $border-color !important; }
222
+ .border#{$infix}-0 { border: 0 !important; }
223
+
224
+ @each $direction in $directions {
225
+ .border#{$infix}-#{$direction} { border-#{$direction}: $border-width solid $border-color !important; }
226
+ .border#{$infix}-#{$direction}-0 { border-#{$direction}: 0 !important; }
227
+ }
228
+
229
+ $aligns: (left,center,right);
230
+ @each $align in $aligns {
231
+ /// Alineación _responsive_
232
+ ///
233
+ /// @example html
234
+ /// <div class="text-center text-md-right"></div>
235
+ .text#{$infix}-#{$align} { text-align: $align !important; }
236
+ }
237
+
238
+ @each $position in $positions {
239
+ /// Posicionamiento
240
+ ///
241
+ /// @example html
242
+ /// <div class="position-relative position-md-absolute"></div>
243
+ .position#{$infix}-#{$position} { position: $position !important; }
244
+ }
245
+
246
+ @each $color, $rgb in $colors {
247
+ /// Colores de fondo. Es raro que usemos versiones _responsive_, pero
248
+ /// no está de más tenerlas.
249
+ ///
250
+ /// @link assets/css/styles.scss
251
+ /// @example html
252
+ /// <div class="background-red"></div>
253
+ .background#{$infix}-#{$color} {
254
+ background-color: var(--#{$color});
255
+
256
+ &:focus {
257
+ background-color: var(--#{$color});
258
+ }
259
+ }
260
+
261
+ @each $opacity, $degree in $opacities {
262
+ /// Color de fondo con transparencia (opacidad)
263
+ ///
264
+ /// @example html
265
+ /// <div class="background-red-t2"></div>
266
+ .background#{$infix}-#{$color}-t#{$opacity} {
267
+ background-color: scale-color($rgb, $alpha: $degree);
268
+ }
269
+ }
270
+
271
+ /// Atributos de SVG
272
+ $svg-attributes: (stroke, fill);
273
+ @each $attr in $svg-attributes {
274
+ /// Poder cambiar el relleno o la línea de un SVG
275
+ ///
276
+ /// @example html
277
+ /// <div class="stroke-black fill-red">
278
+ /// <svg/>
279
+ /// </div>
280
+ .#{$attr}#{$infix}-#{$color} {
281
+ svg {
282
+ * {
283
+ #{$attr}: var(--#{$color});
284
+ }
285
+ }
286
+ }
287
+ }
288
+
289
+ /// Barras de _scroll_ de colores
290
+ ///
291
+ /// @example html
292
+ /// <div class="scrollbar-green"></div>
293
+ .scrollbar#{$infix}-#{$color} {
294
+ scrollbar-color: var(--#{$color}) transparent;
295
+ scrollbar-width: thin;
296
+
297
+ &::-webkit-scrollbar {
298
+ width: 5px;
299
+ height: 8px;
300
+ background-color: transparent;
301
+ }
302
+
303
+ &::-webkit-scrollbar-thumb {
304
+ background: var(--#{$color});
305
+ }
306
+ }
307
+
308
+ /// Bordes de color
309
+ ///
310
+ /// @example html
311
+ /// <div class="border-red"></div>
312
+ .border#{$infix}-#{$color} {
313
+ border-color: var(--#{$color}) !important;
314
+ }
315
+
316
+ /// Cambiar el fondo al pasar por encima o hacer foco
317
+ ///
318
+ /// @example html
319
+ /// <div class="background-black background-hover-red"></div>
320
+ .background-hover#{$infix}-#{$color} {
321
+ &:hover,
322
+ &:focus-within {
323
+ background-color: var(--#{$color});
324
+ }
325
+ }
326
+
327
+ /// Cambiar el color al pasar por encima o hacer foco
328
+ ///
329
+ /// @example html
330
+ /// <div class="black hover-red"></div>
331
+ .hover-#{$color} {
332
+ &:hover,
333
+ &:focus-within {
334
+ color: var(--#{$color}) !important;
335
+ }
336
+ }
337
+
338
+ /// Cambiar el color, también aplica a la selección de texto.
339
+ ///
340
+ /// @example html
341
+ /// <div class="black hover-red"></div>
342
+ .#{$color}#{$infix} {
343
+ color: var(--#{$color});
344
+
345
+ &:focus {
346
+ color: var(--#{$color});
347
+ }
348
+
349
+ /// Invertir el color en la selección, con el mismo color de fondo y
350
+ /// texto en blanco.
351
+ ::-moz-selection,
352
+ ::selection {
353
+ background: var(--#{$color});
354
+ color: white;
355
+ }
356
+
357
+ /// Si el contenedor tiene un color, también aplica a los bordes de los
358
+ /// elementos de un formulario.
359
+ ///
360
+ /// @todo Evaluar si es realmente necesario hacerlo así, porque no
361
+ /// aplica a las sombras.
362
+ .form-control {
363
+ border-color: var(--#{$color});
364
+ color: var(--#{$color});
365
+ }
366
+
367
+ /// Los `<hr/>` también cambian de color.
368
+ ///
369
+ /// @example html
370
+ /// <div class="red">
371
+ /// <hr/>
372
+ /// </div>
373
+ hr {
374
+ border-color: var(--#{$color});
375
+ }
376
+ }
377
+ }
378
+ }
379
+ }
data/_sass/menu.scss ADDED
@@ -0,0 +1,36 @@
1
+ /// El menú hamburguesa se expande cuando obtiene el foco y se oculta
2
+ /// cuando lo pierde. Esto nos permite tener un menú dinámico sin
3
+ /// necesidad de JS.
4
+ ///
5
+ /// @group Menú
6
+ /// @link _includes/menu.html
7
+ /// @todo En realidad el evento del foco está puesto en toda la navbar
8
+ /// en lugar de solo en el ícono de hamburguesa.
9
+ /// @example html
10
+ /// <nav class="navbar">
11
+ /// <button class="navbar-toggler">
12
+ /// <span class="navbar-toggler-icon"></span>
13
+ /// </button>
14
+ ///
15
+ /// <div class="collapse navbar-collapse" id="menu"></div>
16
+ /// </nav>
17
+ .navbar {
18
+ &:focus-within {
19
+ .navbar-collapse {
20
+ @extend .d-block;
21
+ }
22
+ }
23
+
24
+ .dropdown {
25
+ .dropdown-menu {
26
+ @extend .d-none;
27
+ }
28
+
29
+ &:hover,
30
+ &:focus-within {
31
+ .dropdown-menu {
32
+ @extend .d-block;
33
+ }
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,26 @@
1
+ input[type="checkbox"].toggler {
2
+ &:focus + label {
3
+ outline: none;
4
+ }
5
+ }
6
+
7
+ .share-box {
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100vw;
12
+ height: 100vh;
13
+ background-color: rgba(0,0,0,.5);
14
+
15
+ @include vendor-prefix(transition, all 0.2s $bezier);
16
+
17
+ a {
18
+ border: $border-width solid transparent;
19
+
20
+ &:focus,
21
+ &:hover {
22
+ text-decoration: none;
23
+ border: $border-width solid $border-color;
24
+ }
25
+ }
26
+ }
data/_sass/slider.scss ADDED
@@ -0,0 +1,29 @@
1
+ .slider {
2
+ & > .inside {
3
+ overflow-x: scroll;
4
+ scroll-behavior: smooth;
5
+ }
6
+
7
+ .controls {
8
+ a {
9
+ &.active,
10
+ &:hover,
11
+ &:focus,
12
+ &:active {
13
+ text-decoration: none;
14
+
15
+ i {
16
+ @extend .fa-circle;
17
+ }
18
+ }
19
+ }
20
+ }
21
+
22
+ .decoration {
23
+ font-size: $h2-font-size;
24
+ }
25
+
26
+ .content {
27
+ @extend .lead;
28
+ }
29
+ }
data/_sass/snap.scss ADDED
@@ -0,0 +1,60 @@
1
+ ////
2
+ /// @group Snap
3
+ ////
4
+
5
+ /// _Snap_ es una forma de hacer que los elementos se alineen
6
+ /// automáticamente a partes de su contenedor durante el _scroll_. Si le
7
+ /// usuarie _scrollea_ hasta la mitad, el navegador continua el _scroll_
8
+ /// hasta que se alinee. Es útil para presentaciones de diapositivas
9
+ /// (como el sitio de Sutty) o _banners_ con navegación horizontal
10
+ /// (_sliders_).
11
+ ///
12
+ /// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap
13
+ $snap-types: (none, mandatory, proximity);
14
+ /// Ejes
15
+ $snap-directions: (y, x);
16
+ /// Puntos de alineación
17
+ $snap-points: (start, end, center, none);
18
+
19
+ @each $breakpoint in map-keys($grid-breakpoints) {
20
+ @include media-breakpoint-up($breakpoint) {
21
+ /// Obtiene el sufijo para cada clase responsive usando mixins de
22
+ /// Bootstrap. Valores posibles:
23
+ /// `""` (nada, aplica a todas las resoluciones), `-xs`, `-sm`,
24
+ /// `-md`, `-lg`, `-xl`.
25
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
26
+
27
+ @each $snap-type in $snap-types {
28
+ @each $snap-direction in $snap-directions {
29
+ /// El contenedor indica la dirección y obligatoriedad del snap
30
+ ///
31
+ /// @example html
32
+ /// <div class="snap-mandatory-y snap-proximity-md-y"></div>
33
+ .snap-#{$snap-type}#{$infix}-#{$snap-direction} {
34
+ scroll-snap-points-#{$snap-direction}: repeat(100%);
35
+ scroll-snap-destination: 0 0;
36
+
37
+ @each $prefix in $vendor-prefixes {
38
+ #{$prefix}scroll-snap-type: #{$snap-direction} #{$snap-type};
39
+ #{$prefix}scroll-snap-type: #{$snap-type};
40
+ }
41
+
42
+ @each $snap-point in $snap-points {
43
+ /// Los elementos que son descendientes directos se alinean a
44
+ /// su contenedor
45
+ ///
46
+ /// @example html
47
+ /// <div class="snap-mandatory-y snap-proximity-md-y">
48
+ /// <div class="snap-start"></div>
49
+ /// <div class="snap-center"></div>
50
+ /// <div class="snap-end"></div>
51
+ /// </div>
52
+ & > .snap-#{$snap-point} {
53
+ scroll-snap-align: #{$snap-point};
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,62 @@
1
+ ////
2
+ /// @group Toggler
3
+ ////
4
+
5
+ /// Desplegar menúes sin javascript!
6
+ ///
7
+ /// Comenzamos con un `<input type="checkbox"/>` con la clase
8
+ /// `.toggler`.
9
+ ///
10
+ /// @todo ¿Deprecar? Según el validador de HTML los `<label>` no pueden
11
+ /// contener elementos de bloques, como `<div>`.
12
+ /// @link https://dev.to/cydstumpel/creating-a-fold-out-navigation-with-css-only-4g9k
13
+ ///
14
+ /// @example html
15
+ /// <div>
16
+ /// <input type="checkbox" class="toggler" id="toggler" />
17
+ /// <label for="toggler">
18
+ /// Esta es la parte visible, puede contener un ícono. Los
19
+ /// atributos id y for son importantes para que el label se
20
+ /// asocie con el input invisible.
21
+ /// <div class="toggled">
22
+ /// Esta es la parte solo visible cuando el label es tocado.
23
+ /// </div>
24
+ /// </label>
25
+ /// </div>
26
+ input[type="checkbox"].toggler {
27
+ /// Por defecto está oculto pero todavía queremos que se le pueda dar
28
+ /// foco con el / teclado
29
+ ///
30
+ /// @todo ¿Usar `@extend .sr-only`?
31
+ opacity: 0;
32
+ position: absolute;
33
+
34
+ /// El `<label>` inmediatamente posterior al `<input>` (`+`) contiene
35
+ /// descendientes con la clase `.toggled` que cambian la visibilidad según
36
+ /// el estado del `<input>`.
37
+ & + label {
38
+ .toggled {
39
+ z-index: 10;
40
+ visibility: hidden;
41
+ }
42
+ }
43
+
44
+ /// Al tocar el `<input>`, mostramos el elemento oculto.
45
+ &:checked + label {
46
+ .toggled {
47
+ visibility: visible;
48
+ }
49
+ }
50
+
51
+ & + label {
52
+ border: none;
53
+ outline: none;
54
+ z-index: 11;
55
+ }
56
+
57
+ /// Dar una guía visual de que estamos enfocando el `<input>`,
58
+ /// trasladando el mismo estilo a su `<label>`
59
+ &:focus + label {
60
+ outline: 1px dotted grey ;
61
+ }
62
+ }