decidim-design 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +29 -0
  3. data/Rakefile +3 -0
  4. data/app/controllers/concerns/decidim/design/has_templates.rb +20 -0
  5. data/app/controllers/decidim/design/application_controller.rb +28 -0
  6. data/app/controllers/decidim/design/components_controller.rb +21 -0
  7. data/app/controllers/decidim/design/foundations_controller.rb +14 -0
  8. data/app/controllers/decidim/design/home_controller.rb +11 -0
  9. data/app/helpers/decidim/design/activities_helper.rb +65 -0
  10. data/app/helpers/decidim/design/address_helper.rb +59 -0
  11. data/app/helpers/decidim/design/announcement_helper.rb +73 -0
  12. data/app/helpers/decidim/design/application_helper.rb +100 -0
  13. data/app/helpers/decidim/design/author_helper.rb +91 -0
  14. data/app/helpers/decidim/design/buttons_helper.rb +148 -0
  15. data/app/helpers/decidim/design/cards_helper.rb +195 -0
  16. data/app/helpers/decidim/design/colors_helper.rb +96 -0
  17. data/app/helpers/decidim/design/follow_helper.rb +42 -0
  18. data/app/helpers/decidim/design/iconography_helper.rb +72 -0
  19. data/app/helpers/decidim/design/report_helper.rb +38 -0
  20. data/app/helpers/decidim/design/share_helper.rb +38 -0
  21. data/app/helpers/decidim/design/tab_panels_helper.rb +103 -0
  22. data/app/helpers/decidim/design/typography_helper.rb +112 -0
  23. data/app/packs/entrypoints/decidim_design.js +2 -0
  24. data/app/packs/stylesheets/design.scss +121 -0
  25. data/app/views/decidim/design/components/accordions.html.erb +66 -0
  26. data/app/views/decidim/design/components/activities/_static-activities.html.erb +79 -0
  27. data/app/views/decidim/design/components/activities/_static-activity.html.erb +56 -0
  28. data/app/views/decidim/design/components/activities.html.erb +11 -0
  29. data/app/views/decidim/design/components/address/_static-address-online.html.erb +9 -0
  30. data/app/views/decidim/design/components/address/_static-address-person.html.erb +8 -0
  31. data/app/views/decidim/design/components/address.html.erb +11 -0
  32. data/app/views/decidim/design/components/announcement.html.erb +11 -0
  33. data/app/views/decidim/design/components/author/_static-avatar.html.erb +38 -0
  34. data/app/views/decidim/design/components/author/_static-compact.html.erb +46 -0
  35. data/app/views/decidim/design/components/author/_static-default.html.erb +35 -0
  36. data/app/views/decidim/design/components/author.html.erb +11 -0
  37. data/app/views/decidim/design/components/buttons.html.erb +15 -0
  38. data/app/views/decidim/design/components/cards/_static-card-g-highlight.html.erb +18 -0
  39. data/app/views/decidim/design/components/cards/_static-card-g-metadata-2.html.erb +17 -0
  40. data/app/views/decidim/design/components/cards/_static-card-g-metadata.html.erb +14 -0
  41. data/app/views/decidim/design/components/cards/_static-card-g.html.erb +17 -0
  42. data/app/views/decidim/design/components/cards/_static-card-l-description.html.erb +28 -0
  43. data/app/views/decidim/design/components/cards/_static-card-l-extra-data-2.html.erb +31 -0
  44. data/app/views/decidim/design/components/cards/_static-card-l-extra-data.html.erb +16 -0
  45. data/app/views/decidim/design/components/cards/_static-card-l-image.html.erb +66 -0
  46. data/app/views/decidim/design/components/cards/_static-card-l-meetings.html.erb +30 -0
  47. data/app/views/decidim/design/components/cards/_static-card-l.html.erb +60 -0
  48. data/app/views/decidim/design/components/cards/_static-card-s.html.erb +15 -0
  49. data/app/views/decidim/design/components/cards.html.erb +11 -0
  50. data/app/views/decidim/design/components/dialogs.html.erb +89 -0
  51. data/app/views/decidim/design/components/dropdowns.html.erb +64 -0
  52. data/app/views/decidim/design/components/follow/_static-follow-default.html.erb +4 -0
  53. data/app/views/decidim/design/components/follow/_static-follow-unfollow.html.erb +4 -0
  54. data/app/views/decidim/design/components/follow.html.erb +11 -0
  55. data/app/views/decidim/design/components/forms.html.erb +235 -0
  56. data/app/views/decidim/design/components/report/_static-report.html.erb +34 -0
  57. data/app/views/decidim/design/components/report.html.erb +11 -0
  58. data/app/views/decidim/design/components/share.html.erb +11 -0
  59. data/app/views/decidim/design/components/tab_panels.html.erb +11 -0
  60. data/app/views/decidim/design/foundations/accessibility.html.erb +99 -0
  61. data/app/views/decidim/design/foundations/color/_table.html.erb +26 -0
  62. data/app/views/decidim/design/foundations/color.html.erb +16 -0
  63. data/app/views/decidim/design/foundations/iconography/_icons.html.erb +8 -0
  64. data/app/views/decidim/design/foundations/iconography.html.erb +16 -0
  65. data/app/views/decidim/design/foundations/layout.html.erb +128 -0
  66. data/app/views/decidim/design/foundations/typography.html.erb +15 -0
  67. data/app/views/decidim/design/home/index.html.erb +17 -0
  68. data/app/views/decidim/design/shared/_card_grid.html.erb +3 -0
  69. data/app/views/decidim/design/shared/_cell_snippet.html.erb +6 -0
  70. data/app/views/decidim/design/shared/_sections.html.erb +9 -0
  71. data/app/views/decidim/design/shared/_table.html.erb +12 -0
  72. data/app/views/layouts/decidim/design/_head.html.erb +5 -0
  73. data/app/views/layouts/decidim/design/_layout.html.erb +86 -0
  74. data/app/views/layouts/decidim/design/application.html.erb +15 -0
  75. data/config/assets.rb +8 -0
  76. data/config/routes.rb +10 -0
  77. data/lib/decidim/design/engine.rb +35 -0
  78. data/lib/decidim/design/version.rb +9 -0
  79. data/lib/decidim/design.rb +10 -0
  80. metadata +154 -0
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Design
5
+ module TypographyHelper
6
+ def typography_sections
7
+ [
8
+ {
9
+ id: "typefaces",
10
+ contents: [
11
+ {
12
+ type: :text,
13
+ values: [
14
+ "Decidim uses Source Sans Pro as primary typeface. This typeface supports 310 languages",
15
+ "This fonts are licensed under the Open Font License"
16
+ ]
17
+ },
18
+ {
19
+ type: :table,
20
+ options: { headings: %w(Example) },
21
+ items: typography_table(
22
+ { type: "typefaces", example: "Source Sans Pro Bold", class: "font-bold" },
23
+ { type: "typefaces", example: "Source Sans Pro Semibold", class: "font-semibold" },
24
+ { type: "typefaces", example: "Source Sans Pro Regulars", class: "font-normal" }
25
+ )
26
+ }
27
+ ]
28
+ },
29
+ {
30
+ id: "headings",
31
+ contents: [
32
+ {
33
+ type: :table,
34
+ options: { headings: ["Level", "Semibold 600", "Bold 700", "Size"] },
35
+ items: typography_table(
36
+ { type: "headings", level: "Hero H1", text: "Hero heading", size: "text-5xl" },
37
+ { type: "headings", level: "H1", text: "Heading H1", size: "text-4xl" },
38
+ { type: "headings", level: "H2", text: "Heading H2", size: "text-3xl" },
39
+ { type: "headings", level: "H3", text: "Heading H3", size: "text-2xl" },
40
+ { type: "headings", level: "H4", text: "Heading H4", size: "text-xl" },
41
+ { type: "headings", level: "H5", text: "Heading H5", size: "text-lg" },
42
+ { type: "headings", level: "H6", text: "Heading H6", size: "text-md" }
43
+ )
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ id: "content",
49
+ contents: [
50
+ {
51
+ type: :table,
52
+ options: { headings: ["Regular 400", "Semibold 600", "Bold 700", "Size"] },
53
+ items: typography_table(
54
+ { type: "content", text: "Sample content", size: "text-xl" },
55
+ { type: "content", text: "Sample content", size: "text-lg" },
56
+ { type: "content", text: "Sample content", size: "text-md" },
57
+ { type: "content", text: "Sample content", size: "text-sm" },
58
+ { type: "content", text: "Sample content", size: "text-xs" }
59
+ )
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ id: "readability",
65
+ contents: [
66
+ {
67
+ type: :table,
68
+ options: { headings: ["Size", "Layout cols", "~ Characters per line"] },
69
+ items: typography_table(
70
+ { type: "readability", size: "text-xl", layout: 6, chars: 81 },
71
+ { type: "readability", size: "text-lg", layout: 6, chars: 90 },
72
+ { type: "readability", size: "text-md", layout: 5, chars: 84 },
73
+ { type: "readability", size: "text-sm", layout: 4, chars: 76 }
74
+ )
75
+ }
76
+ ]
77
+ }
78
+ ]
79
+ end
80
+
81
+ def typography_table(*table_rows, **_opts)
82
+ table_rows.each_with_index.map do |table_cell, ix|
83
+ row = []
84
+
85
+ row << content_tag(:span, table_cell[:example], class: "text-lg #{table_cell[:class]}") if table_cell[:type] == "typefaces"
86
+
87
+ if table_cell[:type] == "headings"
88
+ row << table_cell[:level]
89
+ row << content_tag(:span, ix.positive? ? table_cell[:text] : "", class: "font-semibold #{table_cell[:size]}")
90
+ row << content_tag(:span, table_cell[:text], class: "font-bold #{table_cell[:size]}")
91
+ row << content_tag(:span, table_cell[:size], class: "text-secondary underline text-center")
92
+ end
93
+
94
+ if table_cell[:type] == "content"
95
+ row << content_tag(:span, table_cell[:text], class: "font-normal #{table_cell[:size]}")
96
+ row << content_tag(:span, table_cell[:text], class: "font-semibold #{table_cell[:size]}")
97
+ row << content_tag(:span, table_cell[:text], class: "font-bold #{table_cell[:size]}")
98
+ row << content_tag(:span, table_cell[:size], class: "text-secondary underline text-center")
99
+ end
100
+
101
+ if table_cell[:type] == "readability"
102
+ row << content_tag(:span, table_cell[:size], class: "text-secondary underline")
103
+ row << table_cell[:layout].to_s
104
+ row << table_cell[:chars].to_s
105
+ end
106
+
107
+ row
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,2 @@
1
+ // CSS
2
+ import "stylesheets/design.scss"
@@ -0,0 +1,121 @@
1
+ .design__layout {
2
+ @apply grid md:grid-cols-12 container min-h-screen before:content-[''] before:absolute before:-z-10 before:w-1/2 before:h-full before:inset-0 before:bg-background;
3
+
4
+ aside:first-child {
5
+ @apply col-span-2 py-12 pr-16;
6
+ }
7
+
8
+ main {
9
+ @apply bg-white col-span-8 py-12 px-16 [&_section+section]:mt-10;
10
+ }
11
+
12
+ aside:last-child {
13
+ @apply bg-white col-span-2 py-12 pl-16;
14
+ }
15
+ }
16
+
17
+ .design__navigation {
18
+ @apply sticky top-12 space-y-4;
19
+
20
+ & > li > *:not(ul) {
21
+ @apply flex gap-1 items-center;
22
+
23
+ svg {
24
+ @apply text-gray fill-current;
25
+ }
26
+
27
+ span {
28
+ @apply font-semibold;
29
+ }
30
+ }
31
+
32
+ & > li > a {
33
+ @apply hover:underline;
34
+ }
35
+
36
+ & > li > ul {
37
+ @apply pl-5 pt-4 space-y-4;
38
+ }
39
+
40
+ & > li > ul > li {
41
+ @apply text-sm text-black cursor-pointer flex items-center gap-1;
42
+
43
+ svg {
44
+ @apply w-3 h-3 fill-current;
45
+ }
46
+
47
+ a {
48
+ @apply hover:underline first-letter:capitalize;
49
+ }
50
+ }
51
+ }
52
+
53
+ .design__navigation__right {
54
+ @apply sticky top-12;
55
+
56
+ nav {
57
+ @apply space-y-2 text-sm [&>*]:block [&_a]:text-secondary [&_a]:underline;
58
+ }
59
+
60
+ strong {
61
+ @apply text-md mb-4;
62
+ }
63
+ }
64
+
65
+ .design__heading__5xl {
66
+ @apply text-5xl font-bold text-black;
67
+ }
68
+
69
+ .design__heading__section {
70
+ @apply pb-10 border-b border-background;
71
+ }
72
+
73
+ .design__heading__description {
74
+ @apply mt-10 text-gray-2 text-md font-normal [&>*+*]:mt-4 [&_a]:underline;
75
+ }
76
+
77
+ .design__section {
78
+ @apply [&>*+*]:mt-6 [&>p]:text-gray-2;
79
+
80
+ h2 {
81
+ @apply text-3xl font-semibold;
82
+ }
83
+
84
+ h3 {
85
+ @apply text-xl font-semibold inline-flex items-center gap-1;
86
+ }
87
+
88
+ &-snippet {
89
+ @apply mt-0;
90
+
91
+ p {
92
+ @apply bg-gray-3 px-4 py-2 text-sm text-gray-2;
93
+ }
94
+
95
+ a {
96
+ @apply text-secondary underline;
97
+ }
98
+
99
+ textarea {
100
+ @apply w-full text-sm;
101
+ }
102
+ }
103
+ }
104
+
105
+ .design__table {
106
+ @apply w-full text-center text-sm text-gray-2;
107
+
108
+ --cell-width: ;
109
+
110
+ thead {
111
+ @apply bg-gray-3;
112
+ }
113
+
114
+ th {
115
+ @apply px-6 py-2 font-normal border border-background;
116
+ }
117
+
118
+ td {
119
+ @apply px-6 py-4 border border-background w-[var(--cell-width)];
120
+ }
121
+ }
@@ -0,0 +1,66 @@
1
+ <% content_for :heading do %>
2
+ Accordions
3
+ <% end %>
4
+
5
+ <% content_for :description do %>
6
+ Accordions are a javascript feature available thanks to an external library called <a href="https://github.com/jonathanlevaillant/a11y-accordion-component" target="_blank" rel="noopener noreferrer">a11y-accordion-component</a>.
7
+ <% end %>
8
+
9
+ <% content_for :toc do %>
10
+ <a href="#example">Demo</a>
11
+ <a href="#usage">Usage</a>
12
+ <% end %>
13
+
14
+ <section id="demo" class="design__section">
15
+ <h2>Demo</h2>
16
+
17
+ <p>Throughout the application the accordions are used, mainly, to show/hide content in tabs or fold/unfold visible texts.</p>
18
+
19
+ <div data-component="accordion" data-multiselectable="false" id="example-accordion-1">
20
+ <ul class="tab-x-container">
21
+ <% 3.times do |tab| %>
22
+ <li>
23
+ <button id="trigger-1-<%= tab %>" class="tab-x" data-controls="panel-1-<%= tab %>" <%= "data-open=true" if tab.zero? %>>
24
+ Trigger <%= tab %>
25
+ </button>
26
+ </li>
27
+ <% end %>
28
+ </ul>
29
+
30
+ <% 3.times do |panel| %>
31
+ <div id="panel-1-<%= panel %>" class="py-8 text-sm font-italic">
32
+ Content of the panel <%= panel %>
33
+ </div>
34
+ <% end %>
35
+ </div>
36
+ </section>
37
+
38
+ <section id="usage" class="design__section">
39
+ <h2>Usage</h2>
40
+
41
+ <p>An accordion requires at least three elements:</p>
42
+
43
+ <p>1. A wrapper <code>div</code>, with the data-attribute <code>data-component="accordion"</code>, over all the available triggers and panels.</p>
44
+
45
+ <p>2. A trigger element, user actionable (as a button), pointing to the collapsable element through <code>data-controls="panel"</code>, where <i>panel</i> is the <code>id</code> of the panel.</p>
46
+
47
+ <p>3. A hideable element, whose <code>id</code> matches the data-controls value the trigger refers to.</p>
48
+
49
+ <div class="design__section-snippet" style="margin-top: inherit;">
50
+ <p>Source code on GitHub: <%= link_to("decidim-core/app/packs/src/decidim/a11y.js", "https://github.com/decidim/decidim/blob/develop/decidim-core/app/packs/src/decidim/a11y.js", target: "_blank", rel: "noopener noreferrer") %></p>
51
+
52
+ <code>
53
+ <textarea rows="8">
54
+ <div data-component="accordion" id="example-accordion">
55
+ <button id="trigger" data-controls="panel">
56
+ Trigger
57
+ </button>
58
+
59
+ <div id="panel" aria-hidden="true">
60
+ Panel
61
+ </div>
62
+ </div>
63
+ </textarea>
64
+ </code>
65
+ </div>
66
+ </section>
@@ -0,0 +1,79 @@
1
+ <div class="activity__container">
2
+ <div class="activity" data-activity="">
3
+ <div class="activity__time">
4
+ about 2 months ago
5
+ </div>
6
+ <div class="activity__content">
7
+ <span>
8
+ <span>
9
+ <%= icon("chat-1-line") %>
10
+ New comment:
11
+ </span>
12
+ <a href="#">
13
+ This is a very short comment
14
+ </a>
15
+ </span>
16
+ <span>
17
+ <a href="#">Initiative without members </a>
18
+ </span>
19
+ </div>
20
+ <div class="activity__author">
21
+ <div class="author" data-author="">
22
+ <div class="author__container has-tip" data-tooltip="<div class=&quot;author__tooltip bottom&quot; role=&quot;tooltip&quot;>
23
+ <div class=&quot;author__container&quot;>
24
+ <span class=&quot;author__avatar-container&quot;>
25
+ <a href=&quot;#&quot;>
26
+ <img alt=&quot;Avatar: User Group 28078&quot; class=&quot;author__avatar&quot; src=&quot;<%= asset_pack_path("media/images/default-avatar.svg") %>&quot; />
27
+ </a>
28
+ </span>
29
+ <div>
30
+ <a class=&quot;author__name underline&quot; href=&quot;#&quot;>User Group 28078</a>
31
+ <span class=&quot;text-md&quot;>@anon-ug-28078</span>
32
+ </div>
33
+ </div>
34
+ <div class=&quot;author__tooltip-links&quot;>
35
+ <a href=&quot;#&quot;>
36
+ <span id=&quot;followers_count_user_group_28078&quot;>27</span> Followers
37
+ </a>
38
+ </div>
39
+ <a class=&quot;button button__sm button__transparent&quot; href=&quot;/users/sign_in&quot;>
40
+ <span>Send private message</span>
41
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-mail-send-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
42
+ </a>
43
+ <form class=&quot;button_to&quot; method=&quot;post&quot; action=&quot;#&quot;><button class=&quot;button button__sm button__transparent&quot; title=&quot;Please log in before performing this action&quot; aria-haspopup=&quot;true&quot; id=&quot;follow_user_group_28078&quot; data-dialog-open=&quot;loginModal&quot; type=&quot;submit&quot;>
44
+ <span class=&quot;&quot;>Follow</span>
45
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-notification-3-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
46
+ </button><input type=&quot;hidden&quot; name=&quot;authenticity_token&quot; value=&quot;l10A9D-VXx2J_sZi-EpPchvyyTbr_MuBIof0orqJ8mjskMZN38Nr1MLZHbYb06Q8XSxGIxtHP1Yz99QH5NtWaA&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[button_classes]&quot; value=&quot;button button__sm button__transparent&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[followable_gid]&quot; value=&quot;eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJajFuYVdRNkx5OWtaV05wWkdsdExYQnZjSFZzWVhSbExYSmxaR1Z6YVdkdUwwUmxZMmxrYVcwNk9sVnpaWEpIY205MWNDOHlPREEzT0FZNkJrVlUiLCJleHAiOiIyMDIzLTEyLTA4VDE3OjM2OjUxLjk1MVoiLCJwdXIiOiJkZWZhdWx0In19--3388eefc3a8a7c90bdb54c2473912eb49caa3192&quot; autocomplete=&quot;off&quot; /></form>
47
+ </div>
48
+ " aria-describedby="0f99qi-tooltip" data-yeti-box="0f99qi-tooltip" data-toggle="0f99qi-tooltip" data-resize="0f99qi-tooltip" id="toggle-0q86" aria-controls="0f99qi-tooltip" data-events="resize">
49
+ <span class="author__avatar-container">
50
+ <a href="#">
51
+ <img alt="Avatar: User Group 28078" class="author__avatar" src="<%= asset_pack_path("media/images/default-avatar.svg") %>">
52
+ </a>
53
+ </span>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ <div class="activity" data-activity="">
59
+ <div class="activity__time">
60
+ about 2 months ago
61
+ </div>
62
+ <div class="activity__content">
63
+ <span>
64
+ <span>
65
+ <%= icon("map-pin-line") %>
66
+ New meeting:
67
+ </span>
68
+ <a href="#">
69
+ Citizen Initiative Presentation &amp; Signature Gathering Event
70
+ </a>
71
+ </span>
72
+ <span>
73
+ <a href="#">Initiative without members </a>
74
+ </span>
75
+ </div>
76
+ <div class="activity__author">
77
+ </div>
78
+ </div>
79
+ </div>
@@ -0,0 +1,56 @@
1
+ <div class="activity" data-activity="">
2
+ <div class="activity__time">
3
+ 2 months ago
4
+ </div>
5
+ <div class="activity__content">
6
+ <span>
7
+ <span>
8
+ <%= icon("chat-new-line") %>
9
+ New proposal:
10
+ </span>
11
+ <a href="#">
12
+ La millor proposta
13
+ </a>
14
+ </span>
15
+ <span>
16
+ <a href="#">New park in Poblenou (Kat test)</a>
17
+ </span>
18
+ </div>
19
+ <div class="activity__author">
20
+ <div class="author" data-author="">
21
+ <div class="author__container has-tip" data-tooltip="<div class=&quot;author__tooltip bottom&quot; role=&quot;tooltip&quot;>
22
+ <div class=&quot;author__container&quot;>
23
+ <span class=&quot;author__avatar-container&quot;>
24
+ <a href=&quot;#&quot;>
25
+ <img alt=&quot;Avatar: User Group 28036&quot; class=&quot;author__avatar&quot; src=&quot;<%= asset_pack_path("media/images/default-avatar.svg") %>&quot; />
26
+ </a>
27
+ </span>
28
+ <div>
29
+ <a class=&quot;author__name underline&quot; href=&quot;#&quot;>User Group 28036</a>
30
+ <span class=&quot;text-md&quot;>@anon-ug-28036</span>
31
+ </div>
32
+ </div>
33
+ <div class=&quot;author__tooltip-links&quot;>
34
+ <a href=&quot;#&quot;>
35
+ <span id=&quot;followers_count_user_group_28036&quot;>4</span> Followers
36
+ </a>
37
+ </div>
38
+ <a class=&quot;button button__sm button__transparent&quot; href=&quot;#&quot;>
39
+ <span>Send private message</span>
40
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-mail-send-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
41
+ </a>
42
+ <form class=&quot;button_to&quot; method=&quot;post&quot; action=&quot;#&quot;><button class=&quot;button button__sm button__transparent&quot; title=&quot;Please log in before performing this action&quot; aria-haspopup=&quot;true&quot; id=&quot;follow_user_group_28036&quot; data-dialog-open=&quot;loginModal&quot; type=&quot;submit&quot;>
43
+ <span class=&quot;&quot;>Follow</span>
44
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-notification-3-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
45
+ </button><input type=&quot;hidden&quot; name=&quot;authenticity_token&quot; value=&quot;YDKRsY0hZ4fwm-K_uG6tJua9MP4qEnaP46S_3F9VAVMb_1cIbXdTTru8OWtb90ZooGO_69qpgljy1J95AQelUw&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[button_classes]&quot; value=&quot;button button__sm button__transparent&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[followable_gid]&quot; value=&quot;eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJajFuYVdRNkx5OWtaV05wWkdsdExYQnZjSFZzWVhSbExYSmxaR1Z6YVdkdUwwUmxZMmxrYVcwNk9sVnpaWEpIY205MWNDOHlPREF6TmdZNkJrVlUiLCJleHAiOiIyMDIzLTEyLTEwVDExOjM3OjA1LjExNFoiLCJwdXIiOiJkZWZhdWx0In19--8488df6a633dd76191d973d968ce85a2fee73622&quot; autocomplete=&quot;off&quot; /></form>
46
+ </div>
47
+ " aria-describedby="j1iaa9-tooltip" data-yeti-box="j1iaa9-tooltip" data-toggle="j1iaa9-tooltip" data-resize="j1iaa9-tooltip" id="toggle-nuqmnw" aria-controls="j1iaa9-tooltip" data-events="resize">
48
+ <span class="author__avatar-container">
49
+ <a href="#">
50
+ <img alt="Avatar: User Group 28036" class="author__avatar" src="<%= asset_pack_path("media/images/default-avatar.svg") %>">
51
+ </a>
52
+ </span>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
@@ -0,0 +1,11 @@
1
+ <% content_for :heading do %>
2
+ Activities
3
+ <% end %>
4
+
5
+ <% content_for :toc do %>
6
+ <% activities_sections.each do |section| %>
7
+ <%= link_to(section_text(section), "##{section[:id]}") %>
8
+ <% end %>
9
+ <% end %>
10
+
11
+ <%= render partial: "decidim/design/shared/sections", locals: { sections: activities_sections } %>
@@ -0,0 +1,9 @@
1
+ <div class="address__container">
2
+ <%= icon("map-pin-line") %>
3
+ <div class="address">
4
+ <div class="address__location">Online</div>
5
+ <a href="#" target="_blank" rel="noopener noreferrer" class="address__hints underline break-all" data-remote="true">
6
+ https://meet.jit.si/DecidimTry
7
+ <span data-external-link="true" class="inline-block mx-0.5"><%= icon("external-link-line") %><span class="sr-only">(External link)</span></span></a>
8
+ </div>
9
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="address__container">
2
+ <%= icon("map-pin-line") %>
3
+ <div class="address">
4
+ <div class="address__location">Barcelona</div>
5
+ <div class="address__address">Carrer Aragó 200, Barcelona </div>
6
+ <div class="address__hints"></div>
7
+ </div>
8
+ </div>
@@ -0,0 +1,11 @@
1
+ <% content_for :heading do %>
2
+ Address
3
+ <% end %>
4
+
5
+ <% content_for :toc do %>
6
+ <% address_sections.each do |section| %>
7
+ <%= link_to(section_text(section), "##{section[:id]}") %>
8
+ <% end %>
9
+ <% end %>
10
+
11
+ <%= render partial: "decidim/design/shared/sections", locals: { sections: address_sections } %>
@@ -0,0 +1,11 @@
1
+ <% content_for :heading do %>
2
+ Announcement
3
+ <% end %>
4
+
5
+ <% content_for :toc do %>
6
+ <% announcement_sections.each do |section| %>
7
+ <%= link_to(section_text(section), "##{section[:id]}") %>
8
+ <% end %>
9
+ <% end %>
10
+
11
+ <%= render partial: "decidim/design/shared/sections", locals: { sections: announcement_sections } %>
@@ -0,0 +1,38 @@
1
+ <div class="author" data-author="">
2
+ <div class="author__container has-tip" data-tooltip="<div class=&quot;author__tooltip bottom&quot; role=&quot;tooltip&quot;>
3
+ <div class=&quot;author__container&quot;>
4
+ <span class=&quot;author__avatar-container&quot;>
5
+ <a href=&quot;#&quot;>
6
+ <img alt=&quot;Avatar: Ettie Hickle&quot; class=&quot;author__avatar&quot; src=&quot;<%= asset_pack_path("media/images/default-avatar.svg") %>&quot; />
7
+ </a>
8
+ </span>
9
+ <div>
10
+ <a class=&quot;author__name underline&quot; href=&quot;#&quot;>Ettie Hickle</a>
11
+ <span class=&quot;text-md&quot;>@jarred_vandervort</span>
12
+ </div>
13
+ </div>
14
+ <div class=&quot;author__tooltip-links&quot;>
15
+ <a href=&quot;#&quot;>
16
+ <span id=&quot;followers_count_user_1&quot;>0</span> Seguidoras
17
+ </a>
18
+ <a href=&quot;#&quot;>
19
+ 4 Siguiendo
20
+ </a>
21
+ </div>
22
+ <a class=&quot;button button__sm button__transparent&quot; href=&quot;/users/sign_in&quot;>
23
+ <span>Envia mensaje privado</span>
24
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-mail-send-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
25
+ </a>
26
+ <form class=&quot;button_to&quot; method=&quot;post&quot; action=&quot;#&quot;><button class=&quot;button button__sm button__transparent&quot; title=&quot;Pro favor, inicia sesión antes de realizar esta acción&quot; aria-haspopup=&quot;true&quot; id=&quot;follow_user_1&quot; data-dialog-open=&quot;loginModal&quot; type=&quot;submit&quot;>
27
+ <span class=&quot;&quot;>Seguir</span>
28
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-notification-3-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
29
+ </button><input type=&quot;hidden&quot; name=&quot;authenticity_token&quot; value=&quot;0tc00Idqu62KnwJ8Jt2TkvxtdXn4Y1719QeR5jI-J_JC-F3DGwPDOyQJGvv7FHfIg83tAiQdRmXe63Nv4miWKw&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[button_classes]&quot; value=&quot;button button__sm button__transparent&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[followable_gid]&quot; value=&quot;BAh7CEkiCGdpZAY6BkVUSSIyZ2lkOi8vZGVjaWRpbS1kZXZlbG9wbWVudC1hcHAvRGVjaWRpbTo6VXNlci8xBjsAVEkiDHB1cnBvc2UGOwBUSSIMZGVmYXVsdAY7AFRJIg9leHBpcmVzX2F0BjsAVEkiHTIwMjMtMTItMDhUMTE6MDg6MjQuODMzWgY7AFQ=--3d47942fb13084110877f3470e21f67c7649c114&quot; autocomplete=&quot;off&quot; /></form>
30
+ </div>
31
+ " aria-describedby="60onjg-tooltip" data-yeti-box="60onjg-tooltip" data-toggle="60onjg-tooltip" data-resize="60onjg-tooltip" id="toggle-36j4hx" aria-controls="60onjg-tooltip">
32
+ <span class="author__avatar-container">
33
+ <a href="#">
34
+ <img alt="Avatar: Ettie Hickle" class="author__avatar" src="<%= asset_pack_path("media/images/default-avatar.svg") %>">
35
+ </a>
36
+ </span>
37
+ </div>
38
+ </div>
@@ -0,0 +1,46 @@
1
+ <div class="author" data-author="">
2
+ <div class="author__container is-compact has-tip" data-tooltip="<div class=&quot;author__tooltip bottom&quot; role=&quot;tooltip&quot;>
3
+ <div class=&quot;author__container&quot;>
4
+ <span class=&quot;author__avatar-container&quot;>
5
+ <a href=&quot;#&quot;>
6
+ <img alt=&quot;Avatar: Rolande Jacobi 1 2 endr1&quot; class=&quot;author__avatar&quot; src=&quot;<%= asset_pack_path("media/images/default-avatar.svg") %>&quot; />
7
+ </a>
8
+ </span>
9
+ <div>
10
+ <a class=&quot;author__name underline&quot; href=&quot;#&quot;>Rolande Jacobi 1 2 endr1</a>
11
+ <span class=&quot;text-md&quot;>@fausto_kassulke</span>
12
+ </div>
13
+ </div>
14
+ <div class=&quot;author__tooltip-links&quot;>
15
+ <a href=&quot;#&quot;>
16
+ <span id=&quot;followers_count_user_107&quot;>0</span> Seguidoras
17
+ </a>
18
+ <a href=&quot;#&quot;>
19
+ 0 Siguiendo
20
+ </a>
21
+ </div>
22
+ <a class=&quot;button button__sm button__transparent&quot; href=&quot;/users/sign_in&quot;>
23
+ <span>Envia mensaje privado</span>
24
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-mail-send-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
25
+ </a>
26
+ <form class=&quot;button_to&quot; method=&quot;post&quot; action=&quot;#&quot;><button class=&quot;button button__sm button__transparent&quot; title=&quot;Pro favor, inicia sesión antes de realizar esta acción&quot; aria-haspopup=&quot;true&quot; id=&quot;follow_user_107&quot; data-dialog-open=&quot;loginModal&quot; type=&quot;submit&quot;>
27
+ <span class=&quot;&quot;>Seguir</span>
28
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-notification-3-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
29
+ </button><input type=&quot;hidden&quot; name=&quot;authenticity_token&quot; value=&quot;mPVFPECIb-iR5Aw7rIVzmwi8j7F_fHW9MizYAWFLyvwI2iwv3OEXfj9yFLxxTJfBdxwXyqMCbS0ZwDqIsR17JQ&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[button_classes]&quot; value=&quot;button button__sm button__transparent&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[followable_gid]&quot; value=&quot;BAh7CEkiCGdpZAY6BkVUSSI0Z2lkOi8vZGVjaWRpbS1kZXZlbG9wbWVudC1hcHAvRGVjaWRpbTo6VXNlci8xMDcGOwBUSSIMcHVycG9zZQY7AFRJIgxkZWZhdWx0BjsAVEkiD2V4cGlyZXNfYXQGOwBUSSIdMjAyMy0xMi0wOFQxMDo1NDozNC42OTBaBjsAVA==--757a138d9c782a459354bce8e4849567be436ea6&quot; autocomplete=&quot;off&quot; /></form>
30
+ </div>
31
+ " aria-describedby="tooltip-d98lre" data-yeti-box="3gjzgq-tooltip" data-toggle="3gjzgq-tooltip"
32
+ data-resize="3gjzgq-tooltip" id="toggle-oe62o" aria-controls="3gjzgq-tooltip">
33
+ <span class="author__avatar-container">
34
+ <a href="#">
35
+ <img alt="Avatar: Rolande Jacobi 1 2 endr1" class="author__avatar"
36
+ src="<%= asset_pack_path("media/images/default-avatar.svg") %>">
37
+ </a>
38
+ </span>
39
+ <div>
40
+ <a class="author__name underline" href="#">Rolande Jacobi 1 2 endr1</a>
41
+ <span class="author__metadata">
42
+ 25/10/2023 12:50
43
+ </span>
44
+ </div>
45
+ </div>
46
+ </div>
@@ -0,0 +1,35 @@
1
+ <div class="author" data-author="">
2
+ <div class="author__container has-tip" data-tooltip="<div class=&quot;author__tooltip bottom&quot; role=&quot;tooltip&quot;>
3
+ <div class=&quot;author__container&quot;>
4
+ <span class=&quot;author__avatar-container&quot;>
5
+ <img alt=&quot;Avatar: Clint Runolfsdottir 2 2 0&quot; class=&quot;author__avatar&quot; src=&quot;<%= asset_pack_path("media/images/default-avatar.svg") %>&quot; />
6
+ </span>
7
+ <div>
8
+ <span class=&quot;author__name&quot;>Clint Runolfsdottir 2 2 0</span>
9
+ <span class=&quot;text-md&quot;>@macie</span>
10
+ </div>
11
+ </div>
12
+ <div class=&quot;author__tooltip-links&quot;>
13
+ <a href=&quot;#&quot;>
14
+ <span id=&quot;followers_count_user_66&quot;>0</span> Seguidoras
15
+ </a>
16
+ <a href=&quot;#&quot;>
17
+ 0 Siguiendo
18
+ </a>
19
+ </div>
20
+ <a class=&quot;button button__sm button__transparent&quot; href=&quot;/users/sign_in&quot;>
21
+ <span>Envia mensaje privado</span>
22
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-mail-send-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
23
+ </a>
24
+ <form class=&quot;button_to&quot; method=&quot;post&quot; action=&quot;#&quot;><button class=&quot;button button__sm button__transparent&quot; title=&quot;Pro favor, inicia sesión antes de realizar esta acción&quot; aria-haspopup=&quot;true&quot; id=&quot;follow_user_66&quot; data-dialog-open=&quot;loginModal&quot; type=&quot;submit&quot;>
25
+ <span class=&quot;&quot;>Seguir</span>
26
+ <svg width=&quot;1em&quot; height=&quot;1em&quot; role=&quot;img&quot; aria-hidden=&quot;true&quot;><use href=&quot;<%= "#{asset_pack_path("media/images/remixicon.symbol.svg")}#ri-notification-3-line" %>&quot; tabindex=&quot;-1&quot;></use></svg>
27
+ </button><input type=&quot;hidden&quot; name=&quot;authenticity_token&quot; value=&quot;prDEaQztVBlA3g5I6jFlPpN8SZXJfsqBsfxqfPmEaa42n616kIQsj-5IFs83-IFk7NzR7hUA0hGaEIj1KdLYdw&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[button_classes]&quot; value=&quot;button button__sm button__transparent&quot; autocomplete=&quot;off&quot; /><input type=&quot;hidden&quot; name=&quot;follow[followable_gid]&quot; value=&quot;BAh7CEkiCGdpZAY6BkVUSSIzZ2lkOi8vZGVjaWRpbS1kZXZlbG9wbWVudC1hcHAvRGVjaWRpbTo6VXNlci82NgY7AFRJIgxwdXJwb3NlBjsAVEkiDGRlZmF1bHQGOwBUSSIPZXhwaXJlc19hdAY7AFRJIh0yMDIzLTEyLTA4VDExOjA1OjQwLjc5M1oGOwBU--3e2a9169f4eca80b74b92866053e11182b15c059&quot; autocomplete=&quot;off&quot; /></form>
28
+ </div>
29
+ " aria-describedby="tooltip-6kqmd" data-yeti-box="f8ufax-tooltip" data-toggle="f8ufax-tooltip" data-resize="f8ufax-tooltip" id="toggle-bce33" aria-controls="f8ufax-tooltip">
30
+ <span class="author__avatar-container">
31
+ <img alt="Avatar: Clint Runolfsdottir 2 2 0" class="author__avatar" src="<%= asset_pack_path("media/images/default-avatar.svg") %>">
32
+ </span>
33
+ <span class="author__name">Clint Runolfsdottir 2 2 0</span>
34
+ </div>
35
+ </div>
@@ -0,0 +1,11 @@
1
+ <% content_for :heading do %>
2
+ Author
3
+ <% end %>
4
+
5
+ <% content_for :toc do %>
6
+ <% author_sections.each do |section| %>
7
+ <%= link_to(section_text(section), "##{section[:id]}") %>
8
+ <% end %>
9
+ <% end %>
10
+
11
+ <%= render partial: "decidim/design/shared/sections", locals: { sections: author_sections } %>