observatorio-jekyll-theme 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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
+ }