nodebb-theme-harmony 1.1.108 → 1.2.1

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.
Files changed (57) hide show
  1. package/package.json +1 -1
  2. package/scss/chats.scss +2 -126
  3. package/scss/common.scss +3 -60
  4. package/scss/overrides.scss +0 -14
  5. package/templates/account/categories.tpl +1 -1
  6. package/templates/account/posts.tpl +6 -6
  7. package/templates/account/topics.tpl +3 -3
  8. package/templates/flags/detail.tpl +4 -4
  9. package/templates/groups/list.tpl +3 -3
  10. package/templates/notifications.tpl +1 -1
  11. package/templates/partials/account/sidebar-left.tpl +16 -16
  12. package/templates/partials/category/filter-dropdown-content.tpl +1 -1
  13. package/templates/partials/category/selector-dropdown-content.tpl +1 -1
  14. package/templates/partials/category/sort.tpl +1 -1
  15. package/templates/partials/category/subcategory.tpl +1 -1
  16. package/templates/partials/category/tools.tpl +1 -1
  17. package/templates/partials/category/watch.tpl +1 -1
  18. package/templates/partials/flags/filters.tpl +8 -8
  19. package/templates/partials/groups/filter-dropdown-content.tpl +2 -2
  20. package/templates/partials/groups/sidebar-left.tpl +5 -5
  21. package/templates/partials/post_bar.tpl +1 -1
  22. package/templates/partials/quick-search-results.tpl +1 -1
  23. package/templates/partials/search-filters.tpl +8 -8
  24. package/templates/partials/tags/filter-dropdown-content.tpl +1 -1
  25. package/templates/partials/tags/watch.tpl +1 -1
  26. package/templates/partials/tags_list.tpl +1 -1
  27. package/templates/partials/topic/navigator.tpl +2 -2
  28. package/templates/partials/topic/post-menu.tpl +1 -1
  29. package/templates/partials/topic/post.tpl +2 -2
  30. package/templates/partials/topic/quickreply.tpl +1 -1
  31. package/templates/partials/topic/sort.tpl +1 -1
  32. package/templates/partials/topic/tools.tpl +1 -1
  33. package/templates/partials/topic/watch.tpl +1 -1
  34. package/templates/partials/topic-filters.tpl +1 -1
  35. package/templates/partials/topic-terms.tpl +1 -1
  36. package/templates/partials/users/filter-dropdown-content.tpl +2 -2
  37. package/templates/partials/users/item.tpl +1 -1
  38. package/templates/partials/users_list_menu.tpl +5 -5
  39. package/templates/post-queue.tpl +4 -4
  40. package/templates/chat.tpl +0 -37
  41. package/templates/chats.tpl +0 -54
  42. package/templates/partials/chats/add-reaction.tpl +0 -1
  43. package/templates/partials/chats/composer.tpl +0 -27
  44. package/templates/partials/chats/dropdown.tpl +0 -10
  45. package/templates/partials/chats/message-window.tpl +0 -43
  46. package/templates/partials/chats/message.tpl +0 -73
  47. package/templates/partials/chats/messages.tpl +0 -7
  48. package/templates/partials/chats/options.tpl +0 -100
  49. package/templates/partials/chats/parent.tpl +0 -13
  50. package/templates/partials/chats/pinned-messages-list.tpl +0 -32
  51. package/templates/partials/chats/pinned-messages.tpl +0 -12
  52. package/templates/partials/chats/reactions.tpl +0 -1
  53. package/templates/partials/chats/recent_room.tpl +0 -55
  54. package/templates/partials/chats/scroll-up-alert.tpl +0 -3
  55. package/templates/partials/chats/system-message.tpl +0 -7
  56. package/templates/partials/chats/user-list.tpl +0 -11
  57. package/templates/partials/chats/user.tpl +0 -1
@@ -1,100 +0,0 @@
1
- <div class="d-flex gap-1 align-items-stretch">
2
- <!-- search -->
3
- <button class="btn-ghost-sm" component="chat/room/search/toggle" data-manual-tooltip="1" title="[[global:header.search]]">
4
- <i class="fa fa-search text-muted"></i>
5
- </button>
6
- <div component="chat/room/search/container" class="position-relative hidden align-self-center">
7
- <input component="chat/room/search" class="form-control form-control-sm" placeholder="[[search:type-to-search]]" style="width: 150px;">
8
- <a component="chat/room/search/clear" href="#" class="hidden px-2 py-1 position-absolute top-50 end-0 translate-middle-y">
9
- <i class="fa fa-times text-muted opacity-75"></i>
10
- </a>
11
- </div>
12
-
13
-
14
- <!-- notification dropdown -->
15
- <div class="dropdown d-flex" data-manual-tooltip="1" title="[[modules:chat.notification-settings]]" component="chat/notification/setting">
16
- <button class="btn-ghost-sm position-relative" data-bs-toggle="dropdown">
17
- <i class="fa fa-bell text-muted"></i>
18
- <span class="position-absolute top-0 end-0 text-xs text-muted opacity-50" style="font-size: 10px!important; padding: 1px; line-height: 10px;">
19
- <i component="chat/notification/setting/icon" class="fa {notificationOptionsIcon}"></i>
20
- </span>
21
- </button>
22
- <ul class="dropdown-menu dropdown-menu-end p-1 text-sm">
23
- {{{ each notificationOptions }}}
24
- <li>
25
- <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" data-value="{./value}" data-icon="{./icon}">
26
- <div class="d-flex flex-column gap-1">
27
- <div class="d-flex align-items-center gap-2">
28
- <div class="flex-grow-1">{./label}</div>
29
- <i class="flex-shrink-0 fa fa-fw fa-check {{{ if !./selected }}}hidden{{{ end }}}"></i>
30
- </div>
31
- {{{ if @first}}}
32
- <div component="chat/notification/setting/sub-label" class="text-sm text-muted">{./subLabel}</div>
33
- {{{ end }}}
34
- </div>
35
- </a>
36
- </li>
37
-
38
- {{{ if @first }}}
39
- <li><hr class="dropdown-divider"></li>
40
- {{{ end }}}
41
- {{{ end }}}
42
- </ul>
43
- </div>
44
-
45
- <!-- pinned messages -->
46
- <button component="chat/pinned/messages/btn" class="btn-ghost-sm d-none d-lg-flex flex-nowrap" title="[[modules:chat.pinned-messages]]" data-bs-toggle="tooltip" data-bs-placement="bottom">
47
- <i class="fa fa-thumb-tack text-muted"></i>
48
- </button>
49
-
50
- <!-- manage/options dropdown -->
51
- <div class="dropdown d-flex" data-manual-tooltip="1" title="[[modules:chat.options]]">
52
- <button class="btn-ghost-sm" data-bs-toggle="dropdown" component="chat/controlsToggle">
53
- <i class="fa fa-gear text-muted"></i>
54
- </button>
55
- <ul class="dropdown-menu dropdown-menu-end p-1 text-sm" component="chat/controls">
56
- <li>
57
- <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" data-action="manage">
58
- <i class="fa fa-fw text-muted fa-cog"></i> [[modules:chat.manage-room]]
59
- </a>
60
- </li>
61
- {{{ if isOwner }}}
62
- <li>
63
- <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" data-action="rename">
64
- <i class="fa fa-fw text-muted fa-edit"></i> [[modules:chat.rename-room]]
65
- </a>
66
- </li>
67
- {{{ end }}}
68
- <li>
69
- <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" data-action="leave">
70
- <i class="fa fa-fw text-muted fa-sign-out"></i> [[modules:chat.leave-room]]
71
- </a>
72
- </li>
73
- {{{ if (public && isAdmin) }}}
74
- <li>
75
- <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" data-action="delete">
76
- <i class="fa fa-fw text-danger fa-trash"></i> [[modules:chat.delete-room]]
77
- </a>
78
- </li>
79
- {{{ end }}}
80
- </ul>
81
- </div>
82
-
83
- <!-- users toggle -->
84
- {{{ if users.length }}}
85
- <div component="chat/user/list/btn" class="btn-ghost-sm d-none d-lg-flex flex-nowrap gap-3" title="[[modules:chat.view-users-list]]" data-bs-toggle="tooltip" data-bs-placement="bottom">
86
- <div class="d-flex text-nowrap">
87
- {{{ if ./users.0 }}}
88
- <span style="width: 18px; z-index: 3;" class="text-decoration-none" href="{config.relative_path}/user/{./users.0.userslug}">{buildAvatar(./users.0, "24px", true)}</span>
89
- {{{ end }}}
90
- {{{ if ./users.1 }}}
91
- <span style="width: 18px; z-index: 2;" class="text-decoration-none" href="{config.relative_path}/user/{./users.1.userslug}">{buildAvatar(./users.1, "24px", true)}</span>
92
- {{{ end }}}
93
- {{{ if ./users.2 }}}
94
- <span style="width: 18px; z-index: 1;" class="text-decoration-none" href="{config.relative_path}/user/{./users.2.userslug}">{buildAvatar(./users.2, "24px", true)}</span>
95
- {{{ end }}}
96
- </div>
97
- {./userCount}
98
- </div>
99
- {{{ end }}}
100
- </div>
@@ -1,13 +0,0 @@
1
- <div class="d-flex ms-4 mb-2 align-items-center">
2
- <div component="chat/message/parent" data-parent-mid="{messages.parent.mid}" data-uid="{messages.parent.fromuid}" class="btn-ghost-sm align-items-start flex-row w-100">
3
- <div class="d-flex gap-2 text-sm text-nowrap">
4
- <div><i class="fa fa-sm fa-reply opacity-50"></i></div>
5
- <div class="d-flex flex-nowrap gap-1 align-items-center">
6
- <a href="{config.relative_path}/user/{messages.parent.user.userslug}" class="text-decoration-none lh-1">{buildAvatar(messages.parent.user, "14px", true, "not-responsive align-middle")}</a>
7
- <a class="chat-user fw-semibold" href="{config.relative_path}/user/{messages.parent.user.userslug}">{messages.parent.user.displayname}</a>
8
- </div>
9
- <span class="chat-timestamp text-muted timeago text-nowrap hidden" title="{messages.parent.timestampISO}"></span>
10
- </div>
11
- <div component="chat/message/parent/content" class="text-muted line-clamp-1 w-100">{messages.parent.content}</div>
12
- </div>
13
- </div>
@@ -1,32 +0,0 @@
1
- {{{ each messages }}}
2
- <li component="chat/message" class="chat-message mx-2 pe-2 {{{ if messages.deleted }}} deleted{{{ end }}} {{{ if messages.pinned}}} pinned{{{ end }}} border-top pt-3" data-mid="{messages.messageId}" data-uid="{messages.fromuid}" data-self="{messages.self}" data-timestamp="{messages.timestamp}" data-username="{messages.fromUser.username}" data-index="{./index}">
3
-
4
- {{{ if messages.parent }}}
5
- <!-- IMPORT partials/chats/parent.tpl -->
6
- {{{ end }}}
7
-
8
- <div class="message-header lh-1 d-flex align-items-center gap-2 text-sm pb-2">
9
- <a href="{config.relative_path}/user/{messages.fromUser.userslug}" class="text-decoration-none">{buildAvatar(messages.fromUser, "18px", true, "not-responsive")}</a>
10
- <span class="chat-user fw-semibold"><a href="{config.relative_path}/user/{messages.fromUser.userslug}">{messages.fromUser.displayname}</a></span>
11
-
12
- <span class="chat-timestamp text-muted timeago" title="{messages.timestampISO}"></span>
13
- <div component="chat/message/edited" class="text-muted ms-auto {{{ if !messages.edited }}}hidden{{{ end }}}" title="[[global:edited-timestamp, {isoTimeToLocaleString(messages.editedISO, config.userLang)}]]"><i class="fa fa-edit"></i></span></div>
14
- </div>
15
- <div class="message-body-wrapper">
16
- <div component="chat/message/body" class="message-body ps-0 py-0 overflow-auto text-break">
17
- {messages.content}
18
- </div>
19
- <div component="chat/message/controls" class="position-relative">
20
- <div class="btn-group border shadow-sm controls position-absolute bg-body end-0" style="bottom:1rem;">
21
- {{{ if (isAdminOrGlobalMod || (!config.disableChatMessageEditing && messages.self)) }}}
22
- <button class="btn btn-sm btn-link" data-action="edit" title="[[topic:edit]]"><i class="fa fa-pencil"></i></button>
23
- {{{ end }}}
24
- {{{ if (isAdminOrGlobalMod || isOwner )}}}
25
- <button class="btn btn-sm btn-link" data-action="pin" title="[[modules:chat.pin-message]]"><i class="fa fa-thumbtack"></i></button>
26
- <button class="btn btn-sm btn-link" data-action="unpin" title="[[modules:chat.unpin-message]]"><i class="fa fa-thumbtack fa-rotate-90"></i></button>
27
- {{{ end }}}
28
- </div>
29
- </div>
30
- </div>
31
- </li>
32
- {{{ end }}}
@@ -1,12 +0,0 @@
1
- <div component="chat/messages/pinned/container" class="d-flex flex-column expanded-chat border-start hidden" style="min-width:340px; width: 340px;">
2
- <h3 class="fs-6 p-1 mb-0 text-center text-secondary">[[modules:chat.pinned-messages]]</h3>
3
-
4
- <div component="chat/messages/pinned/empty" class="text-center p-4 d-flex flex-column">
5
- <div class="p-4"><i class="fa-solid fa-wind fs-2 text-muted"></i></div>
6
- <div class="text-xs fw-semibold text-muted">[[modules:chat.no-pinned-messages]]</div>
7
- </div>
8
-
9
- <ul component="chat/messages/pinned" class="chat-content list-unstyled d-flex flex-column gap-1 p-1 overflow-auto">
10
-
11
- </ul>
12
- </div>
@@ -1 +0,0 @@
1
- <!-- This partial intentionally left blank; overwritten by nodebb-plugin-reactions -->
@@ -1,55 +0,0 @@
1
- {{{ if (loadingMore && @first)}}}
2
- <hr class="my-1" />
3
- {{{ end }}}
4
- <div component="chat/recent/room" data-roomid="{./roomId}" data-full="1" class="rounded-1 {{{ if ./unread }}}unread{{{ end }}}">
5
- <div class="d-flex gap-1 justify-content-between">
6
- <div class="chat-room-btn position-relative d-flex flex-grow-1 gap-2 justify-content-start align-items-start btn-ghost-sm ff-sans">
7
- <div class="main-avatar">
8
- {{{ if ./users.length }}}
9
- {{{ if ./groupChat}}}
10
- <div class="position-relative stacked-avatars">
11
- <span class="text-decoration-none position-absolute" href="{config.relative_path}/user/{./users.1.userslug}">{buildAvatar(./users.1, "24px", true)}</span>
12
- <span class="text-decoration-none position-absolute" href="{config.relative_path}/user/{./users.0.userslug}" >{buildAvatar(./users.0, "24px", true)}</span>
13
- </div>
14
- {{{ else }}}
15
- <span href="{config.relative_path}/user/{./users.0.userslug}" class="text-decoration-none">{buildAvatar(./users.0, "32px", true)}</span>
16
- {{{ end }}}
17
- {{{ else }}}
18
- <span class="avatar avatar-rounded text-bg-warning" component="avatar/icon" style="--avatar-size: 32px;">?</span>
19
- {{{ end }}}
20
- </div>
21
-
22
- <div class="d-flex flex-grow-1 flex-column w-100">
23
- <div component="chat/room/title" class="room-name fw-semibold text-xs text-break">
24
- {{{ if ./roomName}}}
25
- {./roomName}
26
- {{{ else }}}
27
- {{{ if !./lastUser.uid }}}
28
- [[modules:chat.no-users-in-room]]
29
- {{{ else }}}
30
- {./usernames}
31
- {{{ end }}}
32
- {{{ end }}}
33
- </div>
34
-
35
- {{{ if ./teaser }}}
36
- <div class="teaser-content text-sm line-clamp-3 text-break">
37
- <span href="#" class="text-decoration-none">{buildAvatar(./teaser.user, "14px", true)}</span>
38
- <strong class="text-xs fw-semibold teaser-username">{./teaser.user.username}:</strong>
39
- {./teaser.content}
40
- </div>
41
- <div class="teaser-timestamp text-muted text-xs">{{{ if ./teaser.timeagoLong }}}{./teaser.timeagoLong}{{{ else }}}<span class="timeago" title="{./teaser.timestampISO}"></span>{{{ end }}}</div>
42
- {{{ end }}}
43
- </div>
44
- </div>
45
- <div>
46
- <button class="mark-read btn-ghost-sm" style="width: 1.5rem; height: 1.5rem;">
47
- <i class="unread fa fa-2xs fa-circle text-primary {{{ if !./unread }}}hidden{{{ end }}}"></i>
48
- <i class="read fa fa-2xs fa-circle-o text-secondary {{{ if ./unread }}}hidden{{{ end }}}"></i>
49
- </button>
50
- </div>
51
- </div>
52
- </div>
53
- {{{ if !@last }}}
54
- <hr class="my-1" />
55
- {{{ end }}}
@@ -1,3 +0,0 @@
1
- <div class="position-relative">
2
- <div component="chat/messages/scroll-up-alert" class="py-1 mt-1 position-absolute start-50 top-50 translate-middle text-sm scroll-up-alert alert alert-info d-none d-md-block text-nowrap hidden" role="button" style="z-index: 500;"><i class="fa fa-fw fa-arrow-down"></i> [[modules:chat.scroll-up-alert]]</div>
3
- </div>
@@ -1,7 +0,0 @@
1
- <li component="chat/system-message" class="system-message text-muted small py-2 gap-3 d-flex align-items-center justify-content-center" data-mid="{messages.messageId}" data-uid="{messages.fromuid}" data-index="{messages.index}" data-self="{messages.self}" data-break="0" data-timestamp="{messages.timestamp}">
2
- <hr class="d-inline-block my-1" style="width: 10%;"/>
3
- <div>
4
- [[modules:chat.system.{messages.content}, {messages.fromUser.username}, {messages.timestampISO}]]
5
- </div>
6
- <hr class="d-inline-block my-1" style="width: 10%;"/>
7
- </li>
@@ -1,11 +0,0 @@
1
- <div component="chat/user/list" class="border-start hidden d-flex flex-column gap-1 p-1 overflow-auto" style="min-width:240px; width: 240px;">
2
- {{{ each users }}}
3
- <a data-index="{./index}" data-uid="{./uid}" class="btn-ghost-sm d-flex justify-content-start align-items-center gap-2 {{{ if ./online }}}online{{{ end}}}" href="{config.relative_path}/uid/{./uid}">
4
- <div>{buildAvatar(users, "24px", true)}</div>
5
- <div class="d-flex gap-1 flex-grow-1 text-nowrap text-truncate">
6
- <span component="chat/user/list/username" class="text-truncate">{./username}</span>
7
- {{{ if ./isOwner }}}<span><i class="fa fa-star text-warning" data-bs-toggle="tooltip" title="[[modules:chat.owner]]"></i></span>{{{ end }}}
8
- </div>
9
- </a>
10
- {{{ end }}}
11
- </div>
@@ -1 +0,0 @@
1
- <a href="{config.relative_path}/user/{rooms.users.userslug}" class="text-decoration-none">{buildAvatar(rooms.users, "32px", true)}</a>