nodebb-theme-harmony 0.0.2 → 0.0.3

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": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.0.0"
6
6
  },
@@ -13,16 +13,12 @@
13
13
  </div>
14
14
  </div>
15
15
 
16
- <div class="my-2">
17
- <!-- IMPORT partials/breadcrumbs.tpl -->
18
- </div>
19
-
20
- <div class="d-flex flex-column mb-2">
16
+ <div class="d-flex flex-column pb-4 mb-4 mt-2 border-bottom">
21
17
  <div class="d-flex justify-content-between align-items-center">
22
18
  <div class="d-flex align-items-center gap-2">
23
19
  <h2 class="mb-0">{group.displayName}</h2>
24
- {{{ if group.private }}}<span class="badge text-bg-info">[[groups:details.private]]</span>{{{ end }}}
25
- {{{ if group.hidden }}}<span class="badge text-bg-info">[[groups:details.hidden]]</span>{{{ end }}}
20
+ {{{ if group.private }}}<span class="badge text-bg-light border border-1">[[groups:details.private]]</span>{{{ end }}}
21
+ {{{ if group.hidden }}}<span class="badge text-bg-light border border-1">[[groups:details.hidden]]</span>{{{ end }}}
26
22
  </div>
27
23
 
28
24
  <div>
@@ -42,14 +42,14 @@
42
42
  <hr />
43
43
 
44
44
  <div component="groups/container" class="row" id="groups-list" data-nextstart={nextStart}>
45
- <!-- IF groups.length -->
45
+ {{{ if groups.length }}}
46
46
  <!-- IMPORT partials/groups/list.tpl -->
47
- <!-- ELSE -->
47
+ {{{ else }}}
48
48
  <div class="col-12">
49
49
  <div class="alert alert-warning">
50
50
  [[groups:no_groups_found]]
51
51
  </div>
52
52
  </div>
53
- <!-- ENDIF groups.length -->
53
+ {{{ end }}}
54
54
  </div>
55
55
  </div>
@@ -20,8 +20,8 @@
20
20
  </div>
21
21
  </div>
22
22
 
23
- <div class="d-flex gap-2 w-100 mb-4 mt-2">
24
- <div class="avatar-wrapper border-4 position-relative align-self-start d-none d-md-block" style="margin-top: -60px;">
23
+ <div class="d-flex gap-2 w-100 pb-4 mb-4 mt-2 border-bottom">
24
+ <div class="avatar-wrapper border-4 position-relative align-self-start d-none d-md-block" style="margin-top: -75px;">
25
25
  {{{ if picture }}}
26
26
  <img src="{picture}" class="avatar avatar-rounded" style="--avatar-size: 142px;" />
27
27
  {{{ else }}}
@@ -29,9 +29,8 @@
29
29
  {{{ end }}}
30
30
  </div>
31
31
  <div class="d-flex flex-1 flex-column gap-2">
32
- <!-- IMPORT partials/breadcrumbs.tpl -->
33
32
  <div class="d-grid gap-1">
34
- <h2 class="fullname fw-semibold fs-3">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
33
+ <h2 class="fullname fw-semibold fs-2 tracking-tight mb-0">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
35
34
  <div class="d-flex flex-wrap gap-1 text-sm align-items-center">
36
35
  <span class="username fw-bold">{{{ if !banned }}}@{username}{{{ else }}}[[user:banned]]{{{ end }}}</span>
37
36
  <div class="d-flex align-items-center gap-1 p-1">
@@ -88,3 +87,4 @@
88
87
  </div>
89
88
  </div>
90
89
 
90
+
@@ -1,86 +1,78 @@
1
1
  <div class="options">
2
2
  <form component="groups/settings" role="form">
3
- <div class="mb-3">
4
- <label class="form-label" for="name">[[groups:details.group_name]]</label>
5
- <input <!-- IF group.system -->readonly<!-- ENDIF group.system --> class="form-control" name="name" id="name" type="text" value="{group.displayName}" />
6
- </div>
7
- <div class="mb-3">
8
- <label class="form-label" for="name">[[groups:details.description]]</label>
9
- <textarea class="form-control" name="description" id="description" type="text" maxlength="255">{group.description}</textarea>
10
- </div>
11
-
12
-
13
- <div class="form-check">
14
- <label class="form-check-label">[[groups:details.private]]</label>
15
- <input class="form-check-input" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->>
16
- <!-- IF !allowPrivateGroups -->
17
- <p class="form-text">
18
- [[groups:details.private_system_help]]
19
- </p>
20
- <!-- ENDIF !allowPrivateGroups -->
21
- <p class="form-text text-xs m-0">
22
- [[groups:details.private_help]]
23
- </p>
24
- </div>
25
- <div class="form-check">
26
- <label class="form-check-label">[[groups:details.hidden]]</label>
27
- <input class="form-check-input" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->>
28
- <p class="form-text text-xs m-0">
29
- [[groups:details.hidden_help]]
30
- </p>
31
- </div>
32
-
33
- <div class="form-check">
34
- <label class="form-check-label">[[groups:details.disableJoinRequests]]</label>
35
- <input class="form-check-input" name="disableJoinRequests" type="checkbox"<!-- IF group.disableJoinRequests --> checked<!-- ENDIF group.disableJoinRequests -->>
36
- </div>
37
- <div class="form-check">
38
- <label class="form-check-label">[[groups:details.disableLeave]]</label>
39
- <input class="form-check-input" name="disableLeave" type="checkbox"{{{if group.disableLeave}}} checked{{{end}}}>
40
- </div>
3
+ <div class="row">
4
+ <div class="col-12 col-lg-6">
5
+ <div class="mb-3">
6
+ <label class="form-label" for="name">[[groups:details.group_name]]</label>
7
+ <input <!-- IF group.system -->readonly<!-- ENDIF group.system --> class="form-control" name="name" id="name" type="text" value="{group.displayName}" />
8
+ </div>
9
+ <div class="mb-3">
10
+ <label class="form-label" for="name">[[groups:details.description]]</label>
11
+ <textarea class="form-control" name="description" id="description" type="text" maxlength="255">{group.description}</textarea>
12
+ </div>
41
13
 
42
- <div class="form-check">
43
- <label class="form-check-label">[[groups:details.userTitleEnabled]]</label>
44
- <input class="form-check-input" name="userTitleEnabled" type="checkbox"<!-- IF group.userTitleEnabled --> checked<!-- ENDIF group.userTitleEnabled -->>
45
- </div>
14
+ <div class="form-check">
15
+ <label class="form-check-label">[[groups:details.private]]</label>
16
+ <input class="form-check-input" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->>
17
+ {{{ if !allowPrivateGroups }}}
18
+ <p class="form-text">
19
+ [[groups:details.private_system_help]]
20
+ </p>
21
+ {{{ end }}}
22
+ <p class="form-text text-xs m-0">
23
+ [[groups:details.private_help]]
24
+ </p>
25
+ </div>
26
+ <div class="form-check">
27
+ <label class="form-check-label">[[groups:details.hidden]]</label>
28
+ <input class="form-check-input" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->>
29
+ <p class="form-text text-xs m-0">
30
+ [[groups:details.hidden_help]]
31
+ </p>
32
+ </div>
46
33
 
47
- <div class="row mb-3">
48
- <div class="col-6">
49
- <div class="user-title-option">
50
- <label class="form-label" for="userTitle">[[groups:details.badge_text]]</label>
51
- <input component="groups/userTitleOption" class="form-control" name="userTitle" id="userTitle" type="text" maxlength="40" value="{group.userTitleEscaped}"<!-- IF !group.userTitleEnabled --> disabled<!-- ENDIF !group.userTitleEnabled --> />
34
+ <div class="form-check">
35
+ <label class="form-check-label">[[groups:details.disableJoinRequests]]</label>
36
+ <input class="form-check-input" name="disableJoinRequests" type="checkbox"{{{ if group.disableJoinRequests }}} checked{{{ end }}}>
37
+ </div>
38
+ <div class="form-check">
39
+ <label class="form-check-label">[[groups:details.disableLeave]]</label>
40
+ <input class="form-check-input" name="disableLeave" type="checkbox"{{{if group.disableLeave}}} checked{{{end}}}>
52
41
  </div>
53
42
  </div>
54
- <div class="col-6 d-flex flex-column">
55
- <label class="form-label">[[groups:details.badge_preview]]</label>
56
- <span class="badge rounded-1 text-uppercase text-truncate rounded-1 {{{ if !group.userTitleEnabled }}} hide{{{ end }}}" style="max-width:150px; color: {group.textColor}; background-color: {group.labelColor}"><i class="fa{{{ if group.icon }}} {group.icon}{{{ if ./userTitle}}}me-1{{{ end }}}{{{ end }}}"></i><span class="badge-text">{{{ if group.userTitle }}}{group.userTitle}{{{ end }}}</span></span>
57
- </div>
58
- </div>
59
-
60
-
61
-
62
-
43
+ <div class="col-12 col-lg-6">
44
+ <div class="d-flex gap-2 align-items-center">
45
+ <div class="form-check">
46
+ <label class="form-check-label">[[groups:details.userTitleEnabled]]</label>
47
+ <input class="form-check-input" name="userTitleEnabled" type="checkbox"{{{ if group.userTitleEnabled }}} checked{{{ end }}}>
48
+ </div>
49
+ <span class="badge rounded-1 text-uppercase text-truncate rounded-1 {{{ if !group.userTitleEnabled }}} hide{{{ end }}}" style="max-width:150px; color: {group.textColor}; background-color: {group.labelColor}"><i class="fa {{{ if group.icon }}} {group.icon}{{{ if group.userTitle}}} me-1{{{ end }}}{{{ end }}}"></i><span class="badge-text">{{{ if group.userTitle }}}{group.userTitle}{{{ end }}}</span></span>
50
+ </div>
63
51
 
64
- <div class="row mb-3 user-title-option">
65
- <div class="col-4">
66
- <button component="groups/userTitleOption" type="button" class="btn btn-outline-secondary btn-sm" data-action="icon-select"{{{ if !group.userTitleEnabled }}} disabled{{{ end }}}>[[groups:details.change_icon]]</button>
67
- </div>
68
- <div class="col-4">
69
- <label class="form-label" for="labelColor" class="badge-color-label">[[groups:details.change_label_colour]]</label>
70
- <input component="groups/userTitleOption" type="color" name="labelColor" value="{{{ if group.labelColor }}}{group.labelColor}{{{ end }}}" />
71
- </div>
72
- <div class="col-4">
73
- <label class="form-label" for="color" class="badge-color-label">[[groups:details.change_text_colour]]</label>
74
- <input component="groups/userTitleOption" type="color" name="textColor" value="{{{ if group.textColor }}}{group.textColor}{{{ end }}}" />
75
- </div>
76
- <input type="hidden" name="icon" value="{{{ if group.icon }}}{group.icon}{{{ end }}}" />
77
52
 
78
- <div id="icons" class="hidden">
79
- <div class="icon-container">
80
- <div class="row nbb-fa-icons">
81
- <!-- IMPORT partials/fontawesome.tpl -->
53
+ <div class="mb-2">
54
+ <label class="form-label text-xs text-muted" for="userTitle">[[groups:details.badge_text]]</label>
55
+ <div class="d-flex gap-1">
56
+ <input component="groups/userTitleOption" class="form-control" name="userTitle" id="userTitle" type="text" maxlength="40" value="{group.userTitleEscaped}"{{{ if !group.userTitleEnabled }}} disabled{{{ end }}} />
57
+ <button component="groups/userTitleOption" type="button" class="btn btn-outline-secondary text-nowrap" data-action="icon-select"{{{ if !group.userTitleEnabled }}} disabled{{{ end }}}>[[groups:details.change_icon]]</button>
58
+ <input type="hidden" name="icon" value="{{{ if group.icon }}}{group.icon}{{{ end }}}" />
59
+ <div id="icons" class="hidden">
60
+ <div class="icon-container">
61
+ <div class="row nbb-fa-icons">
62
+ <!-- IMPORT partials/fontawesome.tpl -->
63
+ </div>
64
+ </div>
65
+ </div>
82
66
  </div>
83
67
  </div>
68
+ <div class="mb-2">
69
+ <label class="form-label text-xs text-muted" for="labelColor" class="badge-color-label">[[groups:details.change_label_colour]]</label>
70
+ <input class="form-control" component="groups/userTitleOption" type="color" name="labelColor" value="{{{ if group.labelColor }}}{group.labelColor}{{{ end }}}" />
71
+ </div>
72
+ <div class="mb-2">
73
+ <label class="form-label text-xs text-muted" for="color" class="badge-color-label">[[groups:details.change_text_colour]]</label>
74
+ <input class="form-control" component="groups/userTitleOption" type="color" name="textColor" value="{{{ if group.textColor }}}{group.textColor}{{{ end }}}" />
75
+ </div>
84
76
  </div>
85
77
  </div>
86
78
 
@@ -1,14 +1,16 @@
1
+ <label class="text-xs text-muted">[[groups:invited.search]]</label>
1
2
  <div class="input-group mb-2">
2
- <input class="form-control" type="text" component="groups/members/invite" placeholder="[[groups:invited.search]]"/>
3
+ <input class="form-control" type="text" component="groups/members/invite"/>
3
4
  <span class="input-group-text search-button"><i class="fa fa-search"></i></span>
4
5
  </div>
5
6
 
6
7
  <div class="mb-2">
7
- <textarea class="form-control" component="groups/members/bulk-invite" placeholder="[[groups:bulk-invite-instructions]]"></textarea>
8
+ <label class="text-xs text-muted">[[groups:bulk-invite-instructions]]</label>
9
+ <textarea class="form-control" component="groups/members/bulk-invite"></textarea>
8
10
  </div>
9
11
 
10
12
  <div class="mb-2 clearfix">
11
- <button class="btn btn-outline-secondary btn-sm float-end" component="groups/members/bulk-invite-button">[[groups:bulk-invite]]</button>
13
+ <button class="btn btn-primary btn-sm float-end" component="groups/members/bulk-invite-button">[[groups:bulk-invite]]</button>
12
14
  </div>
13
15
 
14
16
  <table component="groups/invited" class="table table-hover">
@@ -16,7 +18,7 @@
16
18
  <div class="alert alert-info">[[groups:invited.none]]</div>
17
19
  {{{ end }}}
18
20
  {{{each group.invited}}}
19
- <tr data-uid="{group.invited.uid}">
21
+ <tr data-uid="{group.invited.uid}" class="align-middle">
20
22
  <td class="p-2">
21
23
  <a class="text-decoration-none" href="{config.relative_path}/user/{group.invited.userslug}">{buildAvatar(group.invited, "24px", true)}</a>
22
24
  </td>
@@ -1,5 +1,5 @@
1
1
  {{{ each groups }}}
2
- <div class="col-xxl-4 col-lg-6 col-sm-12 mb-3" component="groups/summary" data-slug="{./slug}">
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
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>
5
5
  <a href="{config.relative_path}/groups/{./slug}" class="d-block h-100 text-reset text-decoration-none">
@@ -1,7 +1,8 @@
1
1
  {{{ if group.pending.length }}}
2
2
  <div class="d-flex justify-content-end gap-2 mb-3">
3
- <button class="btn btn-outline-secondary btn-sm" data-action="acceptAll">[[groups:pending.accept_all]]</button>
4
- <button class="btn btn-outline-secondary btn-sm" data-action="rejectAll">[[groups:pending.reject_all]]</button>
3
+ <button class="btn btn-danger btn-sm" data-action="rejectAll">[[groups:pending.reject_all]]</button>
4
+ <button class="btn btn-success btn-sm" data-action="acceptAll">[[groups:pending.accept_all]]</button>
5
+
5
6
  </div>
6
7
  {{{ end }}}
7
8
 
@@ -10,7 +11,7 @@
10
11
  <div class="alert alert-info">[[groups:pending.none]]</div>
11
12
  {{{ end }}}
12
13
  {{{each group.pending}}}
13
- <tr data-uid="{group.pending.uid}">
14
+ <tr data-uid="{group.pending.uid}" class="align-middle">
14
15
  <td class="p-2">
15
16
  <a class="text-decoration-none" href="{config.relative_path}/user/{group.pending.userslug}">{buildAvatar(group.pending, "24px", true)}</a>
16
17
  </td>
@@ -19,8 +20,9 @@
19
20
  </td>
20
21
  <td class="p-2">
21
22
  <div class="d-flex gap-2">
22
- <button class="btn btn-outline-secondary btn-sm" data-action="accept">[[groups:pending.accept]]</a></li>
23
- <button class="btn btn-outline-secondary btn-sm" data-action="reject">[[groups:pending.reject]]</a></li>
23
+ <button class="btn btn-danger btn-sm" data-action="reject">[[groups:pending.reject]]</a></li>
24
+ <button class="btn btn-success btn-sm" data-action="accept">[[groups:pending.accept]]</a></li>
25
+
24
26
  </div>
25
27
  </td>
26
28
  </tr>
@@ -52,7 +52,7 @@
52
52
 
53
53
 
54
54
  {{{ if !template.category }}}
55
- <a class="lh-1 me-2 mb-1" href="{config.relative_path}/category/{./category.slug}">{function.buildCategoryLabel, ./category}</a>
55
+ <a class="lh-1 me-2 mb-1" href="{config.relative_path}/category/{./category.slug}">{function.buildCategoryLabel, ./category, "border"}</a>
56
56
  {{{ end }}}
57
57
 
58
58
  {{{ if ./tags.length }}}