nodebb-theme-harmony 2.0.0-pre.41 → 2.0.0-pre.43

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": "2.0.0-pre.41",
3
+ "version": "2.0.0-pre.43",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.7.0"
6
6
  },
package/scss/sidebar.scss CHANGED
@@ -138,6 +138,9 @@
138
138
  }
139
139
 
140
140
  .bottombar-nav {
141
+ #user_dropdown .avatar {
142
+ margin: 2px 0; // fixes the avatar so its height is same as the icons on right sidebar
143
+ }
141
144
  .nav-text {
142
145
  font-size: 1rem;
143
146
  color: $body-color;
@@ -154,36 +157,32 @@
154
157
  line-height: 12px;
155
158
  }
156
159
 
160
+ .dropdown-menu {
161
+ left: 0!important;
162
+ right: 0!important;
163
+ box-shadow: none!important;
164
+ border-left: 0;
165
+ border-right: 0;
166
+ border-radius: 0;
167
+ .list-container {
168
+ max-height: 60vh!important;
169
+ overflow-y: auto!important;
170
+ }
171
+ }
172
+
157
173
  .navigation-dropdown, .user-dropdown {
158
174
  > li {
159
175
  > a, .dropdown-item {
160
176
  padding: 10px 20px!important;
161
177
  }
162
178
  }
163
- left: 0!important;
164
- right: 0!important;
165
- bottom: $spacer*0.5!important;
166
- box-shadow: none!important;
179
+
167
180
  max-height: 60vh!important;
168
181
  overflow: auto!important;
169
182
  }
183
+
170
184
  .search-dropdown .quick-search-results {
171
185
  max-height: 225px!important;
172
186
  overflow-y: auto!important;
173
187
  }
174
- .search-dropdown, .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
175
- left: 0 !important;
176
- right: 0 !important;
177
- box-shadow: none!important;
178
-
179
- border-left: 0;
180
- border-right: 0;
181
- border-bottom: 0;
182
- border-radius: 0;
183
-
184
- .list-container {
185
- max-height: 60vh!important;
186
- overflow-y: auto!important;
187
- }
188
- }
189
188
  }
@@ -1,6 +1,6 @@
1
1
  <!-- IMPORT partials/account/header.tpl -->
2
2
 
3
- <div class="d-flex justify-content-between py-1 mb-3 align-items-center position-sticky top-0 bg-body">
3
+ <div class="d-flex justify-content-between py-1 mb-3 align-items-center position-sticky top-0 bg-body z-1">
4
4
  <h3 class="fw-semibold fs-5 mb-0">{{{ if isSelf }}}[[user:edit-profile]]{{{ else }}}[[pages:account/edit, {username}]]{{{ end }}}</h3>
5
5
  <button id="submitBtn" class="btn btn-sm btn-primary">[[global:save-changes]]</button>
6
6
  </div>
@@ -12,18 +12,6 @@
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 }}}
16
- <div class="mb-3">
17
- <label class="form-label fw-bold" for="website">[[user:website]]</label>
18
- <input class="form-control" type="text" id="website" name="website" placeholder="http://..." value="{website}">
19
- </div>
20
- {{{ end }}}
21
-
22
- <div class="mb-3">
23
- <label class="form-label fw-bold" for="location">[[user:location]]</label>
24
- <input class="form-control" type="text" id="location" name="location" placeholder="[[user:location]]" value="{location}">
25
- </div>
26
-
27
15
  <div class="mb-3">
28
16
  <label class="form-label fw-bold" for="birthday">[[user:birthday]]</label>
29
17
  <input class="form-control" type="date" id="birthday" name="birthday" value="{birthday}" placeholder="mm/dd/yyyy">
@@ -39,8 +27,13 @@
39
27
  {{{ if (./type == "input-number") }}}
40
28
  <input class="form-control" type="number" id="{./key}" name="{./key}" value="{./value}">
41
29
  {{{ end }}}
42
- {{{ if (./type == "select") }}}
43
- <select class="form-select" id="{./key}" name="{./key}">
30
+
31
+ {{{ if (./type == "input-date") }}}
32
+ <input class="form-control" type="date" id="{./key}" name="{./key}" value="{./value}">
33
+ {{{ end }}}
34
+
35
+ {{{ if ((./type == "select") || (./type == "select-multi")) }}}
36
+ <select class="form-select" id="{./key}" name="{./key}" {{{ if (./type == "select-multi") }}} multiple{{{ end }}}>
44
37
  {{{ each ./select-options}}}
45
38
  <option value="{./value}" {{{ if ./selected }}}selected{{{ end }}}>{./value}</option>
46
39
  {{{ end }}}
@@ -26,14 +26,14 @@
26
26
  <div class="row row-cols-2 row-cols-xl-3 row-cols-xxl-4 g-2 mb-5">
27
27
  {{{ if !reputation:disabled }}}
28
28
  <div class="stat">
29
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100">
29
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100">
30
30
  <span class="stat-label text-xs fw-semibold">[[global:reputation]]</span>
31
31
  <span class="fs-2 ff-secondary" title="{reputation}">{humanReadableNumber(reputation)}</span>
32
32
  </div>
33
33
  </div>
34
34
  {{{ end }}}
35
35
  <div class="stat">
36
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100">
36
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100">
37
37
  <span class="stat-label text-xs fw-semibold">[[user:profile-views]]</span>
38
38
  <span class="fs-2 ff-secondary" title="
39
39
  {profileviews}">{humanReadableNumber(profileviews)}</span>
@@ -41,14 +41,14 @@
41
41
  </div>
42
42
 
43
43
  <div class="stat">
44
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
44
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100 gap-2">
45
45
  <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-user-plus"></i> <span>[[user:joined]]</span></span>
46
46
  <span class="timeago fs-6 ff-secondary" title="{joindateISO}"></span>
47
47
  </div>
48
48
  </div>
49
49
 
50
50
  <div class="stat">
51
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
51
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100 gap-2">
52
52
  <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-clock"></i> <span>[[user:lastonline]]</span></span>
53
53
  <span class="timeago text-center text-break w-100 px-2 fs-6 ff-secondary" title="{lastonlineISO}"></span>
54
54
  </div>
@@ -56,34 +56,16 @@
56
56
 
57
57
  {{{ if email }}}
58
58
  <div class="stat">
59
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
59
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100 gap-2">
60
60
  <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-envelope"></i> <span>[[user:email]]</span> {{{ if emailHidden}}}<span class="text-lowercase">([[global:hidden]])</span>{{{ end }}}</span>
61
61
  <span class="text-sm text-center text-break w-100 px-2 ff-secondary">{email}</span>
62
62
  </div>
63
63
  </div>
64
64
  {{{ end }}}
65
65
 
66
- {{{ if websiteName }}}
67
- <div class="stat">
68
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
69
- <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-globe"></i> <span>[[user:website]]</span></span>
70
- <a class="text-sm text-center text-break w-100 px-2 ff-secondary text-underline text-reset" href="{websiteLink}" rel="nofollow noreferrer me">{websiteName}</a>
71
- </div>
72
- </div>
73
- {{{ end }}}
74
-
75
- {{{ if location }}}
76
- <div class="stat">
77
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
78
- <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-map-pin"></i> <span>[[user:location]]</span></span>
79
- <span class="text-center text-break w-100 px-2 fs-6 ff-secondary">{location}</span>
80
- </div>
81
- </div>
82
- {{{ end }}}
83
-
84
66
  {{{ if age }}}
85
67
  <div class="stat">
86
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
68
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100 gap-2">
87
69
  <span class="stat-label text-xs fw-semibold"><span><i class="text-muted fa-solid fa-cake-candles"></i> [[user:age]]</span></span>
88
70
  <span class="fs-6 ff-secondary">{age}</span>
89
71
  </div>
@@ -93,12 +75,12 @@
93
75
  {{{ each customUserFields }}}
94
76
  {{{ if ./value }}}
95
77
  <div class="stat">
96
- <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
78
+ <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100 gap-2">
97
79
  <span class="stat-label text-xs fw-semibold"><span><i class="text-muted {./icon}"></i> {./name}</span></span>
98
80
  {{{ if (./type == "input-link") }}}
99
- <a class="text-sm text-center text-break w-100 px-2 ff-secondary text-underline text-reset" href="{./value}" rel="nofollow noreferrer me">{./value}</a>
81
+ <a class="text-sm text-center text-break w-100 px-2 ff-secondary text-underline text-reset" href="{./value}" rel="nofollow noreferrer">{./linkValue}</a>
100
82
  {{{ else }}}
101
- <span class="text-center fs-6 ff-secondary">{./value}</span>
83
+ <span class="text-center {{{ if (./type == "input-number") }}}fs-2{{{else }}}fs-6{{{ end }}} ff-secondary">{./value}</span>
102
84
  {{{ end }}}
103
85
  </div>
104
86
  </div>
@@ -42,7 +42,7 @@
42
42
 
43
43
  <hr />
44
44
 
45
- <div component="groups/container" class="row" id="groups-list" data-nextstart={nextStart}>
45
+ <div component="groups/container" class="row" id="groups-list">
46
46
  {{{ if groups.length }}}
47
47
  <!-- IMPORT partials/groups/list.tpl -->
48
48
  {{{ else }}}
@@ -53,4 +53,6 @@
53
53
  </div>
54
54
  {{{ end }}}
55
55
  </div>
56
+
57
+ <!-- IMPORT partials/paginator.tpl -->
56
58
  </div>
@@ -6,7 +6,7 @@
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">
8
8
  <div class="flex-grow-1 fs-6 fw-semibold">{./displayName}</div>
9
- <div class="flex-shrink-0 text-sm"><i class="text-muted fa-solid fa-user"></i> {./memberCount}</div>
9
+ <div class="flex-shrink-0 text-sm"><i class="text-muted fa-solid fa-user"></i> {formattedNumber(./memberCount)}</div>
10
10
  </div>
11
11
  <div class="text-sm">{./description}</div>
12
12
  </div>
@@ -1,7 +1,7 @@
1
1
  {{{ if multiplePages }}}
2
2
  <div class="show-more-container">
3
3
  <div class="text-center d-block d-md-none">
4
- <a href="{url}" class="btn btn-primary">
4
+ <a href="{url}" class="btn btn-sm btn-primary">
5
5
  [[search:see-more-results, {matchCount}]]
6
6
  </a>
7
7
  </div>
@@ -1,6 +1,8 @@
1
1
  {{{each tags}}}
2
- <a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./valueEscaped}" class="btn btn-ghost ff-base d-flex flex-column gap-1 align-items-start justify-content-start text-truncate p-2">
3
- <div class="fw-semibold text-nowrap tag-item w-100 text-start text-truncate">{./valueEscaped}</div>
4
- <div class="text-xs text-muted text-nowrap tag-topic-count">[[global:x-topics, {txEscape(formattedNumber(./score))}]]</div>
5
- </a>
2
+ <div>
3
+ <a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./valueEscaped}" class="btn btn-ghost ff-base d-flex flex-column gap-1 align-items-start justify-content-start text-truncate p-2">
4
+ <div class="fw-semibold text-nowrap tag-item w-100 text-start text-truncate">{./valueEscaped}</div>
5
+ <div class="text-xs text-muted text-nowrap tag-topic-count">[[global:x-topics, {txEscape(formattedNumber(./score))}]]</div>
6
+ </a>
7
+ </div>
6
8
  {{{end}}}
@@ -1,37 +1,39 @@
1
- <a href="{config.relative_path}/user/{./userslug}" class="btn btn-ghost gap-2 ff-base d-flex align-items-start justify-content-start p-2 text-start">
2
- {buildAvatar(@value, "48px", true, "flex-shrink-0")}
3
- <div class="d-flex flex-column gap-1 text-truncate">
4
- <div class="fw-semibold text-truncate" title="{./displayname}">{./displayname}</div>
5
- <div class="text-xs text-muted text-truncate">@{./username}</div>
1
+ <div>
2
+ <a href="{config.relative_path}/user/{./userslug}" class="btn btn-ghost gap-2 ff-base d-flex align-items-start justify-content-start p-2 text-start">
3
+ {buildAvatar(@value, "48px", true, "flex-shrink-0")}
4
+ <div class="d-flex flex-column gap-1 text-truncate">
5
+ <div class="fw-semibold text-truncate" title="{./displayname}">{./displayname}</div>
6
+ <div class="text-xs text-muted text-truncate">@{./username}</div>
6
7
 
7
- {{{ if section_online }}}
8
- <div class="text-xs text-muted text-truncate">
9
- <span class="timeago" title="{./lastonlineISO}"></span>
10
- </div>
11
- {{{ end }}}
8
+ {{{ if section_online }}}
9
+ <div class="text-xs text-muted text-truncate">
10
+ <span class="timeago" title="{./lastonlineISO}"></span>
11
+ </div>
12
+ {{{ end }}}
12
13
 
13
- {{{ if section_joindate }}}
14
- <div class="text-xs text-muted text-truncate">
15
- <span class="timeago" title="{./joindateISO}"></span>
16
- </div>
17
- {{{ end }}}
14
+ {{{ if section_joindate }}}
15
+ <div class="text-xs text-muted text-truncate">
16
+ <span class="timeago" title="{./joindateISO}"></span>
17
+ </div>
18
+ {{{ end }}}
18
19
 
19
- {{{ if section_sort-reputation }}}
20
- <div class="text-xs text-muted text-truncate">
21
- <span>{formattedNumber(./reputation)}</span>
22
- </div>
23
- {{{ end }}}
20
+ {{{ if section_sort-reputation }}}
21
+ <div class="text-xs text-muted text-truncate">
22
+ <span>{formattedNumber(./reputation)}</span>
23
+ </div>
24
+ {{{ end }}}
24
25
 
25
- {{{ if section_sort-posts }}}
26
- <div class="text-xs text-muted text-truncate">
27
- <span>{formattedNumber(./postcount)}</span>
28
- </div>
29
- {{{ end }}}
26
+ {{{ if section_sort-posts }}}
27
+ <div class="text-xs text-muted text-truncate">
28
+ <span>{formattedNumber(./postcount)}</span>
29
+ </div>
30
+ {{{ end }}}
30
31
 
31
- {{{ if section_flagged }}}
32
- <div class="text-xs text-muted text-truncate">
33
- <span>{formattedNumber(./flags)}</span>
32
+ {{{ if section_flagged }}}
33
+ <div class="text-xs text-muted text-truncate">
34
+ <span>{formattedNumber(./flags)}</span>
35
+ </div>
36
+ {{{ end }}}
34
37
  </div>
35
- {{{ end }}}
36
- </div>
37
- </a>
38
+ </a>
39
+ </div>