nodebb-theme-harmony 1.1.108 → 1.2.0
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/chats.scss +2 -126
- package/scss/common.scss +3 -59
- package/scss/overrides.scss +0 -14
- package/templates/account/categories.tpl +1 -1
- package/templates/account/posts.tpl +6 -6
- package/templates/account/topics.tpl +3 -3
- package/templates/flags/detail.tpl +4 -4
- package/templates/groups/list.tpl +3 -3
- package/templates/notifications.tpl +1 -1
- package/templates/partials/account/sidebar-left.tpl +16 -16
- package/templates/partials/category/filter-dropdown-content.tpl +1 -1
- package/templates/partials/category/selector-dropdown-content.tpl +1 -1
- package/templates/partials/category/sort.tpl +1 -1
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/category/tools.tpl +1 -1
- package/templates/partials/category/watch.tpl +1 -1
- package/templates/partials/groups/filter-dropdown-content.tpl +1 -1
- package/templates/partials/groups/sidebar-left.tpl +5 -5
- package/templates/partials/post_bar.tpl +1 -1
- package/templates/partials/quick-search-results.tpl +1 -1
- package/templates/partials/search-filters.tpl +1 -1
- package/templates/partials/tags/filter-dropdown-content.tpl +1 -1
- package/templates/partials/tags/watch.tpl +1 -1
- package/templates/partials/tags_list.tpl +1 -1
- package/templates/partials/topic/navigator.tpl +2 -2
- package/templates/partials/topic/post-menu.tpl +1 -1
- package/templates/partials/topic/post.tpl +2 -2
- package/templates/partials/topic/quickreply.tpl +1 -1
- package/templates/partials/topic/sort.tpl +1 -1
- package/templates/partials/topic/tools.tpl +1 -1
- package/templates/partials/topic/watch.tpl +1 -1
- package/templates/partials/topic-filters.tpl +1 -1
- package/templates/partials/topic-terms.tpl +1 -1
- package/templates/partials/users/filter-dropdown-content.tpl +1 -1
- package/templates/partials/users/item.tpl +1 -1
- package/templates/partials/users_list_menu.tpl +5 -5
- package/templates/post-queue.tpl +2 -2
- package/templates/chat.tpl +0 -37
- package/templates/chats.tpl +0 -54
- package/templates/partials/chats/add-reaction.tpl +0 -1
- package/templates/partials/chats/composer.tpl +0 -27
- package/templates/partials/chats/dropdown.tpl +0 -10
- package/templates/partials/chats/message-window.tpl +0 -43
- package/templates/partials/chats/message.tpl +0 -73
- package/templates/partials/chats/messages.tpl +0 -7
- package/templates/partials/chats/options.tpl +0 -100
- package/templates/partials/chats/parent.tpl +0 -13
- package/templates/partials/chats/pinned-messages-list.tpl +0 -32
- package/templates/partials/chats/pinned-messages.tpl +0 -12
- package/templates/partials/chats/reactions.tpl +0 -1
- package/templates/partials/chats/recent_room.tpl +0 -55
- package/templates/partials/chats/scroll-up-alert.tpl +0 -3
- package/templates/partials/chats/system-message.tpl +0 -7
- package/templates/partials/chats/user-list.tpl +0 -11
- package/templates/partials/chats/user.tpl +0 -1
package/package.json
CHANGED
package/scss/chats.scss
CHANGED
|
@@ -1,28 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
.stacked-avatars {
|
|
4
|
-
width: 32px;
|
|
5
|
-
height: 32px;
|
|
6
|
-
span:first-child {
|
|
7
|
-
top: 0;
|
|
8
|
-
left: 8px;
|
|
9
|
-
}
|
|
10
|
-
span:last-child {
|
|
11
|
-
left: 0;
|
|
12
|
-
top: 8px;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
1
|
+
// themes have a different layout so each one needs this block to set height to 100%
|
|
16
2
|
body.page-user-chats {
|
|
17
|
-
#content {
|
|
18
|
-
max-width: 100%;
|
|
19
|
-
margin-bottom: 0!important;
|
|
20
|
-
}
|
|
21
|
-
overflow: hidden;
|
|
22
|
-
[data-widget-area="footer"] {
|
|
23
|
-
display: none;
|
|
24
|
-
}
|
|
25
|
-
height: 100%;
|
|
26
3
|
> .layout-container {
|
|
27
4
|
height: 100%;
|
|
28
5
|
> #panel {
|
|
@@ -32,105 +9,4 @@ body.page-user-chats {
|
|
|
32
9
|
}
|
|
33
10
|
}
|
|
34
11
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
[component="chat/recent"] {
|
|
38
|
-
.active .chat-room-btn {
|
|
39
|
-
background-color: var(--btn-ghost-hover-color);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
[component="chat/nav-wrapper"] {
|
|
44
|
-
width: 300px;
|
|
45
|
-
[component="chat/public/room"].unread {
|
|
46
|
-
font-weight: $font-weight-bold;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
[component="chat/user/list"] [data-uid] {
|
|
51
|
-
[component="chat/user/list/username"] {
|
|
52
|
-
color: $text-muted;
|
|
53
|
-
}
|
|
54
|
-
&.online {
|
|
55
|
-
[component="chat/user/list/username"] {
|
|
56
|
-
color: initial;
|
|
57
|
-
font-weight: $font-weight-semibold;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.expanded-chat {
|
|
63
|
-
.chat-content {
|
|
64
|
-
.message-body {
|
|
65
|
-
@include fix-lists;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.chat-message {
|
|
69
|
-
.message-body-wrapper {
|
|
70
|
-
.controls {
|
|
71
|
-
opacity: 0;
|
|
72
|
-
transition: $transition-fade;
|
|
73
|
-
&:has([aria-expanded="true"]) { opacity: 1; }
|
|
74
|
-
[data-action="restore"], [data-action="unpin"] { display: none; }
|
|
75
|
-
}
|
|
76
|
-
&:hover {
|
|
77
|
-
.controls { opacity: 1; }
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
&.deleted {
|
|
81
|
-
.message-body { opacity: 0.3; }
|
|
82
|
-
.message-body-wrapper .controls {
|
|
83
|
-
[data-action] { display: none; }
|
|
84
|
-
[data-action="restore"] { display: block; }
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
&.pinned {
|
|
88
|
-
.message-body-wrapper .controls {
|
|
89
|
-
[data-action="pin"] { display: none; }
|
|
90
|
-
[data-action="unpin"] { display: block;}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/* Mobile handling of chat page */
|
|
98
|
-
@include media-breakpoint-down(lg) {
|
|
99
|
-
.page-user-chats.chat-loaded {
|
|
100
|
-
padding-bottom: 4.75rem;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
@include media-breakpoint-down(md) {
|
|
105
|
-
.page-user-chats.chat-loaded {
|
|
106
|
-
padding-bottom: initial;
|
|
107
|
-
}
|
|
108
|
-
[component="chat/nav-wrapper"] {
|
|
109
|
-
width: 100%;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
.page-user-chats.chat-loaded .bottombar {
|
|
114
|
-
display: none!important;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
[component="chat/nav-wrapper"][data-loaded="1"] {
|
|
118
|
-
display: none!important;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
[component="chat/nav-wrapper"][data-loaded="0"] + [component="chat/main-wrapper"] {
|
|
122
|
-
display: none!important;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.chat-modal {
|
|
127
|
-
left: auto;
|
|
128
|
-
top: auto;
|
|
129
|
-
bottom: 0px;
|
|
130
|
-
right: 2rem;
|
|
131
|
-
width: auto!important;
|
|
132
|
-
height: auto!important;
|
|
133
|
-
[component="chat/user/list/btn"], [component="chat/pinned/messages/btn"] {
|
|
134
|
-
display: none!important;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
12
|
+
}
|
package/scss/common.scss
CHANGED
|
@@ -23,15 +23,9 @@ hr {
|
|
|
23
23
|
opacity: 1;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
.ff-base {
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
.ff-sans {
|
|
30
|
-
font-family: $font-family-sans-serif !important;
|
|
31
|
-
}
|
|
32
|
-
.ff-secondary {
|
|
33
|
-
font-family: $font-family-secondary;
|
|
34
|
-
}
|
|
26
|
+
.ff-base { font-family: $font-family-base !important; }
|
|
27
|
+
.ff-sans { font-family: $font-family-sans-serif !important; }
|
|
28
|
+
.ff-secondary { font-family: $font-family-secondary; }
|
|
35
29
|
.tracking-tight { letter-spacing: -0.02em; }
|
|
36
30
|
|
|
37
31
|
.caret {
|
|
@@ -104,56 +98,6 @@ body:not(.page-user) {
|
|
|
104
98
|
}
|
|
105
99
|
}
|
|
106
100
|
|
|
107
|
-
@mixin btn-ghost-base {
|
|
108
|
-
display: flex;
|
|
109
|
-
align-items: center;
|
|
110
|
-
justify-content: center;
|
|
111
|
-
gap: ($spacer * 0.5);
|
|
112
|
-
border-radius: $border-radius-sm;
|
|
113
|
-
border-width: 1px;
|
|
114
|
-
border-color: transparent;
|
|
115
|
-
background-color: transparent;
|
|
116
|
-
padding: ($spacer * 0.25) ($spacer * 0.5);
|
|
117
|
-
text-align: left;
|
|
118
|
-
--bs-text-opacity: 1;
|
|
119
|
-
color: inherit !important;
|
|
120
|
-
font-family: $font-family-secondary;
|
|
121
|
-
cursor: pointer;
|
|
122
|
-
&:hover, &.active {
|
|
123
|
-
background-color: var(--btn-ghost-hover-color);
|
|
124
|
-
text-decoration: none;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.btn-ghost {
|
|
129
|
-
@include btn-ghost-base();
|
|
130
|
-
line-height: 1.5rem;
|
|
131
|
-
> i {
|
|
132
|
-
line-height: 1.5rem;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.btn-ghost-sm {
|
|
137
|
-
@include btn-ghost-base();
|
|
138
|
-
font-size: 0.875rem;
|
|
139
|
-
line-height: 1.25rem;
|
|
140
|
-
> i {
|
|
141
|
-
line-height: 1.25rem;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.btn-outline {
|
|
146
|
-
@include btn-ghost-base();
|
|
147
|
-
border-color: $border-color;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.btn-outline-sm {
|
|
151
|
-
@include btn-ghost-base();
|
|
152
|
-
border-color: $border-color;
|
|
153
|
-
font-size: 0.875rem;
|
|
154
|
-
line-height: 1.25rem;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
101
|
.flex-basis-md-200 {
|
|
158
102
|
@include media-breakpoint-up(md) {
|
|
159
103
|
flex-basis: 200px!important;
|
package/scss/overrides.scss
CHANGED
|
@@ -35,20 +35,6 @@ $text-muted: $gray-600 !default;
|
|
|
35
35
|
$border-color: $gray-200 !default;
|
|
36
36
|
$link-color: shade-color($blue, 20%) !default;
|
|
37
37
|
|
|
38
|
-
$btn-ghost-hover-color: mix($light, $dark, 90%);
|
|
39
|
-
$btn-ghost-active-color: lighten($btn-ghost-hover-color, 5%);
|
|
40
|
-
$btn-ghost-hover-color-dark: mix($dark, $light, 90%);
|
|
41
|
-
$btn-ghost-active-color-dark: lighten($btn-ghost-hover-color-dark, 5%);
|
|
42
|
-
|
|
43
|
-
:root {
|
|
44
|
-
--btn-ghost-hover-color: #{$btn-ghost-hover-color};
|
|
45
|
-
--btn-ghost-active-color: #{$btn-ghost-active-color};
|
|
46
|
-
}
|
|
47
|
-
[data-bs-theme="dark"] {
|
|
48
|
-
--btn-ghost-hover-color: #{$btn-ghost-hover-color-dark};
|
|
49
|
-
--btn-ghost-active-color: #{$btn-ghost-active-color-dark};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
38
|
// no caret on dropdown-toggle
|
|
53
39
|
$enable-caret: false;
|
|
54
40
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div class="d-flex gap-1">
|
|
9
9
|
<div class="btn-group bottom-sheet" component="category/watch/all">
|
|
10
|
-
<button class="btn-ghost-sm fw-semibold dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
10
|
+
<button class="btn-ghost-sm ff-secondary fw-semibold dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
11
11
|
<span>[[user:change-all]]</span>
|
|
12
12
|
</button>
|
|
13
13
|
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end">
|
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
<div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-3">
|
|
4
4
|
<h3 class="fw-semibold fs-5 mb-0">[[global:posts]]</h3>
|
|
5
5
|
<div class="d-flex flex-wrap gap-1">
|
|
6
|
-
<a href="{config.relative_path}/user/{userslug}/posts" class="btn-ghost-sm fw-semibold {{{ if template.account/posts }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
6
|
+
<a href="{config.relative_path}/user/{userslug}/posts" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/posts }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
7
7
|
{{{ if !reputation:disabled }}}
|
|
8
|
-
<a href="{config.relative_path}/user/{userslug}/best"class="btn-ghost-sm fw-semibold {{{ if template.account/best }}}active{{{ end }}}">[[global:best]]</a>
|
|
9
|
-
<a href="{config.relative_path}/user/{userslug}/controversial" class="btn-ghost-sm fw-semibold {{{ if template.account/controversial }}}active{{{ end }}}">[[global:controversial]]</a>
|
|
8
|
+
<a href="{config.relative_path}/user/{userslug}/best"class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/best }}}active{{{ end }}}">[[global:best]]</a>
|
|
9
|
+
<a href="{config.relative_path}/user/{userslug}/controversial" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/controversial }}}active{{{ end }}}">[[global:controversial]]</a>
|
|
10
10
|
{{{ if canEdit }}}
|
|
11
|
-
<a href="{config.relative_path}/user/{userslug}/upvoted" class="btn-ghost-sm fw-semibold {{{ if template.account/upvoted }}}active{{{ end }}}">[[global:upvoted]]</a>
|
|
11
|
+
<a href="{config.relative_path}/user/{userslug}/upvoted" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/upvoted }}}active{{{ end }}}">[[global:upvoted]]</a>
|
|
12
12
|
{{{ if !downvote:disabled }}}
|
|
13
|
-
<a href="{config.relative_path}/user/{userslug}/downvoted" class="btn-ghost-sm fw-semibold {{{ if template.account/downvoted }}}active{{{ end }}}">[[global:downvoted]]</a>
|
|
13
|
+
<a href="{config.relative_path}/user/{userslug}/downvoted" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/downvoted }}}active{{{ end }}}">[[global:downvoted]]</a>
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
{{{ end }}}
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
{{{ if canEdit }}}
|
|
18
|
-
<a href="{config.relative_path}/user/{userslug}/bookmarks" class="btn-ghost-sm fw-semibold {{{ if template.account/bookmarks }}}active{{{ end }}}">[[user:bookmarks]]</a>
|
|
18
|
+
<a href="{config.relative_path}/user/{userslug}/bookmarks" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/bookmarks }}}active{{{ end }}}">[[user:bookmarks]]</a>
|
|
19
19
|
{{{ end }}}
|
|
20
20
|
</div>
|
|
21
21
|
</div>
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
|
|
23
23
|
<div class="d-flex gap-1">
|
|
24
24
|
{{{ if canEdit }}}
|
|
25
|
-
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost-sm fw-semibold {{{ if template.account/topics }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
26
|
-
<a href="{config.relative_path}/user/{userslug}/watched"class="btn-ghost-sm fw-semibold {{{ if template.account/watched }}}active{{{ end }}}">[[user:watched]]</a>
|
|
27
|
-
<a href="{config.relative_path}/user/{userslug}/ignored" class="btn-ghost-sm fw-semibold {{{ if template.account/ignored }}}active{{{ end }}}">[[user:ignored]]</a>
|
|
25
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/topics }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
26
|
+
<a href="{config.relative_path}/user/{userslug}/watched"class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/watched }}}active{{{ end }}}">[[user:watched]]</a>
|
|
27
|
+
<a href="{config.relative_path}/user/{userslug}/ignored" class="btn-ghost-sm ff-secondary fw-semibold {{{ if template.account/ignored }}}active{{{ end }}}">[[user:ignored]]</a>
|
|
28
28
|
{{{ end }}}
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<div class="d-flex flex-column flex-md-row">
|
|
4
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
|
-
<a class="btn btn-ghost border btn-sm justify-content-start" href="{config.relative_path}/{type_path}/{targetId}">
|
|
6
|
+
<a class="btn btn-ghost ff-secondary 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>
|
|
8
8
|
[[flags:go-to-target]]
|
|
9
9
|
</a>
|
|
10
10
|
|
|
11
11
|
{{{ if target.uid }}}
|
|
12
12
|
<div class="btn-group dropend" data-uid="{target.uid}">
|
|
13
|
-
<button type="button" class="btn btn-ghost border btn-sm justify-content-start dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
13
|
+
<button type="button" class="btn btn-ghost ff-secondary border btn-sm justify-content-start dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
14
14
|
<i class="fa fa-fw fa-street-view text-primary"></i>
|
|
15
15
|
[[flags:flagged-user]]
|
|
16
16
|
<i class="fa fa-chevron-right ms-auto text-secondary"></i>
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
</div>
|
|
39
39
|
{{{ end }}}
|
|
40
40
|
|
|
41
|
-
<a class="btn btn-ghost border btn-sm justify-content-start" href="#" data-action="assign">
|
|
41
|
+
<a class="btn btn-ghost ff-secondary border btn-sm justify-content-start" href="#" data-action="assign">
|
|
42
42
|
<i class="fa fa-fw fa-id-card-o text-primary"></i>
|
|
43
43
|
[[flags:assign-to-me]]
|
|
44
44
|
</a>
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
<div class="pb-4 border-bottom">
|
|
153
153
|
<div class="d-flex align-items-center">
|
|
154
154
|
<h2 class="h6 fw-bold me-auto mb-0">[[flags:notes]]</h2>
|
|
155
|
-
<button class="btn btn-ghost border" data-action="addEditNote">[[flags:add-note]]</button>
|
|
155
|
+
<button class="btn btn-ghost ff-secondary border" data-action="addEditNote">[[flags:add-note]]</button>
|
|
156
156
|
</div>
|
|
157
157
|
<ul component="flag/notes" class="list-unstyled mt-4">
|
|
158
158
|
{{{ if !notes.length }}}
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
<div class="text-sm d-flex flex-wrap align-items-center gap-2">
|
|
11
11
|
[[topic:sort-by]]
|
|
12
12
|
<div class="d-flex gap-2">
|
|
13
|
-
<a href="?sort=alpha" class="btn-ghost fw-semibold {{{ if (sort == "alpha") }}}active{{{ end }}}">[[groups:details.group-name]]</a>
|
|
14
|
-
<a href="?sort=count" class="btn-ghost fw-semibold {{{ if (sort == "count") }}}active{{{ end }}}">[[groups:details.member-count]]</a>
|
|
15
|
-
<a href="?sort=date" class="btn-ghost fw-semibold {{{ if (sort == "date") }}}active{{{ end }}}">[[groups:details.creation-date]]</a>
|
|
13
|
+
<a href="?sort=alpha" class="btn-ghost ff-secondary fw-semibold {{{ if (sort == "alpha") }}}active{{{ end }}}">[[groups:details.group-name]]</a>
|
|
14
|
+
<a href="?sort=count" class="btn-ghost ff-secondary fw-semibold {{{ if (sort == "count") }}}active{{{ end }}}">[[groups:details.member-count]]</a>
|
|
15
|
+
<a href="?sort=date" class="btn-ghost ff-secondary fw-semibold {{{ if (sort == "date") }}}active{{{ end }}}">[[groups:details.creation-date]]</a>
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
{{{ if ./separator }}}
|
|
13
13
|
<hr/>
|
|
14
14
|
{{{ else }}}
|
|
15
|
-
<a class="btn-ghost fw-semibold {{{ if ./selected }}}active{{{ end }}}" href="{config.relative_path}/notifications?filter={./filter}">
|
|
15
|
+
<a class="btn-ghost ff-secondary fw-semibold {{{ if ./selected }}}active{{{ end }}}" href="{config.relative_path}/notifications?filter={./filter}">
|
|
16
16
|
<div class="flex-grow-1">{filters.name}</div>
|
|
17
17
|
<span class="flex-shrink-0 text-xs" title="{./count}">{humanReadableNumber(./count)}</span>
|
|
18
18
|
</a>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
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
|
-
<a href="{config.relative_path}/user/{userslug}" class="btn-ghost fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
3
|
+
<a href="{config.relative_path}/user/{userslug}" class="btn-ghost ff-secondary fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
4
|
<div class="flex-grow-1">[[global:about]]</div>
|
|
5
5
|
</a>
|
|
6
|
-
<a href="{config.relative_path}/user/{userslug}/posts"class="btn-ghost fw-semibold
|
|
6
|
+
<a href="{config.relative_path}/user/{userslug}/posts"class="btn-ghost ff-secondary fw-semibold
|
|
7
7
|
{{{ if template.account/posts }}}active{{{ end }}}
|
|
8
8
|
{{{ if template.account/best }}}active{{{ end }}}
|
|
9
9
|
{{{ if template.account/controversial }}}active{{{ end }}}
|
|
@@ -13,52 +13,52 @@
|
|
|
13
13
|
<div class="flex-grow-1">[[global:posts]]</div>
|
|
14
14
|
<span class="flex-shrink-0 text-xs" title="{counts.posts}">{humanReadableNumber(counts.posts)}</span>
|
|
15
15
|
</a>
|
|
16
|
-
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost fw-semibold
|
|
16
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost ff-secondary 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
20
|
<div class="flex-grow-1">[[global:topics]]</div>
|
|
21
21
|
<span class="flex-shrink-0 text-xs" title="{counts.topics}">{humanReadableNumber(counts.topics)}</span>
|
|
22
22
|
</a>
|
|
23
|
-
<a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost fw-semibold
|
|
23
|
+
<a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost ff-secondary fw-semibold
|
|
24
24
|
{{{ if template.account/groups }}}active{{{ end }}}">
|
|
25
25
|
<div class="flex-grow-1">[[global:header.groups]]</div>
|
|
26
26
|
<span class="flex-shrink-0 text-xs" title="{counts.groups}">{humanReadableNumber(counts.groups)}</span>
|
|
27
27
|
</a>
|
|
28
28
|
|
|
29
|
-
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost fw-semibold
|
|
29
|
+
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost ff-secondary fw-semibold
|
|
30
30
|
{{{ if template.account/followers }}}active{{{ end }}}">
|
|
31
31
|
<div class="flex-grow-1">[[user:followers]]</div>
|
|
32
32
|
<span class="flex-shrink-0 text-xs" title="{counts.followers}">{humanReadableNumber(counts.followers)}</span>
|
|
33
33
|
</a>
|
|
34
34
|
|
|
35
|
-
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost fw-semibold
|
|
35
|
+
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost ff-secondary fw-semibold
|
|
36
36
|
{{{ if template.account/following }}}active{{{ end }}}">
|
|
37
37
|
<div class="flex-grow-1">[[user:following]]</div>
|
|
38
38
|
<span class="flex-shrink-0 text-xs" title="{counts.following}">{humanReadableNumber(counts.following)}</span>
|
|
39
39
|
</a>
|
|
40
40
|
|
|
41
41
|
{{{ if canEdit }}}
|
|
42
|
-
<a href="{config.relative_path}/user/{userslug}/categories" class="btn-ghost fw-semibold
|
|
42
|
+
<a href="{config.relative_path}/user/{userslug}/categories" class="btn-ghost ff-secondary fw-semibold
|
|
43
43
|
{{{ if template.account/categories }}}active{{{ end }}}">
|
|
44
44
|
<div class="flex-grow-1">[[user:watched-categories]]</div>
|
|
45
45
|
<span class="flex-shrink-0 text-xs" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
46
46
|
</a>
|
|
47
47
|
{{{ if isSelf }}}
|
|
48
|
-
<a href="{config.relative_path}/user/{userslug}/tags" class="btn-ghost fw-semibold
|
|
48
|
+
<a href="{config.relative_path}/user/{userslug}/tags" class="btn-ghost ff-secondary fw-semibold
|
|
49
49
|
{{{ if template.account/tags }}}active{{{ end }}}">
|
|
50
50
|
<div class="flex-grow-1">[[user:watched-tags]]</div>
|
|
51
51
|
<span class="flex-shrink-0 text-xs" title="{counts.tagsWatched}">{counts.tagsWatched}</span>
|
|
52
52
|
</a>
|
|
53
53
|
{{{ end }}}
|
|
54
54
|
|
|
55
|
-
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold
|
|
55
|
+
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost ff-secondary fw-semibold
|
|
56
56
|
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
57
57
|
<div class="flex-grow-1">[[user:blocked-users]]</div>
|
|
58
58
|
<span class="flex-shrink-0 text-xs" title="{counts.blocks}">{humanReadableNumber(counts.blocks)}</span>
|
|
59
59
|
</a>
|
|
60
60
|
|
|
61
|
-
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost fw-semibold
|
|
61
|
+
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost ff-secondary fw-semibold
|
|
62
62
|
{{{ if template.account/uploads }}}active{{{ end }}}">
|
|
63
63
|
<div class="flex-grow-1">[[global:uploads]]</div>
|
|
64
64
|
<span class="flex-shrink-0 text-xs" title="{counts.uploaded}">{humanReadableNumber(counts.uploaded)}</span>
|
|
@@ -67,15 +67,15 @@
|
|
|
67
67
|
|
|
68
68
|
{{{ if (loggedIn && (!isSelf && !banned)) }}}
|
|
69
69
|
<hr class="w-100 my-2"/>
|
|
70
|
-
<a href="#" component="account/flag" class="btn-ghost-sm">
|
|
70
|
+
<a href="#" component="account/flag" class="btn-ghost-sm ff-secondary">
|
|
71
71
|
<i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
|
|
72
72
|
<div class="flex-grow-1 text-nowrap">[[user:flag-profile]]</div>
|
|
73
73
|
</a>
|
|
74
|
-
<a href="#" component="account/block" class="btn-ghost-sm {{{ if isBlocked }}}hidden{{{ end }}}">
|
|
74
|
+
<a href="#" component="account/block" class="btn-ghost-sm ff-secondary {{{ if isBlocked }}}hidden{{{ end }}}">
|
|
75
75
|
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
76
76
|
<div class="flex-grow-1 text-nowrap">[[user:block-user]]</div>
|
|
77
77
|
</a>
|
|
78
|
-
<a href="#" component="account/unblock" class="btn-ghost-sm {{{ if !isBlocked }}}hidden{{{ end }}}">
|
|
78
|
+
<a href="#" component="account/unblock" class="btn-ghost-sm ff-secondary {{{ if !isBlocked }}}hidden{{{ end }}}">
|
|
79
79
|
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
80
80
|
<div class="flex-grow-1 text-nowrap">[[user:unblock-user]]</div>
|
|
81
81
|
</a>
|
|
@@ -83,18 +83,18 @@
|
|
|
83
83
|
|
|
84
84
|
{{{ if canEdit }}}
|
|
85
85
|
<hr class="w-100 my-2"/>
|
|
86
|
-
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm text-xs
|
|
86
|
+
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm ff-secondary text-xs
|
|
87
87
|
{{{ if template.account/edit }}}active{{{ end }}}">
|
|
88
88
|
<div class="flex-grow-1">[[user:edit-profile]]</div>
|
|
89
89
|
</a>
|
|
90
|
-
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm text-xs
|
|
90
|
+
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm ff-secondary text-xs
|
|
91
91
|
{{{ if template.account/settings }}}active{{{ end }}}">
|
|
92
92
|
<div class="flex-grow-1">[[user:settings]]</div>
|
|
93
93
|
</a>
|
|
94
94
|
{{{ end }}}
|
|
95
95
|
|
|
96
96
|
{{{ each profile_links }}}
|
|
97
|
-
<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}">
|
|
97
|
+
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm ff-secondary text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}} {{{ if (url == ./url) }}}active{{{ end }}}" id="{./id}">
|
|
98
98
|
<div class="flex-grow-1">{./name}</div>
|
|
99
99
|
</a>
|
|
100
100
|
{{{end}}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<button type="button" class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
|
|
1
|
+
<button type="button" class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
|
|
2
2
|
{{{ if selectedCategory }}}
|
|
3
3
|
<span class="category-item d-inline-flex align-items-center gap-1">
|
|
4
4
|
{buildCategoryIcon(selectedCategory, "18px", "rounded-circle")}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<button type="button" class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
|
|
1
|
+
<button type="button" class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
|
|
2
2
|
<span component="category-selector-selected">
|
|
3
3
|
{{{ if (selectedCategory && !showCategorySelectLabel) }}}
|
|
4
4
|
<span class="category-item d-inline-flex align-items-center gap-1">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
2
|
-
<button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
2
|
+
<button class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
3
3
|
<i class="fa fa-fw fa-arrow-down-wide-short text-primary"></i>
|
|
4
4
|
<span class="visible-md-inline visible-lg-inline fw-semibold">[[topic:sort-by]]</span>
|
|
5
5
|
</button>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{{{end}}}
|
|
14
14
|
</ul>
|
|
15
15
|
{{{ if hasMoreSubCategories}}}
|
|
16
|
-
<button class="btn-ghost-sm mb-2" component="category/load-more-subcategories">[[category:x-more-categories, {subCategoriesLeft}]]</button>
|
|
16
|
+
<button class="btn-ghost-sm ff-secondary mb-2" component="category/load-more-subcategories">[[category:x-more-categories, {subCategoriesLeft}]]</button>
|
|
17
17
|
{{{ end }}}
|
|
18
18
|
</div>
|
|
19
19
|
{{{ end }}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{{{ if showTopicTools }}}
|
|
2
2
|
<div class="btn-group thread-tools bottom-sheet">
|
|
3
|
-
<button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
3
|
+
<button class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
4
4
|
<i class="fa fa-fw fa-gear text-primary"></i>
|
|
5
5
|
<span class="visible-md-inline visible-lg-inline fw-semibold">[[topic:thread-tools.title]]</span>
|
|
6
6
|
<span component="topic/selected/badge" class="badge rounded-pill bg-secondary"></span>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{{{ if config.loggedIn }}}
|
|
2
2
|
<div class="btn-group bottom-sheet" component="topic/watch">
|
|
3
|
-
<button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
3
|
+
<button class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
4
4
|
<span component="category/watching/menu" {{{ if !./isWatched }}}class="hidden"{{{ end }}}><i class="fa fa-fw fa-bell-o text-primary"></i><span class="visible-md-inline visible-lg-inline fw-semibold"> [[category:watching]]</span></span>
|
|
5
5
|
|
|
6
6
|
<span component="category/tracking/menu" {{{ if !./isTracked }}}class="hidden"{{{ end }}}><i class="fa fa-fw fa-inbox text-primary"></i><span class="visible-md-inline visible-lg-inline fw-semibold"> [[category:tracking]]</span></span>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div class="dropdown bottom-sheet">
|
|
2
|
-
<button type="button" class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown">
|
|
2
|
+
<button type="button" class="btn-ghost-sm ff-secondary dropdown-toggle" data-bs-toggle="dropdown">
|
|
3
3
|
{{{ if selectedGroup }}}
|
|
4
4
|
<span class="fw-semibold">{selectedGroup.displayName}</span>
|
|
5
5
|
{{{ else }}}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
2
2
|
<div class="nav sticky-md-top d-flex flex-row flex-md-column flex-wrap gap-1" style="top: 1rem; z-index: 1;">
|
|
3
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-posts" class="btn-ghost fw-semibold {{{ if template.groups/details }}}active{{{ end }}}">
|
|
3
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-posts" class="btn-ghost ff-secondary fw-semibold {{{ if template.groups/details }}}active{{{ end }}}">
|
|
4
4
|
<div class="flex-grow-1">[[global:posts]]</div>
|
|
5
5
|
</button>
|
|
6
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-members" class="btn-ghost fw-semibold">
|
|
6
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-members" class="btn-ghost ff-secondary fw-semibold">
|
|
7
7
|
<div class="flex-grow-1">[[groups:members]]</div>
|
|
8
8
|
<span class="flex-shrink-0 text-xs" title="{group.memberCount}">{humanReadableNumber(group.memberCount)}</span>
|
|
9
9
|
</button>
|
|
10
10
|
|
|
11
11
|
{{{ if group.isOwner }}}
|
|
12
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-pending" class="btn-ghost fw-semibold">
|
|
12
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-pending" class="btn-ghost ff-secondary fw-semibold">
|
|
13
13
|
<div class="flex-grow-1">[[groups:details.pending]]</div>
|
|
14
14
|
<span class="flex-shrink-0 text-xs" title="{group.pending.length}">{humanReadableNumber(group.group.pending.length)}</span>
|
|
15
15
|
</button>
|
|
16
16
|
|
|
17
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-invited" class="btn-ghost fw-semibold">
|
|
17
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-invited" class="btn-ghost ff-secondary fw-semibold">
|
|
18
18
|
<div class="flex-grow-1">[[groups:details.invited]]</div>
|
|
19
19
|
<span class="flex-shrink-0 text-xs" title="{group.invited.length}">{humanReadableNumber(group.group.invited.length)}</span>
|
|
20
20
|
</button>
|
|
21
21
|
|
|
22
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-admin" class="btn-ghost fw-semibold">
|
|
22
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-admin" class="btn-ghost ff-secondary fw-semibold">
|
|
23
23
|
<div class="flex-grow-1">[[global:header.admin]]</div>
|
|
24
24
|
</button>
|
|
25
25
|
{{{ end }}}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="d-flex flex-row p-2 text-bg-light border rounded w-100 align-items-center">
|
|
4
4
|
<ul class="d-flex list-unstyled me-auto mb-0 gap-2 align-items-center flex-wrap">
|
|
5
5
|
{{{ if loggedIn }}}
|
|
6
|
-
<button component="topic/mark-unread" class="btn-ghost-sm d-flex gap-2 align-items-center">
|
|
6
|
+
<button component="topic/mark-unread" class="btn-ghost-sm ff-secondary d-flex gap-2 align-items-center">
|
|
7
7
|
<i class="fa fa-fw fa-inbox text-primary"></i>
|
|
8
8
|
<span class="d-none d-md-inline fw-semibold">[[topic:mark-unread]]</span>
|
|
9
9
|
</button>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
{{{ each posts }}}
|
|
15
15
|
<li data-tid="{posts.topic.tid}" data-pid="{posts.pid}" class="d-flex flex-column gap-1">
|
|
16
16
|
<a href="{config.relative_path}/post/{posts.pid}"
|
|
17
|
-
class="btn-ghost-sm rounded-1 text-reset d-block text-truncate px-2 py-1">
|
|
17
|
+
class="btn-ghost-sm ff-secondary rounded-1 text-reset d-block text-truncate px-2 py-1">
|
|
18
18
|
<span class="quick-search-title fw-semibold text-sm">{posts.topic.title}</span>
|
|
19
19
|
<br/>
|
|
20
20
|
<p class="snippet text-xs text-break text-wrap mb-0">
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
<ul class="dropdown-menu p-1 text-sm" style="width: 300px;">
|
|
177
177
|
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
178
178
|
<button id="save-preferences" class="btn btn-primary">[[search:save-preferences]]</button>
|
|
179
|
-
<button id="clear-preferences" class="btn-
|
|
179
|
+
<button id="clear-preferences" class="btn-ghost border">[[search:clear-preferences]]</button>
|
|
180
180
|
</li>
|
|
181
181
|
</ul>
|
|
182
182
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<button type="button" class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
|
|
1
|
+
<button type="button" class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
|
|
2
2
|
{{{ if selectedTag }}}
|
|
3
3
|
<span class="d-inline-flex align-items-center gap-1">
|
|
4
4
|
<i class="fa fa-fw fa-tags text-primary"></i>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{{{ if config.loggedIn }}}
|
|
2
2
|
<div class="btn-group bottom-sheet" component="tag/watch">
|
|
3
|
-
<button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
3
|
+
<button class="btn-ghost-sm ff-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
4
4
|
<span component="tag/following/menu" class="d-flex gap-2 align-items-center{{{ if !isFollowing }}} hidden{{{ end }}}">
|
|
5
5
|
<i class="flex-shrink-0 fa fa-fw fa-bell-o text-primary"></i>
|
|
6
6
|
<span class="d-none d-md-inline fw-semibold">[[tags:watching]]</span>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{{{each tags}}}
|
|
2
|
-
<a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./valueEscaped}" class="btn-ghost flex-column gap-0 align-items-start justify-content-start text-truncate p-2 ff-base">
|
|
2
|
+
<a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./valueEscaped}" class="btn-ghost ff-secondary flex-column gap-0 align-items-start justify-content-start text-truncate p-2 ff-base">
|
|
3
3
|
<div class="fw-semibold text-nowrap tag-item w-100 text-truncate">{./valueEscaped}</div>
|
|
4
4
|
<div class="text-xs text-muted text-nowrap tag-topic-count">[[global:x-topics, {formattedNumber(./score)}]]</div>
|
|
5
5
|
</a>
|