compost-jekyll-theme 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/_data/actions.yml +9 -0
  3. data/_data/activity_pub.yml +29 -0
  4. data/_data/components.yml +10 -1
  5. data/_data/en.yml +123 -0
  6. data/_data/es.yml +124 -0
  7. data/_data/fixtures/activity_pub/activities/sutty.yml +65 -0
  8. data/_data/fixtures/activity_pub/likes.yml +124 -0
  9. data/_data/fixtures/activity_pub/replies.yml +722 -0
  10. data/_data/fixtures/activity_pub/shared.yml +217 -0
  11. data/_data/fixtures/activity_pub/users/cibor_yogui.yml +93 -0
  12. data/_data/fixtures/activity_pub/users/edumerco.yml +108 -0
  13. data/_data/fixtures/activity_pub/users/f.yml +107 -0
  14. data/_data/fixtures/activity_pub/users/sutty.yml +105 -0
  15. data/_data/manifest.json +561 -257
  16. data/_data/placeholder.yml +11 -0
  17. data/_data/theme.yml +18 -14
  18. data/_includes/activity_pub/actor.html +11 -0
  19. data/_includes/activity_pub/actor_mention.html +28 -0
  20. data/_includes/activity_pub/button.html +22 -0
  21. data/_includes/activity_pub/button_bar.html +16 -0
  22. data/_includes/activity_pub/cards.html +28 -0
  23. data/_includes/activity_pub/fediverse_interactions.html +2 -0
  24. data/_includes/activity_pub/generic_modal.html +55 -0
  25. data/_includes/activity_pub/image_modal.html +27 -0
  26. data/_includes/activity_pub/interactions.html +78 -0
  27. data/_includes/activity_pub/login_modal.html +70 -0
  28. data/_includes/activity_pub/reaction.html +45 -0
  29. data/_includes/activity_pub/reactions.html +17 -0
  30. data/_includes/activity_pub/replying_to.html +23 -0
  31. data/_includes/activity_pub/text_modal.html +16 -0
  32. data/_includes/activity_pub/toot_card.html +95 -0
  33. data/_includes/activity_pub/url.html +8 -0
  34. data/_includes/activity_pub/video_modal.html +20 -0
  35. data/_includes/bootstrap/custom_select.html +18 -0
  36. data/_includes/cover_post/generic.html +1 -1
  37. data/_includes/date.html +12 -0
  38. data/_includes/details.html +26 -0
  39. data/_includes/embed_responsive.html +3 -2
  40. data/_includes/external_link.html +15 -0
  41. data/_includes/fa.html +11 -0
  42. data/_includes/header_toggler.html +1 -1
  43. data/_includes/headings/with_link.html +1 -1
  44. data/_includes/theme/cards.html +7 -0
  45. data/_includes/theme/en_respuesta_a.html +1 -0
  46. data/_includes/theme/fediverse_interactions.html +1 -0
  47. data/_includes/theme/llamar_modal.html +21 -0
  48. data/_includes/theme/llamar_modal_logueo.html +1 -0
  49. data/_includes/theme/modal_ayuda.html +2 -0
  50. data/_includes/theme/modal_imagen.html +5 -0
  51. data/_includes/theme/modal_video.html +5 -0
  52. data/_includes/theme/navigation_post.html +3 -3
  53. data/_includes/theme/reactions.html +5 -0
  54. data/_includes/theme/toot_card.html +4 -0
  55. data/_includes/toggler/toggler.html +4 -3
  56. data/_layouts/back_cover.html +1 -1
  57. data/_layouts/default.html +1 -1
  58. data/_layouts/page.html +5 -0
  59. data/_layouts/post.html +20 -11
  60. data/_layouts/support.html +17 -16
  61. data/_sass/content.scss +15 -5
  62. data/_sass/details.scss +28 -0
  63. data/_sass/utilities.scss +21 -5
  64. data/assets/css/styles.scss +2 -0
  65. data/assets/fonts/forkawesome-webfont.woff2 +3 -0
  66. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVI.woff2 +0 -0
  67. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4iaVIGxA.woff2 +0 -0
  68. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4jaVIGxA.woff2 +0 -0
  69. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4kaVIGxA.woff2 +0 -0
  70. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4saVIGxA.woff2 +0 -0
  71. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4taVIGxA.woff2 +0 -0
  72. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4uaVIGxA.woff2 +0 -0
  73. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4vaVIGxA.woff2 +0 -0
  74. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVI.woff2 +0 -0
  75. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4iaVIGxA.woff2 +0 -0
  76. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4jaVIGxA.woff2 +0 -0
  77. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4kaVIGxA.woff2 +0 -0
  78. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4saVIGxA.woff2 +0 -0
  79. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4taVIGxA.woff2 +0 -0
  80. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4uaVIGxA.woff2 +0 -0
  81. data/assets/fonts/opensans/v34/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4vaVIGxA.woff2 +0 -0
  82. data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAOW9-subset.woff2 +0 -0
  83. data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAOW9.ttf +0 -0
  84. data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrmAB-W9-subset.woff2 +0 -0
  85. data/assets/fonts/robotomono/v22/L0xoDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrmAB-W9.ttf +0 -0
  86. data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vqPQw-subset.woff2 +0 -0
  87. data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vqPQw.ttf +0 -0
  88. data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_Of2PQw-subset.woff2 +0 -0
  89. data/assets/fonts/robotomono/v22/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_Of2PQw.ttf +0 -0
  90. data/assets/fonts/sourceserif4/SourceSerif4-Bold.ttf.woff2 +0 -0
  91. data/assets/fonts/sourceserif4/SourceSerif4-BoldIt.ttf.woff2 +0 -0
  92. data/assets/fonts/sourceserif4/SourceSerif4-It.ttf.woff2 +0 -0
  93. data/assets/fonts/sourceserif4/SourceSerif4-Regular.ttf.woff2 +0 -0
  94. data/assets/fonts/worksans/v18/QGY9z_wNahGAdqQ43Rh_ebrnlwyYfEPxPoGUgGsJow-subset.woff2 +0 -0
  95. data/assets/fonts/worksans/v18/QGY9z_wNahGAdqQ43Rh_ebrnlwyYfEPxPoGUgGsJow.ttf +0 -0
  96. data/assets/js/pack.3KYIYXYU.js +3 -0
  97. data/assets/js/pack.3KYIYXYU.js.map +3 -0
  98. metadata +66 -6
  99. data/assets/js/pack.27TCBNGN.js +0 -40
  100. 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
- lighter_blue: "#cccaf7"
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,2 @@
1
+ {% assign extra = 'data-action="tabs#toggle" data-tabs-target="value"' %}
2
+ {% include_cached bootstrap/custom_select.html extra=extra options=site.i18n.fediverse_interactions %}
@@ -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">&times</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">&times</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,8 @@
1
+ {%- comment -%}
2
+ Finds the URL
3
+
4
+ @param activity [ActivityDrop]
5
+ {%- endcomment -%}
6
+
7
+ {%- assign uri = include.activity.url | find: 'rel', 'canonical' -%}
8
+ {{- uri.href | default: include.activity.url | default: include.activity.id | strip_html -}}
@@ -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>