nodebb-theme-harmony 2.0.0-pre.42 → 2.0.0-pre.44

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-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "nodebb-theme-harmony",
3
- "version": "2.0.0-pre.42",
3
+ "version": "2.0.0-pre.43",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "nodebb-theme-harmony",
9
- "version": "2.0.0-pre.42",
9
+ "version": "2.0.0-pre.43",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@fontsource/inter": "5.0.15",
@@ -53,9 +53,9 @@
53
53
  }
54
54
  },
55
55
  "node_modules/@eslint/config-array": {
56
- "version": "0.18.0",
57
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
58
- "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
56
+ "version": "0.19.0",
57
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz",
58
+ "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==",
59
59
  "dev": true,
60
60
  "license": "Apache-2.0",
61
61
  "dependencies": {
@@ -68,9 +68,9 @@
68
68
  }
69
69
  },
70
70
  "node_modules/@eslint/core": {
71
- "version": "0.7.0",
72
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
73
- "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
71
+ "version": "0.9.0",
72
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz",
73
+ "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
74
74
  "dev": true,
75
75
  "license": "Apache-2.0",
76
76
  "engines": {
@@ -78,9 +78,9 @@
78
78
  }
79
79
  },
80
80
  "node_modules/@eslint/eslintrc": {
81
- "version": "3.1.0",
82
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
83
- "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
81
+ "version": "3.2.0",
82
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
83
+ "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
84
84
  "dev": true,
85
85
  "license": "MIT",
86
86
  "dependencies": {
@@ -102,9 +102,9 @@
102
102
  }
103
103
  },
104
104
  "node_modules/@eslint/js": {
105
- "version": "9.14.0",
106
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz",
107
- "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==",
105
+ "version": "9.15.0",
106
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz",
107
+ "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==",
108
108
  "dev": true,
109
109
  "license": "MIT",
110
110
  "engines": {
@@ -122,9 +122,9 @@
122
122
  }
123
123
  },
124
124
  "node_modules/@eslint/plugin-kit": {
125
- "version": "0.2.0",
126
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz",
127
- "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==",
125
+ "version": "0.2.3",
126
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
127
+ "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
128
128
  "dev": true,
129
129
  "license": "Apache-2.0",
130
130
  "dependencies": {
@@ -196,9 +196,9 @@
196
196
  }
197
197
  },
198
198
  "node_modules/@humanwhocodes/retry": {
199
- "version": "0.4.0",
200
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.0.tgz",
201
- "integrity": "sha512-xnRgu9DxZbkWak/te3fcytNyp8MTbuiZIaueg2rgEvBuN55n04nwLYLU9TX/VVlusc9L2ZNXi99nUFNkHXtr5g==",
199
+ "version": "0.4.1",
200
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
201
+ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
202
202
  "dev": true,
203
203
  "license": "Apache-2.0",
204
204
  "engines": {
@@ -504,10 +504,11 @@
504
504
  "license": "MIT"
505
505
  },
506
506
  "node_modules/cross-spawn": {
507
- "version": "7.0.3",
508
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
509
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
507
+ "version": "7.0.5",
508
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
509
+ "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
510
510
  "dev": true,
511
+ "license": "MIT",
511
512
  "dependencies": {
512
513
  "path-key": "^3.1.0",
513
514
  "shebang-command": "^2.0.0",
@@ -715,27 +716,27 @@
715
716
  }
716
717
  },
717
718
  "node_modules/eslint": {
718
- "version": "9.14.0",
719
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz",
720
- "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==",
719
+ "version": "9.15.0",
720
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz",
721
+ "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==",
721
722
  "dev": true,
722
723
  "license": "MIT",
723
724
  "dependencies": {
724
725
  "@eslint-community/eslint-utils": "^4.2.0",
725
726
  "@eslint-community/regexpp": "^4.12.1",
726
- "@eslint/config-array": "^0.18.0",
727
- "@eslint/core": "^0.7.0",
728
- "@eslint/eslintrc": "^3.1.0",
729
- "@eslint/js": "9.14.0",
730
- "@eslint/plugin-kit": "^0.2.0",
727
+ "@eslint/config-array": "^0.19.0",
728
+ "@eslint/core": "^0.9.0",
729
+ "@eslint/eslintrc": "^3.2.0",
730
+ "@eslint/js": "9.15.0",
731
+ "@eslint/plugin-kit": "^0.2.3",
731
732
  "@humanfs/node": "^0.16.6",
732
733
  "@humanwhocodes/module-importer": "^1.0.1",
733
- "@humanwhocodes/retry": "^0.4.0",
734
+ "@humanwhocodes/retry": "^0.4.1",
734
735
  "@types/estree": "^1.0.6",
735
736
  "@types/json-schema": "^7.0.15",
736
737
  "ajv": "^6.12.4",
737
738
  "chalk": "^4.0.0",
738
- "cross-spawn": "^7.0.2",
739
+ "cross-spawn": "^7.0.5",
739
740
  "debug": "^4.3.2",
740
741
  "escape-string-regexp": "^4.0.0",
741
742
  "eslint-scope": "^8.2.0",
@@ -754,8 +755,7 @@
754
755
  "lodash.merge": "^4.6.2",
755
756
  "minimatch": "^3.1.2",
756
757
  "natural-compare": "^1.4.0",
757
- "optionator": "^0.9.3",
758
- "text-table": "^0.2.0"
758
+ "optionator": "^0.9.3"
759
759
  },
760
760
  "bin": {
761
761
  "eslint": "bin/eslint.js"
@@ -1588,7 +1588,8 @@
1588
1588
  "version": "2.0.0",
1589
1589
  "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1590
1590
  "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1591
- "dev": true
1591
+ "dev": true,
1592
+ "license": "ISC"
1592
1593
  },
1593
1594
  "node_modules/js-yaml": {
1594
1595
  "version": "4.1.0",
@@ -1882,6 +1883,7 @@
1882
1883
  "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1883
1884
  "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1884
1885
  "dev": true,
1886
+ "license": "MIT",
1885
1887
  "engines": {
1886
1888
  "node": ">=8"
1887
1889
  }
@@ -2032,6 +2034,7 @@
2032
2034
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2033
2035
  "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2034
2036
  "dev": true,
2037
+ "license": "MIT",
2035
2038
  "dependencies": {
2036
2039
  "shebang-regex": "^3.0.0"
2037
2040
  },
@@ -2044,6 +2047,7 @@
2044
2047
  "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2045
2048
  "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2046
2049
  "dev": true,
2050
+ "license": "MIT",
2047
2051
  "engines": {
2048
2052
  "node": ">=8"
2049
2053
  }
@@ -2153,12 +2157,6 @@
2153
2157
  "url": "https://github.com/sponsors/ljharb"
2154
2158
  }
2155
2159
  },
2156
- "node_modules/text-table": {
2157
- "version": "0.2.0",
2158
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2159
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
2160
- "dev": true
2161
- },
2162
2160
  "node_modules/tsconfig-paths": {
2163
2161
  "version": "3.15.0",
2164
2162
  "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
@@ -2278,6 +2276,7 @@
2278
2276
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2279
2277
  "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2280
2278
  "dev": true,
2279
+ "license": "ISC",
2281
2280
  "dependencies": {
2282
2281
  "isexe": "^2.0.0"
2283
2282
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-harmony",
3
- "version": "2.0.0-pre.42",
3
+ "version": "2.0.0-pre.44",
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 }}}
@@ -63,24 +63,6 @@
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 p-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 p-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
68
  <div class="align-items-center justify-content-center card card-header p-3 border-0 rounded-1 h-100 gap-2">
@@ -96,9 +78,9 @@
96
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>
@@ -59,8 +59,8 @@
59
59
  <div class="flex-shrink-0 d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
60
60
  {{{ if loggedIn }}}
61
61
  {{{ if !isSelf }}}
62
- <a component="account/unfollow" href="#" class="btn btn-info flex-fill{{{ if !isFollowing }}} hide{{{ end }}}">[[user:unfollow]]</a>
63
- <a component="account/follow" href="#" class="btn btn-primary flex-fill{{{ if isFollowing }}} hide{{{ end }}}">[[user:follow]]</a>
62
+ <a component="account/unfollow" href="#" class="btn btn-outline-warning flex-fill{{{ if (!isFollowing && !isFollowPending) }}} hide{{{ end }}}">[[user:{{{ if isFollowPending }}}cancel-follow{{{ else }}}unfollow{{{ end }}}]]</a>
63
+ <a component="account/follow" href="#" class="btn btn-primary flex-fill{{{ if (isFollowing || isFollowPending) }}} hide{{{ end }}}">[[user:follow]]</a>
64
64
  {{{ end }}}
65
65
  {{{ end }}}
66
66
 
@@ -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>