nodebb-theme-harmony 0.0.6 → 0.0.8

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.6",
3
+ "version": "0.0.8",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.0.0"
6
6
  },
@@ -7,7 +7,12 @@
7
7
  <h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
8
8
  <div class="justify-content-end">
9
9
  <div class="dropdown">
10
- <input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
10
+ <div class="input-group">
11
+ <input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
12
+ <button class="btn btn-primary btn-sm" type="button">
13
+ <i class="fa fa-search"></i>
14
+ </button>
15
+ </div>
11
16
 
12
17
  <ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end block-edit overflow-auto" style="max-height:300px;">
13
18
  <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
@@ -1,5 +1,5 @@
1
1
  <div class="chats-full d-flex gap-1 vh-100 py-3">
2
- <div class="d-flex flex-column h-100" component="chat/nav-wrapper" data-loaded="{{{ if roomId }}}1{{{ else }}}0{{{ end }}}">
2
+ <div class="d-flex flex-column h-100" style="width:300px;" component="chat/nav-wrapper" data-loaded="{{{ if roomId }}}1{{{ else }}}0{{{ end }}}">
3
3
  <div class="chat-search dropdown mb-2">
4
4
  <label class="text-xs text-muted">[[users:search-user-for-chat]]</label>
5
5
 
@@ -15,7 +15,7 @@
15
15
  </ul>
16
16
  </div>
17
17
  <hr class="text-muted opacity-25 my-1">
18
- <ul component="chat/recent" class="chats-list list-unstyled overflow-auto mb-0 pe-2" data-nextstart="{nextStart}" style="width:300px;">
18
+ <ul component="chat/recent" class="chats-list list-unstyled overflow-auto mb-0 pe-2" data-nextstart="{nextStart}">
19
19
  {{{each rooms}}}
20
20
  <!-- IMPORT partials/chats/recent_room.tpl -->
21
21
  {{{end}}}
@@ -1,68 +1,33 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
-
4
1
  <div class="notifications">
5
2
 
6
- <!-- IMPORT partials/breadcrumbs.tpl -->
7
3
  <div class="btn-toolbar justify-content-end" role="toolbar">
8
- <div class="btn-group me-2">
9
- <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
10
- {{{ if selectedFilter }}}{selectedFilter.name}{{{ end}}} <span class="caret"></span>
11
- </button>
12
- <ul class="dropdown-menu dropdown-menu-end" role="menu">
13
- {{{ each filters }}}
14
- {{{ if filters.separator }}}
15
- <li role="separator" class="dropdown-divider"></li>
16
- {{{ else }}}
17
- <li role="presentation" class="category">
18
- <a class="dropdown-item" role="menu-item" href="{config.relative_path}/notifications?filter={filters.filter}"><i class="fa fa-fw {{{ if filters.selected }}}fa-check{{{ end }}}"></i> {filters.name}</a>
19
- </li>
20
- {{{ end }}}
21
- {{{ end }}}
22
- </ul>
23
- </div>
24
-
25
- <div class="btn-group">
26
- <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="true">
27
- <i class="fa fa-eye"></i>
28
- <span class="caret"></span>
29
- </button>
30
- <ul class="dropdown-menu dropdown-menu-end" role="menu" aria-labelledby="dropdownMenu1">
31
- <li role="presentation"><a class="dropdown-item" role="menuitem" tabindex="-1" href="#" component="notifications/mark_all">[[notifications:mark_all_read]]</a></li>
32
- </ul>
33
- </div>
4
+ <button class="btn btn-light" component="notifications/mark_all">[[notifications:mark_all_read]]</button>
34
5
  </div>
35
6
 
36
7
  <hr />
37
8
 
38
- <div class="alert alert-info {{{ if notifications.length }}}hidden{{{ end }}}">
39
- [[notifications:no_notifs]]
40
- </div>
41
-
42
- <ul class="notifications-list list-unstyled" data-nextstart="{nextStart}">
43
- {{{each notifications}}}
44
- <li data-nid="{notifications.nid}" class="{notifications.readClass} {{{ if !./read}}}text-bg-warning{{{ end }}} d-flex pointer border p-3 mb-2" component="notifications/item">
45
- <div class="me-2">
46
- {{{ if notifications.from }}}
47
- {buildAvatar(notifications.user, "24px", true)}
9
+ <div class="row">
10
+ <div class="col-12 col-md-3 col-lg-2 border-end-md text-sm mb-3">
11
+ <div class="nav sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="z-index: 1;">
12
+ {{{ each filters }}}
13
+ {{{ if ./separator }}}
14
+ <hr/>
48
15
  {{{ else }}}
49
- {{{ if notifications.image }}}
50
- <img width="24" height="24" src="{notifications.image}" />
16
+ <a class="btn-ghost fw-semibold {{{ if ./selected }}}active{{{ end }}}" href="{config.relative_path}/notifications?filter={./filter}">
17
+ <div class="flex-1">{filters.name}</div>
18
+ <span class="text-xs human-readable-number" title="{./count}">{./count}</span>
19
+ </a>
51
20
  {{{ end }}}
52
21
  {{{ end }}}
53
22
  </div>
54
- <div>
55
- <p class="mb-1">
56
- <a class="text-reset" component="notifications/item/link" href="{notifications.path}">{notifications.bodyShort}</a>
57
- </p>
58
- <p class="timestamp">
59
- <span class="timeago small text-reset" title="{notifications.datetimeISO}"></span>
60
- </p>
61
- </div>
62
- </li>
63
- {{{end}}}
64
- </ul>
65
- <!-- IMPORT partials/paginator.tpl -->
23
+ </div>
24
+ <div class="col-12 col-md-9 col-lg-10">
25
+ <ul class="notifications-list list-unstyled" data-nextstart="{nextStart}">
26
+ <!-- IMPORT partials/notifications_list.tpl -->
27
+ </ul>
28
+ <!-- IMPORT partials/paginator.tpl -->
29
+ </div>
30
+ </div>
66
31
  </div>
67
32
 
68
33
 
@@ -1,17 +1,17 @@
1
- <li component="chat/message" class="chat-message mx-2 pe-2 fw-light clear{{{ if ./deleted }}} deleted{{{ end }}} {{{ if messages.newSet }}}border-top pt-3{{{ end }}}" data-index="{messages.index}" data-mid="{messages.messageId}" data-uid="{messages.fromuid}" data-self="{messages.self}" data-break="{messages.newSet}" data-timestamp="{messages.timestamp}">
2
- <div class="message-header {{{ if !messages.newSet }}}hidden{{{ end }}} pb-2">
3
- <a href="{config.relative_path}/user/{messages.fromUser.userslug}" class="text-decoration-none">{buildAvatar(messages.fromUser, "24px", false, "not-responsive rounded")}</a>
4
- <span class="chat-user fw-bold"><a href="{config.relative_path}/user/{messages.fromUser.userslug}">{messages.fromUser.displayname}</a></span>
5
- <!-- IF ../fromUser.banned -->
1
+ <li component="chat/message" class="chat-message mx-2 pe-2 clear{{{ if ./deleted }}} deleted{{{ end }}} {{{ if messages.newSet }}}border-top pt-3{{{ end }}}" data-index="{messages.index}" data-mid="{messages.messageId}" data-uid="{messages.fromuid}" data-self="{messages.self}" data-break="{messages.newSet}" data-timestamp="{messages.timestamp}">
2
+ <div class="message-header lh-1 d-flex align-items-center gap-2 text-sm {{{ if !messages.newSet }}}hidden{{{ end }}} pb-2">
3
+ <a href="{config.relative_path}/user/{messages.fromUser.userslug}" class="text-decoration-none">{buildAvatar(messages.fromUser, "18px", true, "not-responsive")}</a>
4
+ <span class="chat-user fw-semibold"><a href="{config.relative_path}/user/{messages.fromUser.userslug}">{messages.fromUser.displayname}</a></span>
5
+ {{{ if ./fromUser.banned }}}
6
6
  <span class="badge bg-danger">[[user:banned]]</span>
7
- <!-- END -->
8
- <!-- IF ../fromUser.deleted -->
7
+ {{{ end }}}
8
+ {{{ if ./fromUser.deleted }}}
9
9
  <span class="badge bg-danger">[[user:deleted]]</span>
10
- <!-- END -->
11
- <small class="chat-timestamp text-muted ms-2 timeago" title="{messages.timestampISO}"></small>
12
- <!-- IF messages.edited -->
13
- <div class="text-muted float-end" title="[[global:edited]] {messages.editedISO}"><i class="fa fa-edit"></i></span></div>
14
- <!-- ENDIF messages.edited -->
10
+ {{{ end }}}
11
+ <span class="chat-timestamp text-muted ms-2 timeago" title="{messages.timestampISO}"></span>
12
+ {{{ if messages.edited }}}
13
+ <div class="text-muted ms-auto" title="[[global:edited-timestamp, {messages.editedISO}]]"><i class="fa fa-edit"></i></span></div>
14
+ {{{ end }}}
15
15
  </div>
16
16
  <div class="message-body-wrapper hover-parent">
17
17
  <div component="chat/message/body" class="message-body ps-0 py-0 overflow-auto">
@@ -1,5 +1,3 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  {{{each messages}}}
4
2
  {{{ if !./system }}}
5
3
  <!-- IMPORT partials/chats/message.tpl -->
@@ -17,12 +17,12 @@
17
17
  <a href="{./path}" class="text-decoration-none notification-chat-content text-reset text text-sm">
18
18
  {./bodyShort}
19
19
  </a>
20
- <div class="text-xs text-muted">{./timeagoLong}</div>
20
+ <div class="text-xs text-muted">{{{ if ./timeagoLong }}}{./timeagoLong}{{{ else }}}<span class="timeago" title="{./datetimeISO}"></span>{{{ end }}}</div>
21
21
  </div>
22
22
  </div>
23
23
  <div class="notification-chat-controls">
24
24
  {{{ if ./nid }}}
25
- <button class="mark-read btn btn-light btn-sm" aria-label="Mark Read">
25
+ <button class="mark-read btn btn-light btn-sm">
26
26
  <i class="unread fa fa-xs fa-circle text-primary {{{ if ./read }}}hidden{{{ end }}}"></i>
27
27
  <i class="read fa fa-xs fa-circle-o text-secondary {{{ if !./read }}}hidden{{{ end }}}"></i>
28
28
  </button>
@@ -39,7 +39,7 @@
39
39
 
40
40
  <a class="permalink text-muted" href="{config.relative_path}/post/{posts.pid}"><span class="timeago" title="{posts.timestampISO}"></span></a>
41
41
 
42
- <i component="post/edit-indicator" class="fa fa-pencil-square<!-- IF privileges.posts:history --> pointer<!-- END --> edit-icon <!-- IF !posts.editor.username -->hidden<!-- ENDIF !posts.editor.username -->"></i>
42
+ <i component="post/edit-indicator" class="fa fa-edit text-muted{{{ if privileges.posts:history }}} pointer{{{ end }}} edit-icon {{{ if !posts.editor.username }}}hidden{{{ end }}}" title="[[global:edited-timestamp, {./editedISO}]]"></i>
43
43
  <span data-editor="{posts.editor.userslug}" component="post/editor" class="visually-hidden">[[global:last_edited_by, {posts.editor.username}]] <span class="timeago" title="{posts.editedISO}"></span></span>
44
44
  </div>
45
45
 
@@ -1,7 +1,7 @@
1
- <a href="{config.relative_path}/user/{./userslug}" class="btn-ghost align-items-start">
2
- {buildAvatar(@value, "48px", true)}
3
- <div class="d-flex flex-1 flex-column">
4
- <div class="fw-semibold">{./displayname}</div>
5
- <div class="text-xs text-muted">@{./username}</div>
1
+ <a href="{config.relative_path}/user/{./userslug}" class="btn-ghost align-items-start justify-content-start">
2
+ {buildAvatar(@value, "48px", true, "flex-shrink-0")}
3
+ <div class="d-flex flex-column text-truncate">
4
+ <div class="fw-semibold text-truncate" title="{./displayname}">{./displayname}</div>
5
+ <div class="text-xs text-muted text-truncate">@{./username}</div>
6
6
  </div>
7
- </a>
7
+ </a>
@@ -1,11 +1,5 @@
1
1
  <div id="users-container" class="users-container row row-cols-2 row-cols-md-3 row-cols-lg-4 row-cols-xl-5 g-2">
2
2
  {{{ each users }}}
3
- <a href="{config.relative_path}/user/{./userslug}" class="btn-ghost align-items-start">
4
- {buildAvatar(@value, "48px", true)}
5
- <div class="d-flex flex-1 flex-column">
6
- <div class="fw-semibold">{./displayname}</div>
7
- <div class="text-xs text-muted">@{./username}</div>
8
- </div>
9
- </a>
3
+ <!-- IMPORT partials/users/item.tpl -->
10
4
  {{{ end }}}
11
5
  </div>