adhesiones-jekyll-theme 0.2.1 → 0.2.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.
@@ -0,0 +1,25 @@
1
+ {%- assign param = include.param | default: 'search' -%}
2
+
3
+ <form method="get" action="" class="form-inline" data-controller="search" data-action="search#search">
4
+ <div class="form-group">
5
+ <label for="{{ param }}_q" class="sr-only">{{ site.i18n.search.label }}</label>
6
+
7
+ <div class="input-group flex-nowrap">
8
+ <div class="input-group-prepend">
9
+ <span class="input-group-text fa fa-search border-0 pt-2"></span>
10
+ </div>
11
+
12
+ <input
13
+ class="border-0 form-control"
14
+ type="search"
15
+ required
16
+ id="{{ param }}_q"
17
+ name="q"
18
+ placeholder="{{ site.i18n.search.submit }}"
19
+ data-target="search.q"
20
+ autocomplete="off" />
21
+ </div>
22
+ </div>
23
+
24
+ <input class="sr-only" type="submit" value="{{ site.i18n.search.submit }}" />
25
+ </form>
data/_includes/share.html CHANGED
@@ -1,10 +1,11 @@
1
1
  {% capture url %}{{ site.url }}{{ include.url }}{% endcapture %}
2
2
 
3
3
  {% unless include.share.url == '%url' %}
4
- {% assign url = url | cgi_escape %}
4
+ {% assign url = url | default: '' | cgi_escape %}
5
5
  {% endunless %}
6
- {% assign title = include.title | cgi_escape %}
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>
@@ -1 +1,5 @@
1
- <input type="submit" class="btn btn-success" value="{{ include.field[1].label[site.locale] }}" />
1
+ <input
2
+ data-target="contact.submit"
3
+ type="submit"
4
+ class="btn btn-success"
5
+ value="{{ include.field[1].label[site.locale] }}" />
@@ -10,7 +10,26 @@
10
10
  <meta name="referrer" content="strict-origin-when-cross-origin" />
11
11
 
12
12
  <link href="assets/css/styles.css" rel="stylesheet">
13
- <script defer type="text/javascript" src="assets/js/script.js"></script>
13
+
14
+ {% comment %}
15
+ Webpack. La configuración se pasa por variables de entorno, en
16
+ desarrollo hay que evitar el archivo .env (copiarlo de .env.example
17
+ si no existe.
18
+ {% endcomment %}
19
+ <link rel="preload" as="script" type="text/javascript" href="env.js" />
20
+ <script type="text/javascript" src="env.js"></script>
21
+ <script defer type="text/javascript" src="assets/js/pack.js"></script>
22
+
23
+ {% comment %}
24
+ Agregar otras tipografías. Esto hace que las tipografías se carguen
25
+ lo más rápido posible y minimizar el tiempo en que se ven las del
26
+ navegador. En Firefox todavía no está soportado.
27
+ {% endcomment %}
28
+ {% include_cached preload_font.html font='assets/fonts/forkawesome-webfont.woff2' %}
29
+
30
+ <link rel="icon" type="image/svg+xml" href="public/favicon.svg">
31
+ <link rel="alternate icon" href="public/favicon.ico">
32
+ <link rel="mask-icon" href="public/favicon.svg" color="white">
14
33
 
15
34
  {% seo %}
16
35
  {% feed_meta %}
data/_layouts/home.html CHANGED
@@ -27,7 +27,7 @@ layout: default
27
27
  <h1 class="font-weight-bold">{{ documento.title }}</h1>
28
28
  &mdash;
29
29
  <time datetime="{{ documento.date }}">
30
- {{ documento.date | date: site.i18n.date }}
30
+ {{ documento.date | date: site.i18n.date.format }}
31
31
  </time>
32
32
  </div>
33
33
 
@@ -76,7 +76,10 @@ layout: default
76
76
  </label>
77
77
 
78
78
  <div class="toggled collapsed fade">
79
- <form action="{{ site.sutty }}v1/sites/{{ site.hostname }}/posts/{{ form }}" method="post" enctype="multipart/form-data">
79
+ <form
80
+ data-controller="contact"
81
+ data-delay="30"
82
+ action="{{ site.sutty }}v1/sites/{{ site.hostname }}/posts/{{ form }}" method="post" enctype="multipart/form-data">
80
83
  <div class="row justify-content-center">
81
84
  {%- for field in site.data.layouts[form] -%}
82
85
  {%- if field[1].skip -%}{% continue %}{%- endif -%}
@@ -89,6 +92,10 @@ layout: default
89
92
 
90
93
  <div class="col-12">
91
94
  <input type="submit" value="{{ site.i18n.home.form.submit }}" class="btn btn-success btn-block" />
95
+ <small
96
+ class="form-text text-muted">
97
+ {{ site.i18n.home.form.submit_help }}
98
+ </small>
92
99
  </div>
93
100
  </div>
94
101
  </form>
@@ -166,7 +173,7 @@ layout: default
166
173
 
167
174
 
168
175
  <time datetime="{{ adhesion.date }}">
169
- {{ adhesion.date | date: site.i18n.date }}
176
+ {{ adhesion.date | date: site.i18n.date.format }}
170
177
  </time>
171
178
  </header>
172
179
 
data/_layouts/post.html CHANGED
@@ -4,10 +4,10 @@ layout: default
4
4
 
5
5
  <article class="h-entry" itemscope itemtype="http://schema.org/Article">
6
6
  <header>
7
- <h1 class="p-name" itemprop="name headline">{{ page.title | escape }}</h1>
7
+ <h1 class="p-name" itemprop="name headline">{{ page.title | default: '' | escape }}</h1>
8
8
 
9
9
  {%- if page.description -%}
10
- <p class="lead p-summary" itemprop="description">{{ page.description | escape }}</p>
10
+ <p class="lead p-summary" itemprop="description">{{ page.description | default: '' | escape }}</p>
11
11
  {%- endif -%}
12
12
 
13
13
  {%- if page.image.path -%}
@@ -22,14 +22,14 @@ 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" -%}
26
- {{ page.date | date: date_format }}
25
+ {%- assign date_format = site.i18n.date.format | default: "%b %-d, %Y" -%}
26
+ {{ page.date | date_local: date_format }}
27
27
  </time>
28
28
  {%- for author in page.author -%}
29
29
 
30
30
  <span itemprop="author" itemscope itemtype="http://schema.org/Person">
31
31
  <span class="p-author h-card" itemprop="name">
32
- {{ author | escape }}
32
+ {{ author | default: '' | escape }}
33
33
  </span>
34
34
  </span>
35
35
  {%- endfor -%}
@@ -11,3 +11,27 @@
11
11
  animation: none !important;
12
12
  }
13
13
  }
14
+
15
+ .inaccesible {
16
+ outline: $red 1px solid;
17
+
18
+ @extend .position-relative;
19
+
20
+ &:focus::after {
21
+ @extend .position-fixed;
22
+ @extend .background-red;
23
+ @extend .white;
24
+ @extend .p-3;
25
+
26
+ left: 0;
27
+ bottom: 0;
28
+ width: 100vw;
29
+ font-size: 1rem;
30
+
31
+ word-wrap: normal;
32
+ line-break: auto;
33
+ white-space: pre-line;
34
+
35
+ content: attr(aria-label);
36
+ }
37
+ }
data/_sass/editor.scss ADDED
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Estilos del editor de Sutty
3
+ */
4
+
5
+ // Alineación
6
+ div[data-align="left"] { text-align: left; }
7
+ div[data-align="center"] { text-align: center; }
8
+ div[data-align="right"] { text-align: right; }
data/_sass/embed.scss ADDED
@@ -0,0 +1,5 @@
1
+ iframe {
2
+ border: 0;
3
+ width: 100%;
4
+ min-height: 480px;
5
+ }
@@ -0,0 +1,10 @@
1
+ .floating-alert {
2
+ &.floating-alert-bottom {
3
+ bottom: 2rem;
4
+ }
5
+
6
+ .floating-alert-content {
7
+ border-radius: 2rem;
8
+ padding: .5rem 1rem;
9
+ }
10
+ }
data/_sass/helpers.scss CHANGED
@@ -1,54 +1,318 @@
1
- $bezier: cubic-bezier(0.75, 0, 0.25, 1);
1
+ // En este archivo colocamos todos las herramientas que nos hagan falta,
2
+ // de forma que podamos generar clases específicas que sean combinables
3
+ // con otras, en lugar de escribir clases específicas para cada
4
+ // elemento.
5
+ //
6
+ // Cada clase tiene su versión responsive de acuerdo a los parámetros de
7
+ // Bootstrap.
2
8
 
3
- /*
4
- * Crea una propiedad con prefijos de navegador
5
- */
6
- $vendor-prefixes: ("", "-webkit-", "-ms-", "-o-", "-moz-");
9
+ // Ocultar la barra de scroll, útil para sliders horizontales.
10
+ .no-scrollbar {
11
+ scrollbar-width: none;
12
+ -webkit-overflow-scrolling: touch;
13
+
14
+ &::-webkit-scrollbar { display: none; }
15
+ }
16
+
17
+ // Mismo alto que ancho
18
+ .square {
19
+ @extend .position-relative;
20
+ padding-bottom: 100%;
21
+
22
+ & > * {
23
+ @extend .position-absolute;
24
+ @extend .top-0;
25
+ @extend .left-0;
26
+ @extend .h-100;
27
+ }
28
+ }
29
+
30
+ // Eventos del cursor
31
+ @each $event in (none, auto) {
32
+ .pointer-event-#{$event} {
33
+ pointer-events: $event;
34
+ }
35
+
36
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
37
+ @include media-breakpoint-up($grid-breakpoint) {
38
+ .pointer-event-#{$grid-breakpoint}-#{$event} {
39
+ pointer-events: $event;
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ // Agrega una transición a cualquier modificación de atributos
46
+ .transition {
47
+ @include transition($transition-base);
48
+ }
49
+
50
+ // Ajustes de imagen y video con respecto al contenedor
51
+ @each $keyword in (contain, cover, fill, none, scale-down) {
52
+ .fit-#{$keyword} {
53
+ object-fit: #{$keyword};
54
+ }
55
+
56
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
57
+ @include media-breakpoint-up($grid-breakpoint) {
58
+ .fit-#{$grid-breakpoint}-#{$keyword} {
59
+ object-fit: #{$keyword};
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ // Cursores
66
+ @each $cursor in (pointer none) {
67
+ .cursor-#{$cursor} {
68
+ cursor: $cursor;
69
+ }
70
+ }
71
+
72
+ // Overflow
73
+ @each $value in (auto, hidden, scroll) {
74
+ .overflow-#{$value} {
75
+ overflow: $value !important;
76
+ }
77
+
78
+ @each $axis in (y, x) {
79
+ .overflow-#{$axis}-#{$value} {
80
+ overflow-#{$axis}: $value !important;
81
+ }
82
+ }
83
+
84
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
85
+ @include media-breakpoint-up($grid-breakpoint) {
86
+ .overflow-#{$grid-breakpoint}-#{$value} {
87
+ overflow: $value !important;
88
+ }
89
+
90
+ @each $axis in (y, x) {
91
+ .overflow-#{$grid-breakpoint}-#{$axis}-#{$value} {
92
+ overflow-#{$axis}: $value !important;
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ @each $spacer, $length in $spacers {
100
+ // Poder aumentar o disminuir el alto de la tipografía
101
+ .f-#{$spacer} {
102
+ font-size: $length !important;
103
+ }
104
+
105
+ // Columnas de texto
106
+ .text-column-#{$spacer} {
107
+ column-count: $spacer;
108
+ }
109
+
110
+ // Limitar la cantidad de líneas de un bloque de texto
111
+ .line-clamp-#{$spacer} {
112
+ overflow: hidden;
113
+ display: -webkit-box;
114
+ -webkit-line-clamp: $spacer;
115
+ -webkit-box-orient: vertical;
116
+ }
117
+
118
+ // Ubicación absoluta, usar con position-*
119
+ @each $direction in (top, right, bottom, left) {
120
+ .#{$direction}-#{$spacer} {
121
+ #{$direction}: $length
122
+ }
123
+ }
124
+
125
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
126
+ @include media-breakpoint-up($grid-breakpoint) {
127
+ // Poder aumentar o disminuir el alto de la tipografía
128
+ .f-#{$grid-breakpoint}-#{$spacer} {
129
+ font-size: $length !important;
130
+ }
131
+
132
+ // Columnas de texto
133
+ .text-column-#{$grid-breakpoint}-#{$spacer} {
134
+ column-count: $spacer;
135
+ }
136
+
137
+ // Limitar la cantidad de líneas de un bloque de texto
138
+ .line-clamp-#{$grid-breakpoint}-#{$spacer} {
139
+ overflow: hidden;
140
+ display: -webkit-box;
141
+ -webkit-line-clamp: $spacer;
142
+ -webkit-box-orient: vertical;
143
+ }
144
+
145
+ // Ubicación absoluta, usar con position-*
146
+ @each $direction in (top, right, bottom, left) {
147
+ .#{$direction}-#{$grid-breakpoint}-#{$spacer} {
148
+ #{$direction}: $length
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+
155
+ // anchos y altos
156
+ @each $prop, $abbrev in (width: w, height: h) {
157
+ @each $size, $length in $sizes {
158
+ .#{$abbrev}-#{$size} { #{$prop}: $length; }
159
+ .#{$abbrev}-#{$size} { #{$prop}: $length; }
160
+ .min-#{$abbrev}-#{$size} { min-#{$prop}: $length; }
161
+ .max-#{$abbrev}-#{$size} { max-#{$prop}: $length; }
162
+
163
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
164
+ @include media-breakpoint-up($grid-breakpoint) {
165
+ .#{$abbrev}-#{$grid-breakpoint}-#{$size} { #{$prop}: $length; }
166
+ .min-#{$abbrev}-#{$grid-breakpoint}-#{$size} { min-#{$prop}: $length; }
167
+ .max-#{$abbrev}-#{$grid-breakpoint}-#{$size} { max-#{$prop}: $length; }
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ @each $scroll in (auto, smooth) {
174
+ .scroll-#{$scroll} {
175
+ scroll-behavior: #{$scroll};
176
+ }
177
+
178
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
179
+ @include media-breakpoint-up($grid-breakpoint) {
180
+ .scroll-#{$grid-breakpoint}-#{$scroll} {
181
+ scroll-behavior: #{$scroll};
182
+ }
183
+ }
184
+ }
185
+ }
186
+
187
+ // Versiones responsive de utilidades Bootstrap
188
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
189
+ @include media-breakpoint-up($grid-breakpoint) {
190
+ // Bordes
191
+ // node_modules/bootstrap/scss/utilities/_borders.scss
192
+ .border-#{$grid-breakpoint} { border: $border-width solid $border-color !important; }
193
+ .border-#{$grid-breakpoint}-top { border-top: $border-width solid $border-color !important; }
194
+ .border-#{$grid-breakpoint}-right { border-right: $border-width solid $border-color !important; }
195
+ .border-#{$grid-breakpoint}-bottom { border-bottom: $border-width solid $border-color !important; }
196
+ .border-#{$grid-breakpoint}-left { border-left: $border-width solid $border-color !important; }
197
+ .border-#{$grid-breakpoint}-0 { border: 0 !important; }
198
+ .border-#{$grid-breakpoint}-top-0 { border-top: 0 !important; }
199
+ .border-#{$grid-breakpoint}-right-0 { border-right: 0 !important; }
200
+ .border-#{$grid-breakpoint}-bottom-0 { border-bottom: 0 !important; }
201
+ .border-#{$grid-breakpoint}-left-0 { border-left: 0 !important; }
202
+
203
+ // Alineación
204
+ .text-#{$grid-breakpoint}-left { text-align: left !important; }
205
+ .text-#{$grid-breakpoint}-right { text-align: right !important; }
206
+ .text-#{$grid-breakpoint}-center { text-align: center !important; }
207
+
208
+ // Posicionamiento
209
+ @each $position in $positions {
210
+ .position-#{$grid-breakpoint}-#{$position} { position: $position !important; }
211
+ }
212
+
213
+ // Anchos y altos
214
+ @each $prop, $abbrev in (width: w, height: h) {
215
+ @each $size, $length in $sizes {
216
+ .#{$abbrev}-#{$grid-breakpoint}-#{$size} { #{$prop}: $length !important; }
217
+ .min-#{$abbrev}-#{$grid-breakpoint}-#{$size} { min-#{$prop}: $length !important; }
218
+ }
219
+ }
220
+ }
221
+ }
222
+
223
+ // Crea una propiedad con prefijos de navegador
7
224
  @mixin vendor-prefix($property, $definition...) {
8
225
  @each $prefix in $vendor-prefixes {
9
226
  #{$prefix}$property: $definition;
10
227
  }
11
228
  }
12
229
 
13
- /*
14
- * Crea clases para asignar colores según la lista de colores.
15
- */
16
- @each $color, $_ in $colors {
230
+ // Colores
231
+ @each $color, $rgb in $colors {
17
232
  .background-#{$color} {
18
233
  background-color: var(--#{$color});
234
+
235
+ &:focus {
236
+ background-color: var(--#{$color});
237
+ }
19
238
  }
20
239
 
240
+ @each $opacity, $degree in $opacities {
241
+ .background-#{$color}-t#{$opacity} {
242
+ background-color: scale-color($rgb, $alpha: $degree);
243
+ }
244
+ }
245
+
246
+ @each $attr in (stroke, fill) {
247
+ .#{$attr}-#{$color} {
248
+ svg {
249
+ * {
250
+ #{$attr}: var(--#{$color});
251
+ }
252
+ }
253
+ }
254
+ }
255
+
256
+ // Barras de scroll de colores
257
+ .scrollbar-#{$color} {
258
+ scrollbar-color: var(--#{$color}) transparent;
259
+ scrollbar-width: thin;
260
+
261
+ &::-webkit-scrollbar {
262
+ width: 5px;
263
+ height: 8px;
264
+ background-color: transparent;
265
+ }
266
+
267
+ &::-webkit-scrollbar-thumb {
268
+ background: var(--#{$color});
269
+ }
270
+ }
271
+
272
+ // Bordes
273
+ .border-#{$color} {
274
+ border-color: var(--#{$color}) !important;
275
+ }
276
+
277
+ // Cambiar el fondo al pasar por encima o hacer foco
278
+ .hover-bg-#{$color} {
279
+ &:hover,
280
+ &:focus-within {
281
+ background-color: var(--#{$color});
282
+ }
283
+ }
284
+
285
+ // Cambiar el color al pasar por encima o hacer foco
286
+ .hover-#{$color} {
287
+ &:hover,
288
+ &:focus-within {
289
+ color: var(--#{$color});
290
+ }
291
+ }
292
+
293
+ // Cambiar el color
21
294
  .#{$color} {
22
295
  color: var(--#{$color});
23
296
 
297
+ &:focus {
298
+ color: var(--#{$color});
299
+ }
300
+
301
+ // Invertir el color en la selección
24
302
  ::-moz-selection,
25
303
  ::selection {
26
304
  background: var(--#{$color});
27
305
  color: white;
28
306
  }
29
307
 
30
- svg {
31
- * {
32
- fill: var(--#{$color});
33
- }
34
- }
35
-
308
+ // Ajustes para Bootstrap
36
309
  .form-control {
37
310
  border-color: var(--#{$color});
38
- }
39
-
40
- .btn {
41
- background-color: var(--#{$color});
42
- color: white;
43
- border-color: var(--#{$color});
311
+ color: var(--#{$color});
44
312
  }
45
313
 
46
314
  hr {
47
315
  border-color: var(--#{$color});
48
316
  }
49
-
50
- a {
51
- color: var(--#{$color});
52
- }
53
317
  }
54
318
  }
data/_sass/menu.scss ADDED
@@ -0,0 +1,20 @@
1
+ .navbar {
2
+ &:focus-within {
3
+ .navbar-collapse {
4
+ @extend .d-block;
5
+ }
6
+ }
7
+
8
+ .dropdown {
9
+ .dropdown-menu {
10
+ @extend .d-none;
11
+ }
12
+
13
+ &:hover,
14
+ &:focus-within {
15
+ .dropdown-menu {
16
+ @extend .d-block;
17
+ }
18
+ }
19
+ }
20
+ }
data/_sass/snap.scss ADDED
@@ -0,0 +1,58 @@
1
+ $snap-types: (none, mandatory, proximity);
2
+ $snap-directions: (y, x);
3
+ $snap-points: (start, end, center, none);
4
+
5
+ // TODO: Escribir un mixin
6
+ @each $snap-type in $snap-types {
7
+ @each $snap-direction in $snap-directions {
8
+ // El contenedor indica la dirección y obligatoriedad del snap
9
+ .snap-#{$snap-type}-#{$snap-direction} {
10
+ scroll-snap-points-#{$snap-direction}: repeat(100%);
11
+ scroll-snap-destination: 0 0;
12
+ @each $prefix in $vendor-prefixes {
13
+ #{$prefix}scroll-snap-type: #{$snap-direction} #{$snap-type};
14
+ #{$prefix}scroll-snap-type: #{$snap-type};
15
+ }
16
+
17
+ // Lxs hijxs directos se alinean al contenedor
18
+ @each $snap-point in $snap-points {
19
+ & > .snap-#{$snap-point} {
20
+ scroll-snap-align: #{$snap-point};
21
+ }
22
+ }
23
+
24
+ // Poder modificar el snap según el punto de corte
25
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
26
+ @include media-breakpoint-up($grid-breakpoint) {
27
+ @each $snap-point in $snap-points {
28
+ & > .snap-#{$grid-breakpoint}-#{$snap-point} {
29
+ scroll-snap-align: #{$snap-point};
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+
36
+ @each $grid-breakpoint, $_ in $grid-breakpoints {
37
+ @include media-breakpoint-up($grid-breakpoint) {
38
+ .snap-#{$snap-type}-#{$grid-breakpoint}-#{$snap-direction} {
39
+ // XXX: Esto está duplicado porque SCSS no nos deja extender
40
+ // dentro de un @include.
41
+ // @extend .snap-#{$snap-type}-#{$snap-direction};
42
+ scroll-snap-points-#{$snap-direction}: repeat(100%);
43
+ scroll-snap-destination: 0 0;
44
+ @each $prefix in $vendor-prefixes {
45
+ #{$prefix}scroll-snap-type: #{$snap-direction} #{$snap-type};
46
+ #{$prefix}scroll-snap-type: #{$snap-type};
47
+ }
48
+
49
+ @each $snap-point in $snap-points {
50
+ .snap-#{$snap-point} {
51
+ scroll-snap-align: #{$snap-point};
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }