nodebb-theme-harmony 1.1.108 → 1.2.1

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.
Files changed (57) hide show
  1. package/package.json +1 -1
  2. package/scss/chats.scss +2 -126
  3. package/scss/common.scss +3 -60
  4. package/scss/overrides.scss +0 -14
  5. package/templates/account/categories.tpl +1 -1
  6. package/templates/account/posts.tpl +6 -6
  7. package/templates/account/topics.tpl +3 -3
  8. package/templates/flags/detail.tpl +4 -4
  9. package/templates/groups/list.tpl +3 -3
  10. package/templates/notifications.tpl +1 -1
  11. package/templates/partials/account/sidebar-left.tpl +16 -16
  12. package/templates/partials/category/filter-dropdown-content.tpl +1 -1
  13. package/templates/partials/category/selector-dropdown-content.tpl +1 -1
  14. package/templates/partials/category/sort.tpl +1 -1
  15. package/templates/partials/category/subcategory.tpl +1 -1
  16. package/templates/partials/category/tools.tpl +1 -1
  17. package/templates/partials/category/watch.tpl +1 -1
  18. package/templates/partials/flags/filters.tpl +8 -8
  19. package/templates/partials/groups/filter-dropdown-content.tpl +2 -2
  20. package/templates/partials/groups/sidebar-left.tpl +5 -5
  21. package/templates/partials/post_bar.tpl +1 -1
  22. package/templates/partials/quick-search-results.tpl +1 -1
  23. package/templates/partials/search-filters.tpl +8 -8
  24. package/templates/partials/tags/filter-dropdown-content.tpl +1 -1
  25. package/templates/partials/tags/watch.tpl +1 -1
  26. package/templates/partials/tags_list.tpl +1 -1
  27. package/templates/partials/topic/navigator.tpl +2 -2
  28. package/templates/partials/topic/post-menu.tpl +1 -1
  29. package/templates/partials/topic/post.tpl +2 -2
  30. package/templates/partials/topic/quickreply.tpl +1 -1
  31. package/templates/partials/topic/sort.tpl +1 -1
  32. package/templates/partials/topic/tools.tpl +1 -1
  33. package/templates/partials/topic/watch.tpl +1 -1
  34. package/templates/partials/topic-filters.tpl +1 -1
  35. package/templates/partials/topic-terms.tpl +1 -1
  36. package/templates/partials/users/filter-dropdown-content.tpl +2 -2
  37. package/templates/partials/users/item.tpl +1 -1
  38. package/templates/partials/users_list_menu.tpl +5 -5
  39. package/templates/post-queue.tpl +4 -4
  40. package/templates/chat.tpl +0 -37
  41. package/templates/chats.tpl +0 -54
  42. package/templates/partials/chats/add-reaction.tpl +0 -1
  43. package/templates/partials/chats/composer.tpl +0 -27
  44. package/templates/partials/chats/dropdown.tpl +0 -10
  45. package/templates/partials/chats/message-window.tpl +0 -43
  46. package/templates/partials/chats/message.tpl +0 -73
  47. package/templates/partials/chats/messages.tpl +0 -7
  48. package/templates/partials/chats/options.tpl +0 -100
  49. package/templates/partials/chats/parent.tpl +0 -13
  50. package/templates/partials/chats/pinned-messages-list.tpl +0 -32
  51. package/templates/partials/chats/pinned-messages.tpl +0 -12
  52. package/templates/partials/chats/reactions.tpl +0 -1
  53. package/templates/partials/chats/recent_room.tpl +0 -55
  54. package/templates/partials/chats/scroll-up-alert.tpl +0 -3
  55. package/templates/partials/chats/system-message.tpl +0 -7
  56. package/templates/partials/chats/user-list.tpl +0 -11
  57. package/templates/partials/chats/user.tpl +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-harmony",
3
- "version": "1.1.108",
3
+ "version": "1.2.1",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.5.0"
6
6
  },
package/scss/chats.scss CHANGED
@@ -1,28 +1,5 @@
1
- // chats need a bit of css
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
- font-family: $font-family-base !important;
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 {
@@ -39,7 +33,6 @@ hr {
39
33
  border: none;
40
34
  font-family: "FontAwesome";
41
35
  content: "\f078";
42
- color: tint-color($primary, 40%);
43
36
  }
44
37
  }
45
38
 
@@ -104,56 +97,6 @@ body:not(.page-user) {
104
97
  }
105
98
  }
106
99
 
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
100
  .flex-basis-md-200 {
158
101
  @include media-breakpoint-up(md) {
159
102
  flex-basis: 200px!important;
@@ -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>
@@ -2,7 +2,7 @@
2
2
  <div class="btn-group bottom-sheet">
3
3
  <a class="filter-btn btn btn-light btn-sm border {{{ if filters.quick }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
4
4
  <span class="filter-label">{{{ if filters.quick }}}[[flags:filter-quick-{./filters.quick}]]{{{ else }}}[[flags:quick-filters]]{{{ end }}}</span>
5
- <span class="caret"></span>
5
+ <span class="caret text-primary opacity-75"></span>
6
6
  </a>
7
7
  <ul class="dropdown-menu p-1 text-sm">
8
8
  <li>
@@ -22,7 +22,7 @@
22
22
  {{{ else }}}
23
23
  <span class="visible-md-inline visible-lg-inline">[[unread:all-categories]]</span>
24
24
  {{{ end }}}
25
- <span class="caret"></span>
25
+ <span class="caret text-primary opacity-75"></span>
26
26
  </button>
27
27
  <div component="category-selector-search" class="hidden position-absolute">
28
28
  <input type="text" class="form-control form-control-sm" placeholder="[[search:type-to-search]]" autocomplete="off">
@@ -50,7 +50,7 @@
50
50
  <div class="btn-group bottom-sheet">
51
51
  <a class="filter-btn btn btn-light btn-sm border {{{ if (sort != "newest") }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
52
52
  <span class="filter-label">{{{ if (sort != "newest") }}}[[flags:sort-{./sort}]]{{{ else }}}[[flags:sort]]{{{ end }}}</span>
53
- <span class="caret"></span>
53
+ <span class="caret text-primary opacity-75"></span>
54
54
  </a>
55
55
  <ul class="dropdown-menu p-1 text-sm">
56
56
  <li><h6 class="dropdown-header">[[flags:sort-all]]</h6></li>
@@ -67,7 +67,7 @@
67
67
  <div class="btn-group bottom-sheet">
68
68
  <a class="filter-btn btn btn-light btn-sm border {{{ if filters.state }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
69
69
  <span class="filter-label">{{{ if filters.state }}}[[flags:state-{./filters.state}]]{{{ else }}}[[flags:filter-state]]{{{ end }}}</span>
70
- <span class="caret"></span>
70
+ <span class="caret text-primary opacity-75"></span>
71
71
  </a>
72
72
  <ul class="dropdown-menu p-1 text-sm">
73
73
  <li class="dropdown-item rounded-1" data-name="state" data-value="open">[[flags:state-open]]</li>
@@ -80,7 +80,7 @@
80
80
  <div class="btn-group bottom-sheet">
81
81
  <a class="filter-btn btn btn-light btn-sm border {{{ if filters.type }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
82
82
  <span class="filter-label">{{{ if filters.type }}}[[flags:filter-type-{./filters.type}]]{{{ else }}}[[flags:filter-type]]{{{ end }}}</span>
83
- <span class="caret"></span>
83
+ <span class="caret text-primary opacity-75"></span>
84
84
  </a>
85
85
  <ul class="dropdown-menu p-1 text-sm">
86
86
  <li class="dropdown-item rounded-1" data-name="type" data-value="all">[[flags:filter-type-all]]</li>
@@ -92,7 +92,7 @@
92
92
  <div component="flags/filter/assignee" class="dropdown bottom-sheet" data-filter-name="assignee">
93
93
  <a component="user/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.assignee }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
94
94
  <span class="filter-label">[[flags:filter-assignee]]</span>
95
- <span class="caret"></span>
95
+ <span class="caret text-primary opacity-75"></span>
96
96
  </a>
97
97
 
98
98
  <ul class="dropdown-menu p-1 text-sm" style="min-width: 350px;">
@@ -119,7 +119,7 @@
119
119
  <div component="flags/filter/reporterId" class="dropdown bottom-sheet" data-filter-name="reporterId">
120
120
  <a component="user/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.reporterId }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
121
121
  <span class="filter-label">[[flags:filter-reporterId]]</span>
122
- <span class="caret"></span>
122
+ <span class="caret text-primary opacity-75"></span>
123
123
  </a>
124
124
 
125
125
  <ul class="dropdown-menu p-1 text-sm" style="min-width: 350px;">
@@ -146,7 +146,7 @@
146
146
  <div component="flags/filter/targetUid" class="dropdown bottom-sheet" data-filter-name="targetUid">
147
147
  <a component="user/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.targetUid }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
148
148
  <span class="filter-label">[[flags:filter-targetUid]]</span>
149
- <span class="caret"></span>
149
+ <span class="caret text-primary opacity-75"></span>
150
150
  </a>
151
151
 
152
152
  <ul class="dropdown-menu p-1 text-sm" style="min-width: 350px;">
@@ -1,10 +1,10 @@
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 }}}
6
6
  <span class="fw-semibold">[[groups:all-groups]]</span>
7
- {{{ end }}} <span class="caret"></span>
7
+ {{{ end }}} <span class="caret text-primary opacity-75"></span>
8
8
  </button>
9
9
  <ul class="dropdown-menu p-1 text-sm" role="menu">
10
10
  <li role="presentation" class="user {{{ if !selectedGroup}}}selected{{{end}}}">