nodebb-theme-harmony 1.2.28 → 1.2.30

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-harmony",
3
- "version": "1.2.28",
3
+ "version": "1.2.30",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.5.0"
6
6
  },
@@ -7,28 +7,29 @@
7
7
  <div class="row">
8
8
  <div class="col-xl-6 col-12">
9
9
  <form role="form" component="profile/edit/form">
10
- <div class="mb-2">
10
+ <div class="mb-3">
11
11
  <label class="form-label fw-bold" for="fullname">[[user:fullname]]</label>
12
12
  <input class="form-control" type="text" id="fullname" name="fullname" placeholder="[[user:fullname]]" value="{fullname}">
13
13
  </div>
14
+
14
15
  {{{ if allowWebsite }}}
15
- <div class="mb-2">
16
+ <div class="mb-3">
16
17
  <label class="form-label fw-bold" for="website">[[user:website]]</label>
17
18
  <input class="form-control" type="text" id="website" name="website" placeholder="http://..." value="{website}">
18
19
  </div>
19
20
  {{{ end }}}
20
21
 
21
- <div class="mb-2">
22
+ <div class="mb-3">
22
23
  <label class="form-label fw-bold" for="location">[[user:location]]</label>
23
24
  <input class="form-control" type="text" id="location" name="location" placeholder="[[user:location]]" value="{location}">
24
25
  </div>
25
26
 
26
- <div class="mb-2">
27
+ <div class="mb-3">
27
28
  <label class="form-label fw-bold" for="birthday">[[user:birthday]]</label>
28
29
  <input class="form-control" type="date" id="birthday" name="birthday" value="{birthday}" placeholder="mm/dd/yyyy">
29
30
  </div>
30
31
 
31
- <div class="mb-2">
32
+ <div class="mb-3">
32
33
  <label class="form-label fw-bold" for="groupTitle">[[user:grouptitle]]</label>
33
34
 
34
35
  <div class="d-flex flex-column gap-2" component="group/badge/list">
@@ -49,14 +50,14 @@
49
50
  </div>
50
51
 
51
52
  {{{ if allowAboutMe }}}
52
- <div class="mb-2">
53
+ <div class="mb-3">
53
54
  <label class="form-label fw-bold" for="aboutme">[[user:aboutme]]</label> <small><label id="aboutMeCharCountLeft"></label></small>
54
55
  <textarea class="form-control" id="aboutme" name="aboutme" rows="5">{aboutme}</textarea>
55
56
  </div>
56
57
  {{{ end }}}
57
58
 
58
59
  {{{ if (allowSignature && !disableSignatures) }}}
59
- <div class="mb-2">
60
+ <div class="mb-3">
60
61
  <label class="form-label fw-bold" for="signature">[[user:signature]]</label> <small><label id="signatureCharCountLeft"></label></small>
61
62
  <textarea class="form-control" id="signature" name="signature" rows="5">{signature}</textarea>
62
63
  </div>
@@ -167,8 +167,8 @@
167
167
  [[user:info.moderation-note]]
168
168
  </h5>
169
169
  <div class="card-body">
170
- <textarea component="account/moderation-note" class="form-control"></textarea>
171
- <br/>
170
+ <textarea component="account/moderation-note" class="form-control mb-3" aria-label="[[user:info.moderation-note]]"></textarea>
171
+
172
172
  <button class="btn btn-sm float-end btn-success" component="account/save-moderation-note">[[user:info.moderation-note.add]]</button>
173
173
  <br/>
174
174
  <div component="account/moderation-note/list">
@@ -7,133 +7,134 @@
7
7
  <div class="row">
8
8
  <div class="col-12 col-md-6">
9
9
  {{{ if !disableCustomUserSkins }}}
10
- <h6 class="fw-bold">[[user:select-skin]]</h6>
11
- <div class="">
12
- <select class="form-select form-select-sm" id="bootswatchSkin" data-property="bootswatchSkin">
13
- {{{each bootswatchSkinOptions}}}
14
- <option value="{bootswatchSkinOptions.value}" {{{ if bootswatchSkinOptions.selected }}}selected{{{ end }}}>{bootswatchSkinOptions.name}</option>
15
- {{{end}}}
16
- </select>
17
- </div>
10
+ <label for="bootswatchSkin" class="form-label fw-bold">[[user:select-skin]]</label>
11
+ <select class="form-select form-select-sm" id="bootswatchSkin" data-property="bootswatchSkin">
12
+ {{{each bootswatchSkinOptions}}}
13
+ <option value="{bootswatchSkinOptions.value}" {{{ if bootswatchSkinOptions.selected }}}selected{{{ end }}}>{bootswatchSkinOptions.name}</option>
14
+ {{{end}}}
15
+ </select>
16
+
18
17
  <hr/>
19
18
  {{{ end }}}
20
19
 
21
20
  {{{ if allowUserHomePage }}}
22
- <h6 class="fw-bold">[[user:select-homepage]]</h6>
23
- <div class="">
24
- <div class="mb-2">
25
- <select class="form-select form-select-sm" id="homePageRoute" data-property="homePageRoute">
26
- <option value="none">None</option>
27
- {{{ each homePageRoutes }}}
28
- <option value="{./route}" {{{ if ./selected }}}selected="1"{{{ end }}}>{./name}</option>
29
- {{{ end }}}
30
- </select>
31
- <p class="form-text text-xs">[[user:homepage-description]]</p>
32
- </div>
33
- <div id="homePageCustom" class="mb-2" style="display: none;">
34
- <label class="form-label" for="homePageCustom">[[user:custom-route]]</label>
35
- <input type="text" class="form-control form-control-sm" data-property="homePageCustom" id="homePageCustom" value="{settings.homePageRoute}"/>
36
- <p class="form-text text-xs">[[user:custom-route-help]]</p>
37
- </div>
21
+ <label for="homePageRoute" class="form-label fw-bold">[[user:select-homepage]]</label>
22
+
23
+ <div class="mb-2">
24
+ <select class="form-select form-select-sm" id="homePageRoute" data-property="homePageRoute">
25
+ <option value="none">None</option>
26
+ {{{ each homePageRoutes }}}
27
+ <option value="{./route}" {{{ if ./selected }}}selected="1"{{{ end }}}>{./name}</option>
28
+ {{{ end }}}
29
+ </select>
30
+ <p class="form-text text-xs">[[user:homepage-description]]</p>
38
31
  </div>
32
+ <div id="homePageCustomContainer" class="mb-2" style="display: none;">
33
+ <label class="form-label fw-bold" for="homePageCustom">[[user:custom-route]]</label>
34
+ <input type="text" class="form-control form-control-sm" data-property="homePageCustom" id="homePageCustom" value="{settings.homePageRoute}"/>
35
+ <p class="form-text text-xs">[[user:custom-route-help]]</p>
36
+ </div>
37
+
39
38
  <hr/>
40
39
  {{{ end }}}
41
40
 
42
41
  <h6 class="fw-bold">[[global:privacy]]</h6>
43
- <div class="">
44
- {{{ if !hideEmail }}}
45
- <div class="form-check">
46
- <input class="form-check-input" type="checkbox" data-property="showemail" {{{ if settings.showemail }}}checked {{{ end }}}/>
47
- <label class="form-check-label text-sm">[[user:show-email]]</label>
48
- </div>
49
- {{{ end }}}
50
42
 
51
- {{{ if !hideFullname }}}
52
- <div class="form-check">
53
- <input class="form-check-input" type="checkbox" data-property="showfullname" {{{ if settings.showfullname }}}checked{{{ end }}}/>
54
- <label class="form-check-label text-sm">[[user:show-fullname]]</label>
55
- </div>
56
- {{{ end }}}
57
- {{{ if !config.disableChat }}}
58
- <div class="form-check">
59
- <input class="form-check-input" type="checkbox" data-property="restrictChat" {{{ if settings.restrictChat }}}checked{{{ end }}}/>
60
- <label class="form-check-label text-sm">[[user:restrict-chats]]</label>
61
- </div>
62
- {{{ end }}}
43
+ {{{ if !hideEmail }}}
44
+ <div class="form-check form-switch">
45
+ <input class="form-check-input" type="checkbox" role="switch" id="showemail" data-property="showemail" {{{ if settings.showemail }}}checked {{{ end }}}/>
46
+ <label class="form-check-label text-sm" for="showemail">[[user:show-email]]</label>
63
47
  </div>
48
+ {{{ end }}}
49
+
50
+ {{{ if !hideFullname }}}
51
+ <div class="form-check form-switch">
52
+ <input class="form-check-input" type="checkbox" role="switch" id="showfullname" data-property="showfullname" {{{ if settings.showfullname }}}checked{{{ end }}}/>
53
+ <label class="form-check-label text-sm" for="showfullname">[[user:show-fullname]]</label>
54
+ </div>
55
+ {{{ end }}}
56
+
57
+ {{{ if !config.disableChat }}}
58
+ <div class="form-check form-switch">
59
+ <input class="form-check-input" type="checkbox" role="switch" id="restrictChat" data-property="restrictChat" {{{ if settings.restrictChat }}}checked{{{ end }}}/>
60
+ <label class="form-check-label text-sm" for="restrictChat">[[user:restrict-chats]]</label>
61
+ </div>
62
+ {{{ end }}}
63
+
64
64
  <hr/>
65
65
 
66
66
  <h6 class="fw-bold">[[user:browsing]]</h6>
67
- <div class="">
68
- <div class="form-check">
69
- <input class="form-check-input" type="checkbox" data-property="openOutgoingLinksInNewTab" {{{ if settings.openOutgoingLinksInNewTab }}}checked{{{ end }}}/>
70
- <label class="form-check-label">[[user:open-links-in-new-tab]]</label>
71
- </div>
72
- {{{ if inTopicSearchAvailable }}}
73
- <div class="form-check">
74
- <input class="form-check-input" type="checkbox" data-property="topicSearchEnabled" {{{ if settings.topicSearchEnabled }}}checked{{{ end }}}/>
75
- <label class="form-check-label">[[user:enable-topic-searching]]</label>
76
- </div>
77
- <p class="form-text text-xs">[[user:topic-search-help]]</p>
78
- {{{ end }}}
79
67
 
80
- <div class="form-check">
81
- <input class="form-check-input" type="checkbox" data-property="updateUrlWithPostIndex" {{{ if settings.updateUrlWithPostIndex }}}checked{{{ end }}}/>
82
- <label class="form-check-label">[[user:update-url-with-post-index]]</label>
83
- </div>
84
- <div class="form-check">
85
- <input class="form-check-input" type="checkbox" data-property="scrollToMyPost" {{{ if settings.scrollToMyPost }}}checked{{{ end }}}/>
86
- <label class="form-check-label">[[user:scroll-to-my-post]]</label>
87
- </div>
68
+ <div class="form-check form-switch">
69
+ <input class="form-check-input" type="checkbox" role="switch" id="openOutgoingLinksInNewTab" data-property="openOutgoingLinksInNewTab" {{{ if settings.openOutgoingLinksInNewTab }}}checked{{{ end }}}/>
70
+ <label class="form-check-label text-sm" for="openOutgoingLinksInNewTab">[[user:open-links-in-new-tab]]</label>
71
+ </div>
72
+
73
+ {{{ if inTopicSearchAvailable }}}
74
+ <div class="form-check form-switch">
75
+ <input class="form-check-input" type="checkbox" role="switch" id="topicSearchEnabled" data-property="topicSearchEnabled" {{{ if settings.topicSearchEnabled }}}checked{{{ end }}}/>
76
+ <label class="form-check-label text-sm" for="topicSearchEnabled">[[user:enable-topic-searching]]</label>
77
+ </div>
78
+ <p class="form-text text-xs">[[user:topic-search-help]]</p>
79
+ {{{ end }}}
80
+
81
+ <div class="form-check form-switch">
82
+ <input class="form-check-input" type="checkbox" role="switch" id="updateUrlWithPostIndex" data-property="updateUrlWithPostIndex" {{{ if settings.updateUrlWithPostIndex }}}checked{{{ end }}}/>
83
+ <label class="form-check-label text-sm" for="updateUrlWithPostIndex">[[user:update-url-with-post-index]]</label>
84
+ </div>
85
+
86
+ <div class="form-check form-switch">
87
+ <input class="form-check-input" type="checkbox" role="switch" id="scrollToMyPost" data-property="scrollToMyPost" {{{ if settings.scrollToMyPost }}}checked{{{ end }}}/>
88
+ <label class="form-check-label text-sm" for="scrollToMyPost">[[user:scroll-to-my-post]]</label>
88
89
  </div>
90
+
89
91
  <hr/>
90
92
 
91
93
  <h6 class="fw-bold">[[global:pagination]]</h6>
94
+
95
+ <div class="mb-2 form-check form-switch">
96
+ <input type="checkbox" role="switch" id="usePagination" class="form-check-input" data-property="usePagination" {{{ if settings.usePagination }}}checked{{{ end }}}>
97
+ <label class="form-check-label text-sm" for="usePagination">[[user:paginate-description]]</label>
98
+ </div>
99
+ <div class="mb-2">
100
+ <label class="form-label text-sm" for="topicsPerPage">[[user:topics-per-page]] ([[user:max-items-per-page, {maxTopicsPerPage}]])</label>
101
+ <input type="text" class="form-control form-control-sm" id="topicsPerPage" data-property="topicsPerPage" value="{settings.topicsPerPage}">
102
+ </div>
92
103
  <div class="">
93
- <div class="mb-2 form-check">
94
- <input type="checkbox" class="form-check-input" data-property="usePagination" {{{ if settings.usePagination }}}checked{{{ end }}}>
95
- <label class="form-check-label">[[user:paginate-description]]</label>
96
- </div>
97
- <div class="mb-2">
98
- <label class="form-label">[[user:topics-per-page]] ([[user:max-items-per-page, {maxTopicsPerPage}]])</label>
99
- <input type="text" class="form-control form-control-sm" data-property="topicsPerPage" value="{settings.topicsPerPage}">
100
- </div>
101
- <div class="">
102
- <label class="form-label">[[user:posts-per-page]] ([[user:max-items-per-page, {maxPostsPerPage}]])</label>
103
- <input type="text" class="form-control form-control-sm" data-property="postsPerPage" value="{settings.postsPerPage}">
104
- </div>
104
+ <label class="form-label text-sm" for="postsPerPage">[[user:posts-per-page]] ([[user:max-items-per-page, {maxPostsPerPage}]])</label>
105
+ <input type="text" class="form-control form-control-sm" id="postsPerPage" data-property="postsPerPage" value="{settings.postsPerPage}">
105
106
  </div>
106
107
 
107
108
  <hr/>
108
109
 
109
110
  <h6 class="fw-bold">[[global:sort]]</h6>
111
+
112
+ <div class="mb-2">
113
+ <label class="form-label text-sm" for="categoryTopicSort">[[user:category-topic-sort]]</label>
114
+ <select class="form-select form-select-sm" id="categoryTopicSort" data-property="categoryTopicSort">
115
+ <option value="newest_to_oldest" {{{ if (settings.categoryTopicSort == "newest_to_oldest") }}}selected{{{ end }}}>[[topic:newest-to-oldest]]</option>
116
+ <option value="oldest_to_newest" {{{ if (settings.categoryTopicSort == "oldest_to_newest") }}}selected{{{ end }}}>[[topic:oldest-to-newest]]</option>
117
+ <option value="most_posts" {{{ if (settings.categoryTopicSort == "most_posts") }}}selected{{{ end }}}>[[topic:most-posts]]</option>
118
+ <option value="most_votes" {{{ if (settings.categoryTopicSort == "most_votes") }}}selected{{{ end }}}>[[topic:most-votes]]</option>
119
+ <option value="most_views" {{{ if (settings.categoryTopicSort == "most_views") }}}selected{{{ end }}}>[[topic:most-views]]</option>
120
+ </select>
121
+ </div>
110
122
  <div class="">
111
- <div class="mb-2">
112
- <label class="form-label">[[user:category-topic-sort]]</label>
113
- <select class="form-select form-select-sm" data-property="categoryTopicSort">
114
- <option value="newest_to_oldest" {{{ if (settings.categoryTopicSort == "newest_to_oldest") }}}selected{{{ end }}}>[[topic:newest-to-oldest]]</option>
115
- <option value="oldest_to_newest" {{{ if (settings.categoryTopicSort == "oldest_to_newest") }}}selected{{{ end }}}>[[topic:oldest-to-newest]]</option>
116
- <option value="most_posts" {{{ if (settings.categoryTopicSort == "most_posts") }}}selected{{{ end }}}>[[topic:most-posts]]</option>
117
- <option value="most_votes" {{{ if (settings.categoryTopicSort == "most_votes") }}}selected{{{ end }}}>[[topic:most-votes]]</option>
118
- <option value="most_views" {{{ if (settings.categoryTopicSort == "most_views") }}}selected{{{ end }}}>[[topic:most-views]]</option>
119
- </select>
120
- </div>
121
- <div class="">
122
- <label class="form-label">[[user:topic-post-sort]]</label>
123
- <select class="form-select form-select-sm" data-property="topicPostSort">
124
- <option value="oldest_to_newest" {{{ if (settings.topicPostSort == "oldest_to_newest") }}}selected{{{ end }}}>[[topic:oldest-to-newest]]</option>
125
- <option value="newest_to_oldest" {{{ if (settings.topicPostSort == "newest_to_oldest") }}}selected{{{ end }}}>[[topic:newest-to-oldest]]</option>
126
- <option value="most_votes" {{{ if (settings.topicPostSort == "most_votes") }}}selected{{{ end }}}>[[topic:most-votes]]</option>
127
- </select>
128
- </div>
123
+ <label class="form-label text-sm" for="topicPostSort">[[user:topic-post-sort]]</label>
124
+ <select class="form-select form-select-sm" id="topicPostSort" data-property="topicPostSort">
125
+ <option value="oldest_to_newest" {{{ if (settings.topicPostSort == "oldest_to_newest") }}}selected{{{ end }}}>[[topic:oldest-to-newest]]</option>
126
+ <option value="newest_to_oldest" {{{ if (settings.topicPostSort == "newest_to_oldest") }}}selected{{{ end }}}>[[topic:newest-to-oldest]]</option>
127
+ <option value="most_votes" {{{ if (settings.topicPostSort == "most_votes") }}}selected{{{ end }}}>[[topic:most-votes]]</option>
128
+ </select>
129
129
  </div>
130
130
 
131
+
131
132
  {{{ if !disableEmailSubscriptions }}}
132
133
  <hr/>
133
134
  <h6 class="fw-bold">[[global:email]]</h6>
134
135
  <div class="">
135
136
  <div class="mb-2">
136
- <label class="form-label" for="dailyDigestFreq">[[user:digest-label]]</label>
137
+ <label class="form-label text-sm" for="dailyDigestFreq">[[user:digest-label]]</label>
137
138
  <select class="form-select form-select-sm" id="dailyDigestFreq" data-property="dailyDigestFreq" autocomplete="off">
138
139
  {{{each dailyDigestFreqOptions}}}
139
140
  <option value="{./value}" {{{ if ./selected }}}selected="1"{{{ end }}}>{./name}</option>
@@ -150,46 +151,44 @@
150
151
  <div class="">
151
152
  {./content}
152
153
  </div>
153
-
154
154
  {{{end}}}
155
155
  <hr class="d-block d-md-none"/>
156
156
  </div>
157
157
 
158
158
  <div class="col-12 col-md-6">
159
- <h6 class="fw-bold">[[global:language]]</h6>
160
- <div class="">
161
- <select data-property="userLang" class="form-select form-select-sm mb-2">
162
- {{{each languages}}}
163
- <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
164
- {{{end}}}
165
- </select>
166
- </div>
159
+ <label class="form-label fw-bold" for="userLang">[[global:language]]</label>
160
+ <select id="userLang" data-property="userLang" class="form-select form-select-sm mb-2">
161
+ {{{each languages}}}
162
+ <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
163
+ {{{end}}}
164
+ </select>
165
+
167
166
  <hr/>
167
+
168
168
  {{{ if (isAdmin && isSelf) }}}
169
- <h6 class="fw-bold">[[user:acp-language]]</h6>
170
- <div class="">
171
- <select data-property="acpLang" class="form-select form-select-sm">
172
- {{{each acpLanguages}}}
173
- <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
174
- {{{end}}}
175
- </select>
176
- </div>
169
+ <label class="form-label fw-bold" for="acpLang">[[user:acp-language]]</label>
170
+ <select id="acpLang" data-property="acpLang" class="form-select form-select-sm">
171
+ {{{each acpLanguages}}}
172
+ <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
173
+ {{{end}}}
174
+ </select>
175
+
177
176
  <hr/>
178
177
  {{{ end }}}
179
178
 
180
179
  <h6 class="fw-bold">[[topic:watch]]</h6>
181
180
  <div class="">
182
- <div class="form-check">
183
- <input class="form-check-input" type="checkbox" data-property="followTopicsOnCreate" {{{ if settings.followTopicsOnCreate }}}checked{{{ end }}}/>
184
- <label class="form-check-label">[[user:follow-topics-you-create]]</label>
181
+ <div class="form-check form-switch">
182
+ <input class="form-check-input" type="checkbox" role="switch" id="followTopicsOnCreate" data-property="followTopicsOnCreate" {{{ if settings.followTopicsOnCreate }}}checked{{{ end }}}/>
183
+ <label class="form-check-label text-sm" for="followTopicsOnCreate">[[user:follow-topics-you-create]]</label>
185
184
  </div>
186
- <div class="form-check">
187
- <input class="form-check-input" type="checkbox" data-property="followTopicsOnReply" {{{ if settings.followTopicsOnReply }}}checked{{{ end }}}/>
188
- <label class="form-check-label">[[user:follow-topics-you-reply-to]]</label>
185
+ <div class="form-check form-switch">
186
+ <input class="form-check-input" type="checkbox" role="switch" id="followTopicsOnReply" data-property="followTopicsOnReply" {{{ if settings.followTopicsOnReply }}}checked{{{ end }}}/>
187
+ <label class="form-check-label text-sm" for="followTopicsOnReply">[[user:follow-topics-you-reply-to]]</label>
189
188
  </div>
190
189
  <div class="mb-2">
191
- <label class="form-label">[[user:default-category-watch-state]]</label>
192
- <select class="form-select form-select-sm" data-property="categoryWatchState">
190
+ <label class="form-label text-sm" for="categoryWatchState">[[user:default-category-watch-state]]</label>
191
+ <select class="form-select form-select-sm" id="categoryWatchState" data-property="categoryWatchState">
193
192
  <option value="tracking" {{{ if categoryWatchState.tracking }}}selected{{{ end }}}>[[category:tracking]]</option>
194
193
  <option value="notwatching" {{{ if categoryWatchState.notwatching }}}selected{{{ end }}}>[[category:not-watching]]</option>
195
194
  <option value="ignoring" {{{ if categoryWatchState.ignoring }}}selected{{{ end }}}>[[category:ignoring]]</option>
@@ -199,14 +198,14 @@
199
198
  <hr/>
200
199
 
201
200
  <h6 class="fw-bold">[[user:notifications]]</h6>
202
- <div class="">
203
- {{{each notificationSettings}}}
204
- <div class="row mb-3">
201
+ <div>
202
+ {{{ each notificationSettings }}}
203
+ <div class="row mb-3 align-items-center">
205
204
  <div class="col-7">
206
- <label class="text-sm">{./label}</label>
205
+ <label class="text-sm" for="{./name}">{./label}</label>
207
206
  </div>
208
- <div class="mb-2 col-5">
209
- <select class="form-select form-select-sm" data-property="{./name}">
207
+ <div class="col-5">
208
+ <select class="form-select form-select-sm" id="{./name}" data-property="{./name}">
210
209
  <option value="none" {{{ if ./none }}}selected{{{ end }}}>[[notifications:none]]</option>
211
210
  <option value="notification" {{{ if ./notification }}}selected{{{ end }}}>[[notifications:notification-only]]</option>
212
211
  <option value="email" {{{ if ./email }}}selected{{{ end }}}>[[notifications:email-only]]</option>
@@ -216,11 +215,11 @@
216
215
  </div>
217
216
  {{{end}}}
218
217
 
219
- <div class="row">
218
+ <div class="row align-items-center">
220
219
  <div class="col-7">
221
220
  <label class="text-sm" for="upvote-notif-freq">[[user:upvote-notif-freq]]</label>
222
221
  </div>
223
- <div class="mb-2 col-5">
222
+ <div class="col-5">
224
223
  <select class="form-select form-select-sm" id="upvote-notif-freq" name="upvote-notif-freq" data-property="upvoteNotifFreq">
225
224
  {{{ each upvoteNotifFreq }}}
226
225
  <option value="{./name}" {{{ if ./selected }}}selected{{{ end }}}>
@@ -7,23 +7,23 @@
7
7
  </div>
8
8
 
9
9
  <form id="theme-settings" role="form">
10
- <div class="form-check mb-3">
11
- <input class="form-check-input" type="checkbox" id="enableQuickReply" name="enableQuickReply" {{{ if theme.enableQuickReply }}}checked{{{ end }}}>
10
+ <div class="form-check form-switch mb-3">
11
+ <input class="form-check-input" type="checkbox" role="switch" id="enableQuickReply" name="enableQuickReply" {{{ if theme.enableQuickReply }}}checked{{{ end }}}>
12
12
  <label class="form-check-label" for="enableQuickReply">[[themes/harmony:settings.enableQuickReply]]</label>
13
13
  </div>
14
14
 
15
- <div class="form-check mb-3">
16
- <input class="form-check-input" type="checkbox" id="centerHeaderElements" name="centerHeaderElements" {{{ if theme.centerHeaderElements }}}checked{{{ end }}}>
15
+ <div class="form-check form-switch mb-3">
16
+ <input class="form-check-input" type="checkbox" role="switch" id="centerHeaderElements" name="centerHeaderElements" {{{ if theme.centerHeaderElements }}}checked{{{ end }}}>
17
17
  <label class="form-check-label" for="centerHeaderElements">[[themes/harmony:settings.centerHeaderElements]]</label>
18
18
  </div>
19
19
 
20
- <div class="form-check mb-3">
21
- <input class="form-check-input" type="checkbox" id="mobileTopicTeasers" name="mobileTopicTeasers" {{{ if theme.mobileTopicTeasers }}}checked{{{ end }}}>
20
+ <div class="form-check form-switch mb-3">
21
+ <input class="form-check-input" type="checkbox" role="switch" id="mobileTopicTeasers" name="mobileTopicTeasers" {{{ if theme.mobileTopicTeasers }}}checked{{{ end }}}>
22
22
  <label class="form-check-label" for="mobileTopicTeasers">[[themes/harmony:settings.mobileTopicTeasers]]</label>
23
23
  </div>
24
24
 
25
- <div class="form-check mb-3">
26
- <input class="form-check-input" type="checkbox" id="stickyToolbar" name="stickyToolbar" {{{ if theme.stickyToolbar }}}checked{{{ end }}}>
25
+ <div class="form-check form-switch mb-3">
26
+ <input class="form-check-input" type="checkbox" role="switch" id="stickyToolbar" name="stickyToolbar" {{{ if theme.stickyToolbar }}}checked{{{ end }}}>
27
27
  <label class="form-check-label" for="stickyToolbar">
28
28
  [[themes/harmony:settings.stickyToolbar]]
29
29
  <p class="form-text mb-0">
@@ -32,8 +32,8 @@
32
32
  </label>
33
33
  </div>
34
34
 
35
- <div class="form-check mb-3">
36
- <input class="form-check-input" type="checkbox" id="autohideBottombar" name="autohideBottombar" {{{ if theme.autohideBottombar }}}checked{{{ end }}}>
35
+ <div class="form-check form-switch mb-3">
36
+ <input class="form-check-input" type="checkbox" role="switch" id="autohideBottombar" name="autohideBottombar" {{{ if theme.autohideBottombar }}}checked{{{ end }}}>
37
37
  <label class="form-check-label" for="autohideBottombar">
38
38
  [[themes/harmony:settings.autohideBottombar]]
39
39
  <p class="form-text mb-0">
@@ -42,13 +42,13 @@
42
42
  </label>
43
43
  </div>
44
44
 
45
- <div class="form-check mb-3">
46
- <input class="form-check-input" type="checkbox" id="openSidebars" name="openSidebars" {{{ if theme.openSidebars }}}checked{{{ end }}}>
45
+ <div class="form-check form-switch mb-3">
46
+ <input class="form-check-input" type="checkbox" role="switch" id="openSidebars" name="openSidebars" {{{ if theme.openSidebars }}}checked{{{ end }}}>
47
47
  <label class="form-check-label" for="openSidebars">[[themes/harmony:settings.openSidebars]]</label>
48
48
  </div>
49
49
 
50
- <div class="form-check mb-3">
51
- <input class="form-check-input" type="checkbox" id="chatModals" name="chatModals" {{{ if theme.chatModals }}}checked{{{ end }}}>
50
+ <div class="form-check form-switch mb-3">
51
+ <input class="form-check-input" type="checkbox" role="switch" id="chatModals" name="chatModals" {{{ if theme.chatModals }}}checked{{{ end }}}>
52
52
  <label class="form-check-label" for="chatModals">
53
53
  [[themes/harmony:settings.chatModals]]
54
54
  </label>
@@ -25,7 +25,7 @@
25
25
  </td>
26
26
  <td>
27
27
  <div class="btn-group ">
28
- <button class="btn btn-danger btn-sm" data-action="delete"><i class="fa fa-trash"></i></button>
28
+ <button class="btn btn-danger btn-sm" data-action="delete" aria-label="[[aria:delete-upload-button]]"><i class="fa fa-trash"></i></button>
29
29
  </div>
30
30
  </td>
31
31
  </tr>
@@ -31,7 +31,7 @@
31
31
  <div class="">
32
32
  <div class="input-group">
33
33
  <input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" name="query" id="search-text">
34
- <button id="search-button" class="btn btn-primary btn-sm">
34
+ <button id="search-button" class="btn btn-primary btn-sm" aria-label="[[global:search]]">
35
35
  <i class="fa fa-search"></i>
36
36
  </button>
37
37
  </div>
@@ -1,7 +1,7 @@
1
1
  {{{ each groups }}}
2
2
  <div class="col-xl-4 col-lg-6 col-sm-12 mb-3" component="groups/summary" data-slug="{./slug}">
3
3
  <div class="card h-100 group-hover-bg border-0">
4
- <a href="{config.relative_path}/groups/{./slug}" class="card-header border-bottom-0 pointer d-block list-cover" style="{{{ if ./cover:thumb:url }}}background-image: url({./cover:thumb:url});background-size: cover; min-height: 125px; background-position: {./cover:position}{{{ end }}}"></a>
4
+ <a href="{config.relative_path}/groups/{./slug}" class="card-header border-bottom-0 pointer d-block list-cover" style="{{{ if ./cover:thumb:url }}}background-image: url({./cover:thumb:url});background-size: cover; min-height: 125px; background-position: {./cover:position}{{{ end }}}" aria-label="[[aria:group-page-link-for, {./displayName}]]"></a>
5
5
  <a href="{config.relative_path}/groups/{./slug}" class="d-block h-100 text-reset text-decoration-none">
6
6
  <div class="card-body d-flex flex-column gap-1 border border-top-0 rounded-bottom h-100">
7
7
  <div class="d-flex">
@@ -1,7 +1,7 @@
1
1
  <ul component="posts" class="posts-list list-unstyled" data-nextstart="{nextStart}">
2
- {{{each posts}}}
2
+ {{{ each posts }}}
3
3
  <!-- IMPORT partials/posts_list_item.tpl -->
4
- {{{end}}}
4
+ {{{ end }}}
5
5
  </ul>
6
6
  <div component="posts/loading" class="loading-indicator text-center hidden">
7
7
  <i class="fa fa-refresh fa-spin"></i>
@@ -1,8 +1,9 @@
1
- <hr/>
2
- <a class="topic-title fw-semibold fs-5 mb-3 text-reset text-break" href="{config.relative_path}/post/{./pid}">
3
- {{{ if ./isMainPost }}}<i class="fa fa-book text-muted" title="[[topic:topic]]"></i> {{{ end }}}{./topic.title}
4
- </a>
5
1
  <li component="post" class="posts-list-item {{{ if ./deleted }}} deleted{{{ else }}}{{{ if ./topic.deleted }}} deleted{{{ end }}}{{{ end }}}{{{ if ./topic.scheduled }}} scheduled{{{ end }}}" data-pid="{./pid}" data-uid="{./uid}">
2
+ <hr/>
3
+ <a class="topic-title fw-semibold fs-5 mb-2 text-reset text-break d-block" href="{config.relative_path}/post/{./pid}">
4
+ {{{ if ./isMainPost }}}<i class="fa fa-book text-muted" title="[[topic:topic]]"></i> {{{ end }}}{./topic.title}
5
+ </a>
6
+
6
7
  <div class="post-body d-flex flex-column gap-1">
7
8
  <div class="d-flex gap-3 post-info text-sm align-items-center">
8
9
  <div class="post-author d-flex align-items-center gap-1">
@@ -18,7 +18,7 @@
18
18
  <div class="search">
19
19
  <div class="input-group">
20
20
  <input class="form-control form-control-sm" id="search-user" type="text" placeholder="[[global:search]]"/>
21
- <button class="btn btn-primary btn-sm" type="button">
21
+ <button class="btn btn-primary btn-sm" type="button" aria-label="[[global:search]]">
22
22
  <i component="user/search/icon" class="fa fa-search"></i>
23
23
  </button>
24
24
  </div>