compost-jekyll-theme 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_data/actions.yml +9 -0
- data/_data/activity_pub.yml +29 -0
- data/_data/components.yml +10 -1
- data/_data/en.yml +123 -0
- data/_data/es.yml +124 -0
- data/_data/fixtures/activity_pub/activities/sutty.yml +65 -0
- data/_data/fixtures/activity_pub/likes.yml +124 -0
- data/_data/fixtures/activity_pub/replies.yml +722 -0
- data/_data/fixtures/activity_pub/shared.yml +217 -0
- data/_data/fixtures/activity_pub/users/cibor_yogui.yml +93 -0
- data/_data/fixtures/activity_pub/users/edumerco.yml +108 -0
- data/_data/fixtures/activity_pub/users/f.yml +107 -0
- data/_data/fixtures/activity_pub/users/sutty.yml +105 -0
- data/_data/manifest.json +561 -257
- data/_data/placeholder.yml +11 -0
- data/_data/theme.yml +18 -14
- data/_includes/activity_pub/actor.html +11 -0
- data/_includes/activity_pub/actor_mention.html +28 -0
- data/_includes/activity_pub/button.html +22 -0
- data/_includes/activity_pub/button_bar.html +16 -0
- data/_includes/activity_pub/cards.html +28 -0
- data/_includes/activity_pub/fediverse_interactions.html +2 -0
- data/_includes/activity_pub/generic_modal.html +55 -0
- data/_includes/activity_pub/image_modal.html +27 -0
- data/_includes/activity_pub/interactions.html +78 -0
- data/_includes/activity_pub/login_modal.html +70 -0
- data/_includes/activity_pub/reaction.html +45 -0
- data/_includes/activity_pub/reactions.html +17 -0
- data/_includes/activity_pub/replying_to.html +23 -0
- data/_includes/activity_pub/text_modal.html +16 -0
- data/_includes/activity_pub/toot_card.html +95 -0
- data/_includes/activity_pub/url.html +8 -0
- data/_includes/activity_pub/video_modal.html +20 -0
- data/_includes/bootstrap/custom_select.html +18 -0
- data/_includes/cover_post/generic.html +1 -1
- data/_includes/date.html +12 -0
- data/_includes/details.html +26 -0
- data/_includes/embed_responsive.html +3 -2
- data/_includes/external_link.html +15 -0
- data/_includes/fa.html +11 -0
- data/_includes/headings/with_link.html +1 -1
- data/_includes/theme/cards.html +7 -0
- data/_includes/theme/en_respuesta_a.html +1 -0
- data/_includes/theme/fediverse_interactions.html +1 -0
- data/_includes/theme/llamar_modal.html +21 -0
- data/_includes/theme/llamar_modal_logueo.html +1 -0
- data/_includes/theme/modal_ayuda.html +2 -0
- data/_includes/theme/modal_imagen.html +5 -0
- data/_includes/theme/modal_video.html +5 -0
- data/_includes/theme/navigation_post.html +3 -3
- data/_includes/theme/reactions.html +5 -0
- data/_includes/theme/toot_card.html +4 -0
- data/_includes/toggler/toggler.html +4 -3
- data/_layouts/back_cover.html +1 -1
- data/_layouts/default.html +1 -1
- data/_layouts/page.html +5 -0
- data/_layouts/post.html +20 -11
- data/_layouts/support.html +17 -16
- data/_sass/content.scss +15 -5
- data/_sass/details.scss +28 -0
- data/_sass/utilities.scss +21 -5
- data/assets/css/styles.scss +2 -0
- data/assets/fonts/forkawesome-webfont.woff2 +3 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVI.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4iaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4jaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4kaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4saVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4taVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4uaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4vaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVI.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4iaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4jaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4kaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4saVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4taVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4uaVIGxA.woff2 +0 -0
- data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4vaVIGxA.woff2 +0 -0
- data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAOW9-subset.woff2 +0 -0
- data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAOW9.ttf +0 -0
- data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrmAB-W9-subset.woff2 +0 -0
- data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrmAB-W9.ttf +0 -0
- data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vqPQw-subset.woff2 +0 -0
- data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vqPQw.ttf +0 -0
- data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_Of2PQw-subset.woff2 +0 -0
- data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_Of2PQw.ttf +0 -0
- data/assets/fonts/sourceserif4/SourceSerif4-Bold.ttf.woff2 +0 -0
- data/assets/fonts/sourceserif4/SourceSerif4-BoldIt.ttf.woff2 +0 -0
- data/assets/fonts/sourceserif4/SourceSerif4-It.ttf.woff2 +0 -0
- data/assets/fonts/sourceserif4/SourceSerif4-Regular.ttf.woff2 +0 -0
- data/assets/fonts/worksans/v18/QGY9z_wNahGAdqQ43Rh_ebrnlwyYfEPxPoGUgGsJow-subset.woff2 +0 -0
- data/assets/fonts/worksans/v18/QGY9z_wNahGAdqQ43Rh_ebrnlwyYfEPxPoGUgGsJow.ttf +0 -0
- data/assets/js/pack.3KYIYXYU.js +3 -0
- data/assets/js/pack.3KYIYXYU.js.map +3 -0
- metadata +66 -6
- data/assets/js/pack.27TCBNGN.js +0 -40
- data/assets/js/pack.27TCBNGN.js.map +0 -7
@@ -0,0 +1,11 @@
|
|
1
|
+
images:
|
2
|
+
- url: "public/home.png"
|
3
|
+
alt: "Home"
|
4
|
+
- url: "public/arrow_left_40x32.png"
|
5
|
+
alt: "Go back"
|
6
|
+
- url: "public/logo-hypha.png"
|
7
|
+
alt: "Hypha logo"
|
8
|
+
- url: "public/logo-distributedpress_200x35.png"
|
9
|
+
alt: "Distributed Press logo"
|
10
|
+
videos:
|
11
|
+
- url: "public/placeholder_video.mp4"
|
data/_data/theme.yml
CHANGED
@@ -13,6 +13,8 @@ spacers:
|
|
13
13
|
12: "($spacer * 0.75)"
|
14
14
|
40: "($spacer * 2.5)"
|
15
15
|
80: "($spacer * 5)"
|
16
|
+
btn-padding-y: ".375rem"
|
17
|
+
btn-line-height: "1.5"
|
16
18
|
btn_transition: "all 250ms ease-in-out"
|
17
19
|
btn_font_size: "0.8rem"
|
18
20
|
btn_padding_y: "1.5rem"
|
@@ -24,17 +26,18 @@ colors:
|
|
24
26
|
blue: "#564FE3"
|
25
27
|
light_blue: "#9995ef"
|
26
28
|
light_gray: "#eeeeee"
|
29
|
+
lighter_blue: "#cccaf7"
|
27
30
|
post: "rgba(230, 230, 230, 0.1)"
|
28
31
|
footnote: "#888888"
|
29
|
-
|
32
|
+
primary: "$primary"
|
30
33
|
letter_spacings:
|
31
34
|
1: "0.1rem"
|
32
35
|
2: "0.16rem"
|
33
36
|
3: "0.170625em"
|
34
37
|
4: "0.2625rem"
|
38
|
+
5: "0.39375rem"
|
35
39
|
6: "0.18375rem"
|
36
40
|
7: "0.13125rem"
|
37
|
-
5: "0.39375rem"
|
38
41
|
8: "0.170625rem"
|
39
42
|
pixel_densities:
|
40
43
|
- "1"
|
@@ -72,6 +75,7 @@ sizes:
|
|
72
75
|
49px: "3.0625rem"
|
73
76
|
74px: "4.625rem"
|
74
77
|
90px: "90px"
|
78
|
+
100px: "100px"
|
75
79
|
220px: "220px"
|
76
80
|
221px: "13.8125rem"
|
77
81
|
333px: "20.8125rem"
|
@@ -106,6 +110,18 @@ opacities:
|
|
106
110
|
4: "-20%"
|
107
111
|
5: "0%"
|
108
112
|
progress_border_radius: "0"
|
113
|
+
transform_scales:
|
114
|
+
n8: "0.8"
|
115
|
+
1: "1"
|
116
|
+
container_max_widths:
|
117
|
+
sm: "576px"
|
118
|
+
md: "768px"
|
119
|
+
lg: "1200px"
|
120
|
+
xl: "1201px"
|
121
|
+
layout_class:
|
122
|
+
support: "background-image-site background-size-contain w-100"
|
123
|
+
home: "background-image-site background-size-contain w-100"
|
124
|
+
about: "background-image-site background-size-contain w-100"
|
109
125
|
background_sizes:
|
110
126
|
auto-100: "auto 100%"
|
111
127
|
cover: "cover"
|
@@ -123,23 +139,11 @@ code_font_size: "1rem"
|
|
123
139
|
code_background: "#cccaf7"
|
124
140
|
code_radius: "8px"
|
125
141
|
code_font_family: "Roboto Mono"
|
126
|
-
container_max_widths:
|
127
|
-
sm: "576px"
|
128
|
-
md: "768px"
|
129
|
-
lg: "1200px"
|
130
|
-
xl: "1201px"
|
131
|
-
transform_scales:
|
132
|
-
n8: "0.8"
|
133
|
-
1: "1"
|
134
142
|
background_images:
|
135
143
|
menu-open: "$background-menu-open"
|
136
144
|
menu-close: "$background-menu-close"
|
137
145
|
site: "$background-site"
|
138
146
|
footer: "$background-footer"
|
139
|
-
layout_class:
|
140
|
-
support: "background-image-site background-size-contain w-100"
|
141
|
-
home: "background-image-site background-size-contain w-100"
|
142
|
-
about: "background-image-site background-size-contain w-100"
|
143
147
|
paragraph_margin_bottom: "0"
|
144
148
|
headings_margin_bottom: "0"
|
145
149
|
box_shadow: "0px 2px 4px rgba(0, 0, 0, 0.2)"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{% comment %}
|
2
|
+
Render actor's name if it's available, otherwise just return the link.
|
3
|
+
|
4
|
+
@param actor [ActivityDrop] Actor
|
5
|
+
{% endcomment %}
|
6
|
+
|
7
|
+
{% if include.actor.available %}
|
8
|
+
<span>{{ include.actor.name | strip_html }}</span>
|
9
|
+
{% else %}
|
10
|
+
<span>{{ include.actor }}</span>
|
11
|
+
{% endif %}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{% comment %}
|
2
|
+
@param actor [ActivityDrop] Actor
|
3
|
+
@param without_link [Boolean] Don't link
|
4
|
+
{% endcomment %}
|
5
|
+
|
6
|
+
{% if include.actor.available %}
|
7
|
+
{% assign id = include.actor.id | strip_html %}
|
8
|
+
{% assign instance_hostname = id | split: '/' %}
|
9
|
+
{% assign instance_hostname = instance_hostname[2] %}
|
10
|
+
|
11
|
+
{% capture mention %}
|
12
|
+
@<span>{{- include.actor.preferredUsername | strip_html -}}@{{- instance_hostname -}}</span>
|
13
|
+
{% endcapture %}
|
14
|
+
|
15
|
+
{% capture mention %}
|
16
|
+
<span class="h-card" translate="no">
|
17
|
+
{% if include.without_link %}
|
18
|
+
<span class="mention">{{- mention -}}</span>
|
19
|
+
{% else %}
|
20
|
+
{% include_cached external_link.html class="u-url mention" href=id text=mention %}
|
21
|
+
{% endif %}
|
22
|
+
</span>
|
23
|
+
{% endcapture %}
|
24
|
+
|
25
|
+
{{ mention | normalize_whitespace }}
|
26
|
+
{% else %}
|
27
|
+
{{ include.actor }}
|
28
|
+
{% endif %}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Un botón con link, por ejemplo para Support Us. Si el link es externo,
|
3
|
+
agregar el parámetro de seguridad noopener.
|
4
|
+
|
5
|
+
@param :fa [String]
|
6
|
+
@param :header [Capture] el contenido del encabezado
|
7
|
+
@param :body [Capture] el contenido del cuerpo principal
|
8
|
+
@param :footer [Capture] el contenido del footer
|
9
|
+
@param :header_class [String] las clases que lleva el encabezado
|
10
|
+
@param :body_class [String] las clases que lleva el cuerpo principal
|
11
|
+
@param :footer_class [String] las clases que lleva el footer
|
12
|
+
@param :content_class [String] las clases que lleva todo el bloque de contenido
|
13
|
+
@param :button_class [String] las clases que lleva cada botón
|
14
|
+
{%- endcomment -%}
|
15
|
+
|
16
|
+
<div class="d-inline {{include.button_class}}" data-controller="modal">
|
17
|
+
<button class="btn btn-sm" data-action="click->modal#show">
|
18
|
+
{%- include_cached fa.html icon=include.fa class="lead" description=include.description -%}
|
19
|
+
</button>
|
20
|
+
|
21
|
+
{% include activity_pub/generic_modal.html header=include.header body=include.body footer=include.footer header_class=include.header_class body_class=include.body_class footer_class=include.footer_class content_class=include.content_class %}
|
22
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Botonera para botones de íconos.
|
3
|
+
|
4
|
+
@param :uri [String] La URL sobre la que se interactua
|
5
|
+
@param :profile [ActivityDrop] Actor
|
6
|
+
{%- endcomment -%}
|
7
|
+
|
8
|
+
{% assign uri = include.uri | default: include.url | default: 'YOU FORGOT THIS PARAM' | strip_html %}
|
9
|
+
{% assign actions = site.data.actions.actions %}
|
10
|
+
|
11
|
+
<div class="d-flex">
|
12
|
+
{% for action in actions %}
|
13
|
+
{% assign fa = action.icon %}
|
14
|
+
{% include activity_pub/login_modal.html action=action fa=fa uri=uri profile=include.profile description=action.title %}
|
15
|
+
{% endfor %}
|
16
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Nested cards
|
3
|
+
|
4
|
+
@param :profile [ActivityDrop] Actor
|
5
|
+
@param :activity [ActivityDrop] Note
|
6
|
+
@param :replies [ActivityDrop] Collection
|
7
|
+
{%- endcomment -%}
|
8
|
+
|
9
|
+
{%
|
10
|
+
include activity_pub/toot_card.html
|
11
|
+
profile=include.profile
|
12
|
+
activity=include.activity
|
13
|
+
component_class="my-3"
|
14
|
+
%}
|
15
|
+
|
16
|
+
{% if include.replies.available %}
|
17
|
+
{% assign replies = include.replies.all_items | sort: 'published' %}
|
18
|
+
{% for reply in replies %}
|
19
|
+
<blockquote class="border-left border-gray-light border-width-3 pl-3">
|
20
|
+
{%
|
21
|
+
include activity_pub/cards.html
|
22
|
+
profile=reply.attributedTo
|
23
|
+
activity=reply
|
24
|
+
replies=reply.replies
|
25
|
+
%}
|
26
|
+
</blockquote>
|
27
|
+
{% endfor %}
|
28
|
+
{% endif %}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Modal preparado para recibir contenido + header y footer
|
3
|
+
|
4
|
+
@param :header [Capture] contenido del header
|
5
|
+
@param :body [Capture] contenido del modal
|
6
|
+
@param :footer [Capture] contenido del footer
|
7
|
+
@param :header_class [String] clases del header
|
8
|
+
@param :body_class [String] clases del cuerpo principal
|
9
|
+
@param :footer_class [String] clases del header
|
10
|
+
@param :content_class [String] clases todo el bloque
|
11
|
+
{%- endcomment -%}
|
12
|
+
|
13
|
+
{% assign header = include.header %}
|
14
|
+
{% assign header_class = include.header_class %}
|
15
|
+
{% assign body = include.body %}
|
16
|
+
{% assign body_class = include.body_class %}
|
17
|
+
{% assign footer = include.footer %}
|
18
|
+
{% assign footer_class = include.footer_class %}
|
19
|
+
{% assign content_class = include.content_class %}
|
20
|
+
|
21
|
+
<div
|
22
|
+
class="modal fade mw-100vw"
|
23
|
+
tabindex="-1"
|
24
|
+
aria-hidden="true"
|
25
|
+
data-modal-target="modal"
|
26
|
+
data-action="keydown->modal#hideWithEscape"
|
27
|
+
>
|
28
|
+
<div class="modal-backdrop fade zindex-backdrop" data-modal-target="backdrop" data-action="click->modal#hide"></div>
|
29
|
+
<div class="modal-dialog modal-dialog-scrollable modal-dialog-centered modal-lg zindex-modal" role="document">
|
30
|
+
<div class="modal-content {{content_class}}">
|
31
|
+
{% if header %}
|
32
|
+
<div class="modal-header {{header_class}}">
|
33
|
+
{{ header }}
|
34
|
+
</div>
|
35
|
+
{% else %}
|
36
|
+
<div class="modal-header justify-content-end border-bottom-0 p-0 {{header_class}}">
|
37
|
+
<span class="px-3 py-2 m-0 h1 font-weight-bold" type="button" data-action="click->modal#hide">×</span>
|
38
|
+
<span class="sr-only">{{ site.i18n.close }}</span>
|
39
|
+
</div>
|
40
|
+
{% endif %}
|
41
|
+
|
42
|
+
<div class="modal-body {{body_class}}">
|
43
|
+
{{ body }}
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div class="modal-footer flex-nowrap {{footer_class}}">
|
47
|
+
{% if footer %}
|
48
|
+
{{ footer }}
|
49
|
+
{% else %}
|
50
|
+
<button class="btn btn-secondary m-0" type="button" data-action="modal#hide">{{ site.i18n.close }}</button>
|
51
|
+
{% endif %}
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Modal con imagen
|
3
|
+
|
4
|
+
@param :image [Image] la imagen que queremos en el modal, contiene url y alt text
|
5
|
+
{%- endcomment -%}
|
6
|
+
|
7
|
+
{% assign alt = include.image.name | strip_html | escape %}
|
8
|
+
{% assign src = include.image.url | strip_html | uri_escape %}
|
9
|
+
{% assign extra = 'data-action="click->modal#show"' %}
|
10
|
+
|
11
|
+
{% capture body %}
|
12
|
+
<img class="background-white mw-100" title="{{ alt }}" alt="{{ alt }}" src="{{ src }}">
|
13
|
+
{% endcapture %}
|
14
|
+
|
15
|
+
<div class="{{ include.extra }} px-1" data-controller="modal">
|
16
|
+
{%
|
17
|
+
include embed_responsive.html
|
18
|
+
x=16
|
19
|
+
y=9
|
20
|
+
src=src
|
21
|
+
alt=alt
|
22
|
+
extra=extra
|
23
|
+
width=300
|
24
|
+
img_class="cursor-pointer min-w-100px w-100 object-fit-cover"
|
25
|
+
%}
|
26
|
+
{% include activity_pub/generic_modal.html header_class="text-white" body=body body_class="d-flex justify-content-center" footer_class="d-none" content_class="background-transparent border-0" %}
|
27
|
+
</div>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
{% comment %}
|
2
|
+
@param activity [ActivityDrop]
|
3
|
+
{% endcomment %}
|
4
|
+
|
5
|
+
{% assign items = site.i18n.fediverse_interactions %}
|
6
|
+
{% assign reactions = '' | split: ',' %}
|
7
|
+
{% assign activities = reactions %}
|
8
|
+
|
9
|
+
{% if page.activity.replies.available %}
|
10
|
+
{% assign activities = page.activity.replies.all_items | sort: 'published' %}
|
11
|
+
{% endif %}
|
12
|
+
|
13
|
+
{% if include.activity.likes.available %}
|
14
|
+
{% assign reactions = reactions | concat: include.activity.likes.all_items %}
|
15
|
+
{% endif %}
|
16
|
+
|
17
|
+
{% if include.activity.shares.available %}
|
18
|
+
{% assign reactions = reactions | concat: include.activity.shares.all_items %}
|
19
|
+
{% endif %}
|
20
|
+
|
21
|
+
{% assign reactions = reactions | sort: 'published' %}
|
22
|
+
|
23
|
+
{% assign all_interactions = activities | concat: reactions | sort: 'published' %}
|
24
|
+
|
25
|
+
<div class="w-100" data-controller="tabs" data-tabs-hide-class="hide" data-tabs-show-class="show">
|
26
|
+
{% include_cached activity_pub/button_bar.html uri=include.activity.id profile=include.profile %}
|
27
|
+
|
28
|
+
<hr>
|
29
|
+
|
30
|
+
<h3 class="text-uppercase">{{ site.i18n.ver_interacciones }}</h3>
|
31
|
+
|
32
|
+
<div class="d-flex flex-row align-items-center mt-2 mb-5">
|
33
|
+
{% include_cached activity_pub/fediverse_interactions.html %}
|
34
|
+
|
35
|
+
{% assign text = site.i18n.help | markdownify | replace: '<a ', "<a target='_blank' rel='noopener' " %}
|
36
|
+
{% include_cached activity_pub/text_modal.html text=text fa="question-circle-o" %}
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="w-100 d-none fade hide" data-tabs-target="tab" id="conversation">
|
40
|
+
{% unless activities == empty %}
|
41
|
+
{% for activity in activities %}
|
42
|
+
{% include_cached activity_pub/cards.html activity=activity profile=activity.attributedTo replies=activity.replies %}
|
43
|
+
{% endfor %}
|
44
|
+
{% else %}
|
45
|
+
<p class="h1">
|
46
|
+
{{ site.i18n.no_interactions_yet.conversation }}
|
47
|
+
<p>
|
48
|
+
{% endunless %}
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div class="w-100 d-none fade hide" data-tabs-target="tab" id="reactions">
|
52
|
+
{% unless reactions == empty %}
|
53
|
+
{% include_cached activity_pub/reactions.html reactions=reactions %}
|
54
|
+
{% else %}
|
55
|
+
<p class="h1">
|
56
|
+
{{ site.i18n.no_interactions_yet.reactions }}
|
57
|
+
<p>
|
58
|
+
{% endunless %}
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<div class="w-100 fade show" data-tabs-target="tab" id="both">
|
62
|
+
{% unless all_interactions == empty %}
|
63
|
+
{% for interaction in all_interactions %}
|
64
|
+
{% assign minus = forloop.index0 | minus: 1 %}
|
65
|
+
{% assign previous = all_interactions[minus] %}
|
66
|
+
{% if interaction.type == 'Announce' or interaction.type == 'Like' %}
|
67
|
+
{% include_cached activity_pub/reaction.html activity=interaction previous=previous %}
|
68
|
+
{% else %}
|
69
|
+
{% include_cached activity_pub/cards.html activity=interaction profile=interaction.attributedTo replies=interaction.replies %}
|
70
|
+
{% endif %}
|
71
|
+
{% endfor %}
|
72
|
+
{% else %}
|
73
|
+
<p class="h1">
|
74
|
+
{{ site.i18n.no_interactions_yet.both }}
|
75
|
+
<p>
|
76
|
+
{% endunless %}
|
77
|
+
</div>
|
78
|
+
</div>
|
@@ -0,0 +1,70 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Modal para loguearse al fediverso
|
3
|
+
|
4
|
+
@param :action [String] acción que le usuarie quiere realizar desde el fediverso
|
5
|
+
@param :fa [String] nombre del ícono que usa fork-awesome
|
6
|
+
@param :uri [String] la URL sobre la que se interactúa
|
7
|
+
@param :profile [ActivityDrop] Actor
|
8
|
+
{%- endcomment -%}
|
9
|
+
|
10
|
+
{% assign action = include.action %}
|
11
|
+
{% assign fa = include.fa %}
|
12
|
+
{% capture name %}
|
13
|
+
{% include_cached activity_pub/actor.html actor=include.profile %}
|
14
|
+
{% endcapture %}
|
15
|
+
|
16
|
+
{% capture header %}
|
17
|
+
<div class="d-flex align-items-center h1 justify-content-center w-100">
|
18
|
+
<span class="d-flex responsive-header font-weight-bold text-center">
|
19
|
+
<i class="fa fa-{{fa}} text-primary mr-2"></i>
|
20
|
+
<span>
|
21
|
+
{{ site.i18n.login_modal[action.title].text | replace: "$usuarie", name }}
|
22
|
+
</span>
|
23
|
+
<div>
|
24
|
+
<span class="px-3 py-2 m-0 h1" type="button" data-action="click->modal#hide">×</span>
|
25
|
+
<span class="sr-only">{{ site.i18n.close }}</span>
|
26
|
+
</div>
|
27
|
+
</span>
|
28
|
+
</div>
|
29
|
+
{% endcapture %}
|
30
|
+
|
31
|
+
{% capture body %}
|
32
|
+
<p class="mb-2">{{site.i18n.login_modal.top_text | markdownify | replace: "$action", site.i18n.login_modal[action.title].title }}</p>
|
33
|
+
<div class="mt-3 mb-2 h5">{{site.i18n.login_modal.question | markdownify}}</div>
|
34
|
+
<div class="mb-3">
|
35
|
+
<form
|
36
|
+
class="needs-validation"
|
37
|
+
data-controller="authorize-interaction"
|
38
|
+
data-action="authorize-interaction#submit:prevent"
|
39
|
+
data-authorize-interaction-uri-value="{{ include.uri | strip_html | absolute_url | uri_escape }}"
|
40
|
+
>
|
41
|
+
<div class="form-row align-items-center border-lg border-lg-primary py-1">
|
42
|
+
<div class="col-12 col-lg mb-1 mb-lg-0">
|
43
|
+
<label class="sr-only">{{site.i18n.login_modal.placeholder}}</label>
|
44
|
+
<input
|
45
|
+
class="form-control border border-primary border-lg-0"
|
46
|
+
placeholder="{{site.i18n.login_modal.placeholder}}"
|
47
|
+
autocomplete="impp"
|
48
|
+
required
|
49
|
+
data-authorize-interaction-target="instance"
|
50
|
+
data-action="authorize-interaction#revalid"
|
51
|
+
type="search"/>
|
52
|
+
<div class="invalid-feedback">
|
53
|
+
{{- site.i18n.login_modal.authorize_interaction_unsupported -}}
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
<div class="col-12 col-lg-auto">
|
58
|
+
<button class="btn btn-primary btn-block py-btn-padding-y lh-btn-line-height f-16 font-weight-bold" type="submit">{{ site.i18n.take_me_home }}</button>
|
59
|
+
</div>
|
60
|
+
</div>
|
61
|
+
</form>
|
62
|
+
</div>
|
63
|
+
<small class="d-block mb-2">{{site.i18n.login_modal.small_text}}</small>
|
64
|
+
<span>{{site.i18n.login_modal.bottom_text | markdownify}}</span>
|
65
|
+
{% endcapture %}
|
66
|
+
|
67
|
+
{% capture footer %}
|
68
|
+
{% endcapture %}
|
69
|
+
|
70
|
+
{% include activity_pub/button.html header=header body=body footer=footer header_class="justify-content-center border-bottom-0" body_class="justify-content-center" footer_class="border-top-0" content_class="p-2" button_class="mx-1" fa=action.icon description=include.description %}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Reacción
|
3
|
+
|
4
|
+
@param :activity [String] Reacción de le usuarie
|
5
|
+
@param :fa [String] nombre del ícono que usa fork-awesome
|
6
|
+
@param :actor [String] Usuarie
|
7
|
+
{%- endcomment -%}
|
8
|
+
|
9
|
+
{% assign published = include.activity.published | strip_html %}
|
10
|
+
|
11
|
+
<div class="d-flex">
|
12
|
+
<div class="d-flex flex-column gray px-2 text-right">
|
13
|
+
{% include_cached date.html date=published format=site.i18n.date.format %}
|
14
|
+
{% include_cached date.html date=published format=site.i18n.time.format %}
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="flex-column px-2 flex-grow-1">
|
18
|
+
{% if include.previous.actor == include.activity.actor %}
|
19
|
+
<div class="d-flex">
|
20
|
+
<p class="transparent hover-transparent">
|
21
|
+
{% include_cached activity_pub/actor.html actor=include.activity.actor %}
|
22
|
+
</p>
|
23
|
+
</div>
|
24
|
+
<div class="d-flex">
|
25
|
+
<p class="transparent hover-transparent">
|
26
|
+
{% include_cached activity_pub/actor_mention.html actor=include.activity.actor without_link=true %}
|
27
|
+
</p>
|
28
|
+
</div>
|
29
|
+
{% else %}
|
30
|
+
<div class="d-flex">
|
31
|
+
<p class="">{% include_cached activity_pub/actor.html actor=include.activity.actor %}</p>
|
32
|
+
</div>
|
33
|
+
<div class="d-flex">
|
34
|
+
{% include_cached activity_pub/actor_mention.html actor=include.activity.actor %}
|
35
|
+
</div>
|
36
|
+
{% endif %}
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="flex-column align-self-center px-2 lead">
|
40
|
+
{% assign icon = include.activity.type | equals: 'Announce' | ternary: 'retweet', 'star-o' %}
|
41
|
+
{% assign description = site.i18n.activities[include.activity.type] %}
|
42
|
+
|
43
|
+
{%- include_cached fa.html icon=icon class="lead" description=description -%}
|
44
|
+
</div>
|
45
|
+
</div>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Reacciones
|
3
|
+
|
4
|
+
@param :reactions [Array] Reacciones
|
5
|
+
@param :actor [String] Usuarie
|
6
|
+
{%- endcomment -%}
|
7
|
+
|
8
|
+
{% for reaction in include.reactions %}
|
9
|
+
{% assign minus = forloop.index0 | minus: 1 %}
|
10
|
+
{% assign previous = include.reactions[minus] %}
|
11
|
+
|
12
|
+
{%
|
13
|
+
include activity_pub/reaction.html
|
14
|
+
activity=reaction
|
15
|
+
previous=previous
|
16
|
+
%}
|
17
|
+
{% endfor %}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Texto + enlace al post/artículo al cual se responde
|
3
|
+
|
4
|
+
@param :activity [ActivityDrop] Activity
|
5
|
+
{%- endcomment -%}
|
6
|
+
|
7
|
+
{% if include.activity.available %}
|
8
|
+
{%- capture uri -%}
|
9
|
+
{%- include_cached activity_pub/url.html activity=include.activity -%}
|
10
|
+
{%- endcapture -%}
|
11
|
+
|
12
|
+
{% capture text %}
|
13
|
+
{{- include.activity.name | default: include.activity.summary | strip_html | default: site.i18n.reply.link_text -}}
|
14
|
+
{% endcapture %}
|
15
|
+
|
16
|
+
<div class="py-5 pr-5">
|
17
|
+
<span class="h2">
|
18
|
+
{{- site.i18n.reply.text -}}
|
19
|
+
</span>
|
20
|
+
|
21
|
+
{% include_cached external_link.html href=uri class="h2" text=text %}
|
22
|
+
</div>
|
23
|
+
{% endif %}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Modal para mostrar texto
|
3
|
+
|
4
|
+
@param :text [String] contenido del modal
|
5
|
+
@param :fa [String] nombre del ícono que usa fork-awesome
|
6
|
+
{%- endcomment -%}
|
7
|
+
|
8
|
+
{% capture body %}
|
9
|
+
{{ include.text }}
|
10
|
+
{% endcapture %}
|
11
|
+
|
12
|
+
{% capture footer %}
|
13
|
+
{% endcapture %}
|
14
|
+
|
15
|
+
{% assign fa = include.fa %}
|
16
|
+
{% include activity_pub/button.html body=body footer=footer body_class="justify-content-center" footer_class="border-top-0 d-none" content_class="p-2" fa=fa %}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Toot card
|
3
|
+
|
4
|
+
@param :component_class [String] Las clases del componente
|
5
|
+
@param :profile [String]
|
6
|
+
@param :activity [String]
|
7
|
+
{%- endcomment -%}
|
8
|
+
|
9
|
+
{% assign extra_class = include.activity.attachment | size | equals: 1 | ternary: 'col', 'col-6' %}
|
10
|
+
|
11
|
+
<div class="d-flex flex-column media {{ include.component_class }}">
|
12
|
+
<div class="d-flex">
|
13
|
+
{%
|
14
|
+
include embed_responsive.html
|
15
|
+
x=1
|
16
|
+
y=1
|
17
|
+
src=include.profile.icon.url
|
18
|
+
alt=include.profile.icon.name
|
19
|
+
width=40
|
20
|
+
embed_class="mr-2 align-self-center w-49px"
|
21
|
+
img_class="h-100 object-fit-cover"
|
22
|
+
%}
|
23
|
+
|
24
|
+
<div class="">
|
25
|
+
<p>{% include_cached activity_pub/actor.html actor=include.profile %}</p>
|
26
|
+
<p>{% include_cached activity_pub/actor_mention.html actor=include.profile %}</p>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
<div class="media-body w-100">
|
31
|
+
{% capture content %}
|
32
|
+
<div class="content mt-2">
|
33
|
+
{{ include.activity.content | sanitize_html }}
|
34
|
+
</div>
|
35
|
+
|
36
|
+
{% unless include.activity.attachment == empty %}
|
37
|
+
<div class="row no-gutters mt-2">
|
38
|
+
{% for attachment in include.activity.attachment %}
|
39
|
+
{% if attachment.mediaType == "video/mp4" %}
|
40
|
+
{% include activity_pub/video_modal.html video=attachment extra=extra_class %}
|
41
|
+
{% else %}
|
42
|
+
{% include activity_pub/image_modal.html image=attachment extra=extra_class %}
|
43
|
+
{% endif %}
|
44
|
+
{% endfor %}
|
45
|
+
</div>
|
46
|
+
{% endunless %}
|
47
|
+
{% endcapture %}
|
48
|
+
|
49
|
+
{% if include.activity.sensitive %}
|
50
|
+
{% capture summary_title %}
|
51
|
+
<strong>{{ site.i18n.sensitive }}:</strong> {{ include.activity.summary }}
|
52
|
+
{% endcapture %}
|
53
|
+
|
54
|
+
{%
|
55
|
+
include details.html
|
56
|
+
element_title=summary_title
|
57
|
+
element_text=content
|
58
|
+
summary_class="align-items-center btn-lg btn-secondary p-2 text-left f-16"
|
59
|
+
component_class="my-3"
|
60
|
+
font_size="ml-3 lead"
|
61
|
+
%}
|
62
|
+
{% else %}
|
63
|
+
{{ content }}
|
64
|
+
{% endif %}
|
65
|
+
|
66
|
+
<div class="d-flex gray justify-content-between my-2 align-items-center">
|
67
|
+
{%- assign timestamp_field = include.activity.updated | ternary: 'updated', 'published' -%}
|
68
|
+
{%- assign timestamp = include.activity[timestamp_field] -%}
|
69
|
+
|
70
|
+
{%- capture timestamp -%}
|
71
|
+
{% include date.html date=timestamp format=site.i18n.date_time.format %}
|
72
|
+
{%- endcapture -%}
|
73
|
+
|
74
|
+
{%- capture uri -%}
|
75
|
+
{%- include_cached activity_pub/url.html activity=include.activity -%}
|
76
|
+
{%- endcapture -%}
|
77
|
+
|
78
|
+
{% include external_link.html href=uri text=timestamp %}
|
79
|
+
|
80
|
+
<div>
|
81
|
+
{% if include.activity.shares.totalItems %}
|
82
|
+
{%- include fa.html icon="retweet" class="px-1" description=site.i18n.total_shares content=include.activity.shares.totalItems -%}
|
83
|
+
{% endif %}
|
84
|
+
|
85
|
+
{% if include.activity.likes.totalItems %}
|
86
|
+
{%- include fa.html icon="star-o" class="px-1" description=site.i18n.total_likes content=include.activity.likes.totalItems -%}
|
87
|
+
{% endif %}
|
88
|
+
</div>
|
89
|
+
|
90
|
+
{%- include fa.html icon="globe" description=site.i18n.globe -%}
|
91
|
+
</div>
|
92
|
+
|
93
|
+
{% include activity_pub/button_bar.html uri=include.activity.id profile=include.profile %}
|
94
|
+
</div>
|
95
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{%- comment -%}
|
2
|
+
Modal con imagen
|
3
|
+
|
4
|
+
@param :image [Image] la imagen que queremos en el modal, contiene url y alt text
|
5
|
+
{%- endcomment -%}
|
6
|
+
|
7
|
+
{% capture body %}
|
8
|
+
<video src="{{include.video.url}}" controls></video>
|
9
|
+
{% endcapture %}
|
10
|
+
|
11
|
+
<div class="{{ include.extra }} px-1" data-controller="modal">
|
12
|
+
<div class="embed-responsive embed-responsive-16by9">
|
13
|
+
<video
|
14
|
+
class="cursor-pointer min-w-100px w-100 embed-responsive-item object-fit-cover"
|
15
|
+
src="{{include.video.url}}"
|
16
|
+
data-action="click->modal#show"
|
17
|
+
></video>
|
18
|
+
</div>
|
19
|
+
{% include activity_pub/generic_modal.html header_class="text-white" body=body body_class="d-flex justify-content-center" footer_class="d-none" content_class="background-transparent border-0" %}
|
20
|
+
</div>
|