nodebb-theme-harmony 1.0.0-beta.91 → 1.0.0-beta.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scss/common.scss +6 -1
- package/scss/modules/topics-list.scss +7 -148
- package/templates/account/categories.tpl +6 -6
- package/templates/account/topics.tpl +2 -2
- package/templates/categories.tpl +1 -4
- package/templates/chats.tpl +3 -3
- package/templates/flags/detail.tpl +2 -2
- package/templates/groups/details.tpl +1 -1
- package/templates/login.tpl +2 -2
- package/templates/notifications.tpl +4 -4
- package/templates/partials/account/category-item.tpl +4 -4
- package/templates/partials/account/header.tpl +3 -3
- package/templates/partials/account/sidebar-left.tpl +27 -27
- package/templates/partials/categories/item.tpl +25 -28
- package/templates/partials/categories/lastpost.tpl +7 -7
- package/templates/partials/category/filter-dropdown-content.tpl +4 -4
- package/templates/partials/category/sort.tpl +20 -5
- package/templates/partials/category/subcategory.tpl +1 -2
- package/templates/partials/category/watch.tpl +18 -9
- package/templates/partials/chats/message-window.tpl +2 -2
- package/templates/partials/chats/recent_room.tpl +1 -1
- package/templates/partials/flags/filters.tpl +2 -2
- package/templates/partials/groups/list.tpl +2 -2
- package/templates/partials/groups/sidebar-left.tpl +9 -9
- package/templates/partials/search-results.tpl +0 -3
- package/templates/partials/sidebar/user-menu.tpl +13 -13
- package/templates/partials/tags/filter-dropdown-content.tpl +6 -3
- package/templates/partials/topic/navigator.tpl +3 -3
- package/templates/partials/topic/sort.tpl +6 -6
- package/templates/partials/topic/watch.tpl +21 -12
- package/templates/partials/topic-filters.tpl +2 -2
- package/templates/partials/topic-terms.tpl +2 -2
- package/templates/partials/topics_list.tpl +78 -82
- package/templates/partials/users/filter-dropdown-content.tpl +4 -4
- package/templates/register.tpl +2 -2
- package/templates/search.tpl +2 -2
package/package.json
CHANGED
package/scss/common.scss
CHANGED
|
@@ -14,6 +14,11 @@ body * {
|
|
|
14
14
|
-moz-text-size-adjust: none;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
hr {
|
|
18
|
+
border-top-color: $border-color;
|
|
19
|
+
opacity: 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
.ff-base {
|
|
18
23
|
font-family: $font-family-base !important;
|
|
19
24
|
}
|
|
@@ -23,7 +28,7 @@ body * {
|
|
|
23
28
|
.ff-secondary {
|
|
24
29
|
font-family: $font-family-secondary;
|
|
25
30
|
}
|
|
26
|
-
.tracking-tight { letter-spacing: -0.
|
|
31
|
+
.tracking-tight { letter-spacing: -0.02em; }
|
|
27
32
|
|
|
28
33
|
.caret {
|
|
29
34
|
&::after {
|
|
@@ -1,172 +1,31 @@
|
|
|
1
|
-
ul.topics-list {
|
|
2
|
-
position: relative;
|
|
3
|
-
|
|
1
|
+
ul.topics-list, ul.categories-list {
|
|
4
2
|
li {
|
|
5
|
-
display: flex;
|
|
6
|
-
gap: 1rem;
|
|
7
|
-
border-bottom: 1px solid $border-color;
|
|
8
|
-
padding: 0.75rem 0;
|
|
9
|
-
|
|
10
|
-
@include media-breakpoint-up(sm) { padding: 1.5rem 0; }
|
|
11
|
-
|
|
12
3
|
&.deleted {
|
|
13
4
|
opacity: 0.6;
|
|
14
5
|
.meta { display: none!important; }
|
|
15
6
|
}
|
|
16
7
|
|
|
17
8
|
&.selected {
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
outline: 1px solid $primary;
|
|
20
10
|
[component="topic/select"] {
|
|
21
11
|
color: $primary!important;
|
|
22
12
|
}
|
|
23
13
|
}
|
|
14
|
+
p {
|
|
15
|
+
margin: 0 !important;
|
|
16
|
+
}
|
|
24
17
|
|
|
25
18
|
// all other skins use link-color for unread titles
|
|
26
19
|
&.unread .title {
|
|
27
20
|
color: $link-color;
|
|
28
21
|
}
|
|
29
22
|
|
|
30
|
-
> .thumb-avatar-box {
|
|
31
|
-
flex: none;
|
|
32
|
-
display: none;
|
|
33
|
-
@include media-breakpoint-up(sm) { display: flex; }
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
> .wrapper {
|
|
37
|
-
flex: 1 1 auto;
|
|
38
|
-
display: grid;
|
|
39
|
-
align-items: start;
|
|
40
|
-
gap: 0.5rem;
|
|
41
|
-
|
|
42
|
-
@include media-breakpoint-up(sm) { gap: 1rem; }
|
|
43
|
-
@include media-breakpoint-up(xl) { display: flex; }
|
|
44
|
-
// @container (min-width: 799px) { display: flex; }
|
|
45
|
-
|
|
46
|
-
> .wrapper2 {
|
|
47
|
-
flex: 1 1 auto;
|
|
48
|
-
display: flex;
|
|
49
|
-
gap: 0.5rem;
|
|
50
|
-
|
|
51
|
-
@include media-breakpoint-up(sm) { gap: 1rem; }
|
|
52
|
-
|
|
53
|
-
> .title_badges {
|
|
54
|
-
flex: 1 1 auto;
|
|
55
|
-
display: flex;
|
|
56
|
-
flex-direction: column;
|
|
57
|
-
gap: 0.25rem;
|
|
58
|
-
|
|
59
|
-
@include media-breakpoint-up(sm) { gap: 0.5rem; }
|
|
60
|
-
|
|
61
|
-
> h2 {
|
|
62
|
-
font-size: 1rem !important;
|
|
63
|
-
@include media-breakpoint-up(sm) {
|
|
64
|
-
font-size: 1.125rem !important;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
> .info {
|
|
69
|
-
display: flex;
|
|
70
|
-
flex-wrap: wrap;
|
|
71
|
-
gap: 0.25rem;
|
|
72
|
-
align-items: center;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
> .stats {
|
|
77
|
-
flex: none;
|
|
78
|
-
display: none;
|
|
79
|
-
gap: 0.25rem;
|
|
80
|
-
align-items: start;
|
|
81
|
-
grid-auto-rows: min-content;
|
|
82
|
-
@include media-breakpoint-up(md) { display: grid; }
|
|
83
|
-
@include media-breakpoint-up(xl) {
|
|
84
|
-
grid-auto-columns: minmax(0, 1fr);
|
|
85
|
-
grid-auto-flow: column;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
> .card {
|
|
89
|
-
display: flex;
|
|
90
|
-
flex-direction: row;
|
|
91
|
-
gap: 0.5rem;
|
|
92
|
-
flex-wrap: nowrap;
|
|
93
|
-
align-items: center;
|
|
94
|
-
padding: 0.25rem 0.5rem;
|
|
95
|
-
border: none;
|
|
96
|
-
border-radius: 4px;
|
|
97
|
-
color: $text-muted;
|
|
98
|
-
@include media-breakpoint-up(xl) {
|
|
99
|
-
flex-direction: column;
|
|
100
|
-
padding: 0.5rem;
|
|
101
|
-
gap: 0;
|
|
102
|
-
min-width: 4.4rem;
|
|
103
|
-
min-height:3.4rem;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
> i.fa {
|
|
107
|
-
display: flex;
|
|
108
|
-
font-size: 0.75rem;
|
|
109
|
-
@include media-breakpoint-up(xl) { display: none; }
|
|
110
|
-
}
|
|
111
|
-
> .human-readable-number {
|
|
112
|
-
line-height: 1;
|
|
113
|
-
font-size: 0.875rem;
|
|
114
|
-
@include media-breakpoint-up(xl) { font-size: 1.25rem; }
|
|
115
|
-
}
|
|
116
|
-
> .text-lowercase {
|
|
117
|
-
display: none;
|
|
118
|
-
@include media-breakpoint-up(xl) { display: flex; }
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
> .teaser {
|
|
125
|
-
flex: none;
|
|
126
|
-
overflow: hidden;
|
|
127
|
-
|
|
128
|
-
@include media-breakpoint-up(xl) {
|
|
129
|
-
width:12rem;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
> .lastpost {
|
|
133
|
-
@include media-breakpoint-up(xl) {
|
|
134
|
-
min-height: 3.4rem;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.post-content {
|
|
139
|
-
@include line-clamp(1);
|
|
140
|
-
@include media-breakpoint-up(xl) {
|
|
141
|
-
@include line-clamp(2);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
> .checkbox {
|
|
148
|
-
flex: none;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
23
|
.ui-sortable-handle {
|
|
152
24
|
cursor: move;
|
|
153
25
|
}
|
|
154
|
-
}
|
|
155
26
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
.wrapper {
|
|
159
|
-
display: grid !important;
|
|
160
|
-
|
|
161
|
-
.teaser {
|
|
162
|
-
width: auto !important;
|
|
163
|
-
|
|
164
|
-
.post-content {
|
|
165
|
-
-webkit-line-clamp: 1 !important;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
27
|
+
// if only one thumb don't display
|
|
28
|
+
[data-numthumbs="1"] { display: none; }
|
|
170
29
|
}
|
|
171
30
|
}
|
|
172
31
|
|
|
@@ -13,24 +13,24 @@
|
|
|
13
13
|
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end">
|
|
14
14
|
<li><a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/watching" data-state="watching">
|
|
15
15
|
<div class="d-flex align-items-center gap-2">
|
|
16
|
-
<i class="fa fa-fw fa-inbox"></i>
|
|
17
|
-
<span class="flex-1 fw-semibold">[[category:watching]]</span>
|
|
16
|
+
<i class="flex-shrink-0 fa fa-fw fa-inbox"></i>
|
|
17
|
+
<span class="flex-grow-1 fw-semibold">[[category:watching]]</span>
|
|
18
18
|
</div>
|
|
19
19
|
<div class="help-text text-muted text-xs">[[category:watching.description]]</div>
|
|
20
20
|
</a>
|
|
21
21
|
</li>
|
|
22
22
|
<li><a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/notwatching" data-state="notwatching">
|
|
23
23
|
<div class="d-flex align-items-center gap-2">
|
|
24
|
-
<i class="fa fa-fw fa-clock-o"></i>
|
|
25
|
-
<span class="flex-1 fw-semibold">[[category:not-watching]]</span>
|
|
24
|
+
<i class="flex-shrink-0 fa fa-fw fa-clock-o"></i>
|
|
25
|
+
<span class="flex-grow-1 fw-semibold">[[category:not-watching]]</span>
|
|
26
26
|
</div>
|
|
27
27
|
<div class="help-text text-muted text-xs">[[category:not-watching.description]]</div>
|
|
28
28
|
</a>
|
|
29
29
|
</li>
|
|
30
30
|
<li><a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/ignoring" data-state="ignoring">
|
|
31
31
|
<div class="d-flex align-items-center gap-2">
|
|
32
|
-
<i class="fa fa-fw fa-eye-slash"></i>
|
|
33
|
-
<span class="flex-1 fw-semibold">[[category:ignoring]]</span>
|
|
32
|
+
<i class="flex-shrink-0 fa fa-fw fa-eye-slash"></i>
|
|
33
|
+
<span class="flex-grow-1 fw-semibold">[[category:ignoring]]</span>
|
|
34
34
|
</div>
|
|
35
35
|
<div class="help-text text-muted text-xs">[[category:ignoring.description]]</div>
|
|
36
36
|
</a>
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<ul class="dropdown-menu p-1 text-sm">
|
|
10
10
|
{{{each sortOptions }}}
|
|
11
11
|
<li><a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="{config.relative_path}{./url}">
|
|
12
|
-
<div class="flex-1">{./name}</div>
|
|
13
|
-
<i class="fa fa-fw {{{if ./selected}}}fa-check{{{end}}}"></i>
|
|
12
|
+
<div class="flex-grow-1">{./name}</div>
|
|
13
|
+
<i class="flex-shrink-0 fa fa-fw {{{if ./selected}}}fa-check{{{end}}}"></i>
|
|
14
14
|
</a></li>
|
|
15
15
|
{{{end}}}
|
|
16
16
|
</ul>
|
package/templates/categories.tpl
CHANGED
|
@@ -8,11 +8,8 @@
|
|
|
8
8
|
{{{ if pagination.pages.length }}}
|
|
9
9
|
<div><!-- IMPORT partials/category/selector-dropdown-left.tpl --></div>
|
|
10
10
|
{{{ end }}}
|
|
11
|
-
<ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
11
|
+
<ul class="categories-list list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
12
12
|
{{{ each categories }}}
|
|
13
|
-
{{{ if !@first }}}
|
|
14
|
-
<hr class="text-muted opacity-25"/>
|
|
15
|
-
{{{ end }}}
|
|
16
13
|
<!-- IMPORT partials/categories/item.tpl -->
|
|
17
14
|
{{{ end }}}
|
|
18
15
|
</ul>
|
package/templates/chats.tpl
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div class="chats-full d-flex gap-1 h-100 mt-3 mt-md-0 py-md-3">
|
|
2
|
-
<div class="d-flex flex-column h-100" component="chat/nav-wrapper" data-loaded="{{{ if roomId }}}1{{{ else }}}0{{{ end }}}">
|
|
2
|
+
<div class="flex-shrink-0 d-flex flex-column h-100" component="chat/nav-wrapper" data-loaded="{{{ if roomId }}}1{{{ else }}}0{{{ end }}}">
|
|
3
3
|
<div class="chat-search dropdown mb-2">
|
|
4
4
|
<label class="text-xs text-muted">[[users:search-user-for-chat]]</label>
|
|
5
5
|
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
</button>
|
|
14
14
|
</div>
|
|
15
15
|
</div>
|
|
16
|
-
<hr class="
|
|
16
|
+
<hr class="my-1">
|
|
17
17
|
<div component="chat/recent" class="chats-list overflow-auto mb-0 pe-1" data-nextstart="{nextStart}">
|
|
18
18
|
{{{each rooms}}}
|
|
19
19
|
<!-- IMPORT partials/chats/recent_room.tpl -->
|
|
20
20
|
{{{end}}}
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
23
|
-
<div class="flex-1 ms-md-2 ps-md-2 border-1 border-start-md h-100" component="chat/main-wrapper">
|
|
23
|
+
<div class="flex-grow-1 ms-md-2 ps-md-2 border-1 border-start-md h-100" component="chat/main-wrapper">
|
|
24
24
|
<!-- IMPORT partials/chats/message-window.tpl -->
|
|
25
25
|
</div>
|
|
26
26
|
<div class="imagedrop"><div>[[topic:composer.drag_and_drop_images]]</div></div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
2
|
|
|
3
3
|
<div class="d-flex flex-column flex-md-row">
|
|
4
|
-
<div class="d-flex flex-column gap-3
|
|
4
|
+
<div class="flex-shrink-0 d-flex flex-column gap-3 border-end-md text-sm mb-3 pe-4" style="flex-basis: 240px !important;">
|
|
5
5
|
<div class="d-grid gap-1">
|
|
6
6
|
<a class="btn btn-ghost border btn-sm justify-content-start" href="{config.relative_path}/{type_path}/{targetId}">
|
|
7
7
|
<i class="fa fa-fw fa-external-link text-primary"></i>
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
{{{ end }}}
|
|
107
107
|
</div>
|
|
108
108
|
</div>
|
|
109
|
-
<div class="flex-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
109
|
+
<div class="flex-grow-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
110
110
|
<div class="d-flex flex-column gap-4">
|
|
111
111
|
<h2 class="h6 fw-bold">
|
|
112
112
|
{target_readable}
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
</div>
|
|
45
45
|
<!-- IMPORT partials/groups/sidebar-left.tpl -->
|
|
46
46
|
|
|
47
|
-
<div class="flex-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
47
|
+
<div class="flex-grow-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
48
48
|
<div class="tab-content">
|
|
49
49
|
<div class="tab-pane fade show active" id="groups-posts" role="tabpanel">
|
|
50
50
|
<h3 class="fw-semibold fs-5 mb-0">[[global:posts]]</h3>
|
package/templates/login.tpl
CHANGED
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
{{{ if ./icons.svg }}}
|
|
79
79
|
{./icons.svg}
|
|
80
80
|
{{{ else }}}
|
|
81
|
-
<i class="{./icons.normal}" style="color:{./color};"></i>
|
|
81
|
+
<i class="flex-shrink-0 {./icons.normal}" style="color:{./color};"></i>
|
|
82
82
|
{{{ end }}}
|
|
83
83
|
{{{ if ./labels.login }}}
|
|
84
|
-
<div class="flex-1 text-body text-sm">{./labels.login}</div>
|
|
84
|
+
<div class="flex-grow-1 text-body text-sm">{./labels.login}</div>
|
|
85
85
|
{{{ end }}}
|
|
86
86
|
</a></li>
|
|
87
87
|
{{{ end }}}
|
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
<hr class="text-muted opacity-25"/>
|
|
7
7
|
|
|
8
8
|
<div class="d-flex flex-column flex-md-row">
|
|
9
|
-
<div class="flex-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
9
|
+
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
10
10
|
<div class="nav sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="z-index: 1;">
|
|
11
11
|
{{{ each filters }}}
|
|
12
12
|
{{{ if ./separator }}}
|
|
13
13
|
<hr/>
|
|
14
14
|
{{{ else }}}
|
|
15
15
|
<a class="btn-ghost fw-semibold {{{ if ./selected }}}active{{{ end }}}" href="{config.relative_path}/notifications?filter={./filter}">
|
|
16
|
-
<div class="flex-1">{filters.name}</div>
|
|
17
|
-
<span class="text-xs human-readable-number" title="{./count}">{./count}</span>
|
|
16
|
+
<div class="flex-grow-1">{filters.name}</div>
|
|
17
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{./count}">{./count}</span>
|
|
18
18
|
</a>
|
|
19
19
|
{{{ end }}}
|
|
20
20
|
{{{ end }}}
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
23
|
-
<div class="flex-1 ps-md-2 ps-lg-5">
|
|
23
|
+
<div class="flex-grow-1 ps-md-2 ps-lg-5">
|
|
24
24
|
<ul component="notifications/list" class="notifications-list list-unstyled" data-nextstart="{nextStart}">
|
|
25
25
|
<!-- IMPORT partials/notifications_list.tpl -->
|
|
26
26
|
</ul>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<li component="categories/category" data-cid="{./cid}" data-parent-cid="{../parentCid}" class="category-{./cid}">
|
|
2
2
|
<meta itemprop="name" content="{./name}">
|
|
3
3
|
<div class="content depth-{./depth} d-flex gap-2">
|
|
4
|
-
<div class="flex-1 align-items-start d-flex gap-2">
|
|
4
|
+
<div class="flex-grow-1 align-items-start d-flex gap-2">
|
|
5
5
|
<div>
|
|
6
6
|
{buildCategoryIcon(@value, "24px", "rounded-1")}
|
|
7
7
|
</div>
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
11
|
</div>
|
|
12
12
|
{{{ if ./descriptionParsed }}}
|
|
13
|
-
<div class="description text-muted text-xs">{./descriptionParsed}</div>
|
|
13
|
+
<div class="description text-muted text-xs w-100">{./descriptionParsed}</div>
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
|
-
<div class="flex-
|
|
17
|
+
<div class="flex-shrink-0">
|
|
18
18
|
<!-- IMPORT partials/category/watch.tpl -->
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
|
-
<hr
|
|
21
|
+
<hr />
|
|
22
22
|
</li>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
34
|
<div class="d-flex flex-column flex-md-row mt-1 justify-content-between w-100 gap-2">
|
|
35
|
-
<div class="d-flex flex-1 flex-row gap-2">
|
|
35
|
+
<div class="d-flex flex-grow-1 flex-row gap-2">
|
|
36
36
|
<div class="d-flex flex-column">
|
|
37
37
|
<h2 class="fullname fw-semibold fs-2 tracking-tight mb-0">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
|
|
38
38
|
<div class="d-flex flex-wrap gap-1 text-sm align-items-center">
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
</div>
|
|
63
63
|
</div>
|
|
64
64
|
|
|
65
|
-
<div class="d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
65
|
+
<div class="flex-shrink-0 d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
66
66
|
{{{ if loggedIn }}}
|
|
67
67
|
{{{ if !isSelf }}}
|
|
68
68
|
<a component="account/unfollow" href="#" class="btn btn-info flex-fill{{{ if !isFollowing }}} hide{{{ end }}}">[[user:unfollow]]</a>
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
|
|
95
95
|
<div class="d-flex flex-column flex-md-row">
|
|
96
96
|
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
97
|
-
<div class="account-content flex-1 ps-md-2 ps-lg-3 ps-xl-4" style="min-width: 0;">
|
|
97
|
+
<div class="account-content flex-grow-1 ps-md-2 ps-lg-3 ps-xl-4" style="min-width: 0;">
|
|
98
98
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<div class="flex-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
1
|
+
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
2
2
|
<div class="sticky-md-top d-flex flex-row flex-md-column flex-wrap gap-1" style="top: 1rem;z-index: 1;">
|
|
3
3
|
<a href="{config.relative_path}/user/{userslug}" class="btn-ghost fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
|
-
<div class="flex-1">[[global:about]]</div>
|
|
4
|
+
<div class="flex-grow-1">[[global:about]]</div>
|
|
5
5
|
</a>
|
|
6
6
|
<a href="{config.relative_path}/user/{userslug}/posts"class="btn-ghost fw-semibold
|
|
7
7
|
{{{ if template.account/posts }}}active{{{ end }}}
|
|
@@ -10,67 +10,67 @@
|
|
|
10
10
|
{{{ if template.account/upvoted }}}active{{{ end }}}
|
|
11
11
|
{{{ if template.account/downvoted }}}active{{{ end }}}
|
|
12
12
|
{{{ if template.account/bookmarks }}}active{{{ end }}}">
|
|
13
|
-
<div class="flex-1">[[global:posts]]</div>
|
|
14
|
-
<span class="text-xs human-readable-number" title="{counts.posts}">{counts.posts}</span>
|
|
13
|
+
<div class="flex-grow-1">[[global:posts]]</div>
|
|
14
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.posts}">{counts.posts}</span>
|
|
15
15
|
</a>
|
|
16
16
|
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost fw-semibold
|
|
17
17
|
{{{ if template.account/topics }}}active{{{ end }}}
|
|
18
18
|
{{{ if template.account/watched }}}active{{{ end }}}
|
|
19
19
|
{{{ if template.account/ignored }}}active{{{ end }}}">
|
|
20
|
-
<div class="flex-1">[[global:topics]]</div>
|
|
21
|
-
<span class="text-xs human-readable-number" title="{counts.topics}">{counts.topics}</span>
|
|
20
|
+
<div class="flex-grow-1">[[global:topics]]</div>
|
|
21
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.topics}">{counts.topics}</span>
|
|
22
22
|
</a>
|
|
23
23
|
<a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost fw-semibold
|
|
24
24
|
{{{ if template.account/groups }}}active{{{ end }}}">
|
|
25
|
-
<div class="flex-1">[[global:header.groups]]</div>
|
|
26
|
-
<span class="text-xs human-readable-number" title="{counts.groups}">{counts.groups}</span>
|
|
25
|
+
<div class="flex-grow-1">[[global:header.groups]]</div>
|
|
26
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.groups}">{counts.groups}</span>
|
|
27
27
|
</a>
|
|
28
28
|
|
|
29
29
|
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost fw-semibold
|
|
30
30
|
{{{ if template.account/followers }}}active{{{ end }}}">
|
|
31
|
-
<div class="flex-1">[[user:followers]]</div>
|
|
32
|
-
<span class="text-xs human-readable-number" title="{counts.followers}">{counts.followers}</span>
|
|
31
|
+
<div class="flex-grow-1">[[user:followers]]</div>
|
|
32
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.followers}">{counts.followers}</span>
|
|
33
33
|
</a>
|
|
34
34
|
|
|
35
35
|
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost fw-semibold
|
|
36
36
|
{{{ if template.account/following }}}active{{{ end }}}">
|
|
37
|
-
<div class="flex-1">[[user:following]]</div>
|
|
38
|
-
<span class="text-xs human-readable-number" title="{counts.following}">{counts.following}</span>
|
|
37
|
+
<div class="flex-grow-1">[[user:following]]</div>
|
|
38
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.following}">{counts.following}</span>
|
|
39
39
|
</a>
|
|
40
40
|
|
|
41
41
|
{{{ if canEdit }}}
|
|
42
42
|
<a href="{config.relative_path}/user/{userslug}/categories" class="btn-ghost fw-semibold
|
|
43
43
|
{{{ if template.account/categories }}}active{{{ end }}}">
|
|
44
|
-
<div class="flex-1">[[user:watched_categories]]</div>
|
|
45
|
-
<span class="text-xs human-readable-number" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
44
|
+
<div class="flex-grow-1">[[user:watched_categories]]</div>
|
|
45
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
46
46
|
</a>
|
|
47
47
|
|
|
48
48
|
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold
|
|
49
49
|
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
50
|
-
<div class="flex-1">[[user:blocked-users]]</div>
|
|
51
|
-
<span class="text-xs human-readable-number" title="{counts.blocks}">{counts.blocks}</span>
|
|
50
|
+
<div class="flex-grow-1">[[user:blocked-users]]</div>
|
|
51
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.blocks}">{counts.blocks}</span>
|
|
52
52
|
</a>
|
|
53
53
|
|
|
54
54
|
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost fw-semibold
|
|
55
55
|
{{{ if template.account/uploads }}}active{{{ end }}}">
|
|
56
|
-
<div class="flex-1">[[global:uploads]]</div>
|
|
57
|
-
<span class="text-xs human-readable-number" title="{counts.uploaded}">{counts.uploaded}</span>
|
|
56
|
+
<div class="flex-grow-1">[[global:uploads]]</div>
|
|
57
|
+
<span class="flex-shrink-0 text-xs human-readable-number" title="{counts.uploaded}">{counts.uploaded}</span>
|
|
58
58
|
</a>
|
|
59
59
|
{{{ end }}}
|
|
60
60
|
|
|
61
61
|
<hr class="w-100 my-2"/>
|
|
62
62
|
{{{ if (loggedIn && (!isSelf && !banned)) }}}
|
|
63
63
|
<a href="#" component="account/flag" class="btn-ghost-sm">
|
|
64
|
-
<i class="fa-solid fa-flag text-danger"></i>
|
|
65
|
-
<div class="flex-1 text-nowrap">[[user:flag-profile]]</div>
|
|
64
|
+
<i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
|
|
65
|
+
<div class="flex-grow-1 text-nowrap">[[user:flag-profile]]</div>
|
|
66
66
|
</a>
|
|
67
67
|
<a href="#" component="account/block" class="btn-ghost-sm {{{ if isBlocked }}}hidden{{{ end }}}">
|
|
68
|
-
<i class="fa-solid fa-ban text-danger"></i>
|
|
69
|
-
<div class="flex-1 text-nowrap">[[user:block_user]]</div>
|
|
68
|
+
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
69
|
+
<div class="flex-grow-1 text-nowrap">[[user:block_user]]</div>
|
|
70
70
|
</a>
|
|
71
71
|
<a href="#" component="account/unblock" class="btn-ghost-sm {{{ if !isBlocked }}}hidden{{{ end }}}">
|
|
72
|
-
<i class="fa-solid fa-ban text-danger"></i>
|
|
73
|
-
<div class="flex-1 text-nowrap">[[user:unblock_user]]</div>
|
|
72
|
+
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
73
|
+
<div class="flex-grow-1 text-nowrap">[[user:unblock_user]]</div>
|
|
74
74
|
</a>
|
|
75
75
|
<hr class="w-100 my-2"/>
|
|
76
76
|
{{{ end }}}
|
|
@@ -78,17 +78,17 @@
|
|
|
78
78
|
{{{ if canEdit }}}
|
|
79
79
|
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm text-xs
|
|
80
80
|
{{{ if template.account/edit }}}active{{{ end }}}">
|
|
81
|
-
<div class="flex-1">[[user:edit-profile]]</div>
|
|
81
|
+
<div class="flex-grow-1">[[user:edit-profile]]</div>
|
|
82
82
|
</a>
|
|
83
83
|
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm text-xs
|
|
84
84
|
{{{ if template.account/settings }}}active{{{ end }}}">
|
|
85
|
-
<div class="flex-1">[[user:settings]]</div>
|
|
85
|
+
<div class="flex-grow-1">[[user:settings]]</div>
|
|
86
86
|
</a>
|
|
87
87
|
{{{ end }}}
|
|
88
88
|
|
|
89
89
|
{{{ each profile_links }}}
|
|
90
90
|
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}} {{{ if (url == ./url) }}}active{{{ end }}}" id="{./id}">
|
|
91
|
-
<div class="flex-1">{./name}</div>
|
|
91
|
+
<div class="flex-grow-1">{./name}</div>
|
|
92
92
|
</a>
|
|
93
93
|
{{{end}}}
|
|
94
94
|
</div>
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
<li component="categories/category" data-cid="{./cid}" class="row
|
|
1
|
+
<li component="categories/category" data-cid="{./cid}" class="w-100 border-bottom py-3 py-lg-4 gap-1 d-flex flex-column flex-lg-row align-items-start category-{./cid}">
|
|
2
2
|
<meta itemprop="name" content="{./name}">
|
|
3
|
-
|
|
4
|
-
<div class="d-flex
|
|
5
|
-
<div class="">
|
|
3
|
+
|
|
4
|
+
<div class="d-flex col-lg-7 gap-2 gap-lg-3">
|
|
5
|
+
<div class="flex-shrink-0">
|
|
6
6
|
{buildCategoryIcon(@value, "40px", "rounded-1")}
|
|
7
7
|
</div>
|
|
8
|
-
<div class="d-flex flex-
|
|
9
|
-
<h2 class="title
|
|
8
|
+
<div class="flex-grow-1 d-flex flex-wrap gap-1">
|
|
9
|
+
<h2 class="title text-break fs-4 fw-semibold m-0 tracking-tight w-100">
|
|
10
10
|
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
11
|
</h2>
|
|
12
12
|
{{{ if ./descriptionParsed }}}
|
|
13
|
-
<div class="description text-muted text-xs">
|
|
13
|
+
<div class="description text-muted text-xs w-100">
|
|
14
14
|
{./descriptionParsed}
|
|
15
15
|
</div>
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
{{{ if !config.hideSubCategories }}}
|
|
18
18
|
{{{ if ./children.length }}}
|
|
19
|
-
<div class="category-children row row-cols-2 g-2">
|
|
19
|
+
<div class="category-children row row-cols-2 g-2 my-1 w-100">
|
|
20
20
|
{{{ each ./children }}}
|
|
21
21
|
{{{ if !./isSection }}}
|
|
22
22
|
<span class="category-children-item small">
|
|
@@ -39,28 +39,25 @@
|
|
|
39
39
|
{{{ end }}}
|
|
40
40
|
</div>
|
|
41
41
|
</div>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
<span class="
|
|
48
|
-
<
|
|
42
|
+
{{{ if !./link }}}
|
|
43
|
+
<div class="d-flex col-lg-5 align-content-stretch">
|
|
44
|
+
<div class="meta stats d-none d-lg-grid col-6 gap-1 pe-2 text-muted" style="grid-template-columns: 1fr 1fr;">
|
|
45
|
+
<div class="card card-header border-0 p-1 overflow-hidden rounded-1 d-flex flex-column gap-1 align-items-center">
|
|
46
|
+
<span class="{./unread-class} human-readable-number fs-5 ff-secondary lh-1" title="{./totalTopicCount}" data-toFixed="0">{./totalTopicCount}</span>
|
|
47
|
+
<span class="d-none d-xl-flex text-lowercase text-xs">[[global:topics]]</span>
|
|
48
|
+
<i class="d-xl-none fa fa-fw text-xs text-muted opacity-75 fa-list"></i>
|
|
49
49
|
</div>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<
|
|
54
|
-
<span class="text-lowercase text-xs">[[global:posts]]</span>
|
|
50
|
+
<div class="card card-header border-0 p-1 overflow-hidden rounded-1 d-flex flex-column gap-1 align-items-center">
|
|
51
|
+
<span class="{./unread-class} human-readable-number fs-5 ff-secondary lh-1" title="{./totalPostCount}" data-toFixed="0">{./totalPostCount}</span>
|
|
52
|
+
<span class="d-none d-xl-flex text-lowercase text-xs">[[global:posts]]</span>
|
|
53
|
+
<i class="d-xl-none fa fa-fw text-xs text-muted opacity-75 fa-message"></i>
|
|
55
54
|
</div>
|
|
56
55
|
</div>
|
|
56
|
+
{{{ if !config.hideCategoryLastPost }}}
|
|
57
|
+
<div component="topic/teaser" class="teaser col-lg-6">
|
|
58
|
+
<!-- IMPORT partials/categories/lastpost.tpl -->
|
|
59
|
+
</div>
|
|
60
|
+
{{{ end }}}
|
|
57
61
|
</div>
|
|
58
|
-
|
|
59
|
-
{{{ if !config.hideCategoryLastPost }}}
|
|
60
|
-
<div class="col-md-7 col-sm-3 teaser d-none d-sm-block" component="topic/teaser">
|
|
61
|
-
<!-- IMPORT partials/categories/lastpost.tpl -->
|
|
62
|
-
</div>
|
|
63
|
-
{{{ end }}}
|
|
64
|
-
{{{ end }}}
|
|
65
|
-
</div>
|
|
62
|
+
{{{ end }}}
|
|
66
63
|
</li>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<div class="lastpost background-link-container border-start border-2 h-100" style="border-color: {./bgColor}!important;">
|
|
1
|
+
<div class="lastpost background-link-container border-start border-2 lh-sm h-100" style="border-color: {./bgColor}!important;">
|
|
2
2
|
{{{ each ./posts }}}
|
|
3
3
|
{{{ if @first }}}
|
|
4
|
-
<div component="category/posts" class="ps-
|
|
4
|
+
<div component="category/posts" class="ps-2 text-xs">
|
|
5
5
|
<a class="background-link" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}"></a>
|
|
6
|
-
<
|
|
7
|
-
<a class="text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "
|
|
6
|
+
<div>
|
|
7
|
+
<a class="text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "18px", true, "avatar-tooltip")}</a>
|
|
8
8
|
<a class="permalink text-muted" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}">
|
|
9
9
|
<span class="timeago text-xs" title="{../timestampISO}"></span>
|
|
10
10
|
</a>
|
|
11
|
-
</
|
|
12
|
-
<div class="post-content
|
|
11
|
+
</div>
|
|
12
|
+
<div class="post-content text-xs line-clamp-2 lh-sm">
|
|
13
13
|
{./content}
|
|
14
14
|
</div>
|
|
15
15
|
</div>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
{{{ end }}}
|
|
18
18
|
|
|
19
19
|
{{{ if !./posts.length }}}
|
|
20
|
-
<div component="category/posts" class="ps-
|
|
20
|
+
<div component="category/posts" class="ps-2">
|
|
21
21
|
<div class="post-content overflow-hidden text-xs">
|
|
22
22
|
[[category:no_new_posts]]
|
|
23
23
|
</div>
|