nodebb-theme-harmony 0.0.1 → 0.0.2

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 (139) hide show
  1. package/languages/en-GB/harmony.json +5 -0
  2. package/library.js +101 -26
  3. package/package.json +5 -2
  4. package/plugin.json +14 -2
  5. package/public/harmony.js +101 -0
  6. package/scss/account.scss +38 -0
  7. package/scss/chats.scss +72 -0
  8. package/scss/common.scss +65 -0
  9. package/scss/fonts.scss +17 -0
  10. package/scss/groups.scss +30 -0
  11. package/scss/harmony.scss +23 -3
  12. package/scss/header.scss +16 -0
  13. package/scss/mixins.scss +183 -0
  14. package/scss/modals.scss +4 -0
  15. package/scss/modules/bottom-sheet.scss +52 -0
  16. package/scss/modules/breadcrumbs.scss +16 -0
  17. package/scss/modules/composer.scss +21 -0
  18. package/scss/modules/cover.scss +115 -0
  19. package/scss/modules/tags.scss +6 -0
  20. package/scss/modules/topic-navigator.scss +61 -0
  21. package/scss/modules/topics-list.scss +20 -0
  22. package/scss/modules/user-menu.scss +5 -0
  23. package/scss/overrides.scss +65 -0
  24. package/scss/sidebar.scss +125 -0
  25. package/scss/skins.scss +13 -0
  26. package/scss/status.scss +25 -0
  27. package/scss/topic.scss +128 -0
  28. package/templates/account/best.tpl +0 -2
  29. package/templates/account/blocks.tpl +31 -26
  30. package/templates/account/bookmarks.tpl +0 -2
  31. package/templates/account/categories.tpl +1 -3
  32. package/templates/account/controversial.tpl +0 -2
  33. package/templates/account/downvoted.tpl +0 -2
  34. package/templates/account/followers.tpl +14 -10
  35. package/templates/account/following.tpl +14 -10
  36. package/templates/account/groups.tpl +13 -11
  37. package/templates/account/ignored.tpl +0 -2
  38. package/templates/account/posts.tpl +29 -10
  39. package/templates/account/profile.tpl +76 -159
  40. package/templates/account/topics.tpl +32 -21
  41. package/templates/account/uploads.tpl +38 -35
  42. package/templates/account/upvoted.tpl +0 -2
  43. package/templates/account/watched.tpl +0 -2
  44. package/templates/admin/plugins/harmony.tpl +17 -0
  45. package/templates/categories.tpl +5 -5
  46. package/templates/category.tpl +26 -26
  47. package/templates/chat.tpl +9 -9
  48. package/templates/chats.tpl +5 -7
  49. package/templates/footer.tpl +11 -7
  50. package/templates/groups/details.tpl +76 -62
  51. package/templates/groups/list.tpl +16 -11
  52. package/templates/header.tpl +34 -21
  53. package/templates/login.tpl +51 -45
  54. package/templates/partials/account/admin-menu.tpl +36 -0
  55. package/templates/partials/account/category-item.tpl +17 -17
  56. package/templates/partials/account/header.tpl +77 -35
  57. package/templates/partials/account/sidebar-left.tpl +82 -0
  58. package/templates/partials/breadcrumbs.tpl +4 -12
  59. package/templates/partials/categories/item.tpl +48 -44
  60. package/templates/partials/categories/lastpost.tpl +17 -19
  61. package/templates/partials/categories/link.tpl +5 -13
  62. package/templates/partials/category/sort.tpl +4 -7
  63. package/templates/partials/category/subcategory.tpl +4 -4
  64. package/templates/partials/category/tools.tpl +6 -9
  65. package/templates/partials/category/watch.tpl +7 -11
  66. package/templates/partials/category-filter-content.tpl +5 -6
  67. package/templates/partials/category-filter.tpl +0 -2
  68. package/templates/partials/category-selector-content.tpl +4 -5
  69. package/templates/partials/category-selector.tpl +0 -2
  70. package/templates/partials/chats/dropdown.tpl +24 -32
  71. package/templates/partials/chats/message-window.tpl +7 -7
  72. package/templates/partials/chats/message.tpl +34 -34
  73. package/templates/partials/chats/recent_room.tpl +16 -29
  74. package/templates/partials/chats/system-message.tpl +4 -4
  75. package/templates/partials/chats/user.tpl +1 -3
  76. package/templates/partials/groups/admin.tpl +82 -175
  77. package/templates/partials/groups/badge.tpl +1 -3
  78. package/templates/partials/groups/invited.tpl +31 -0
  79. package/templates/partials/groups/list.tpl +14 -21
  80. package/templates/partials/groups/memberlist.tpl +28 -24
  81. package/templates/partials/groups/pending.tpl +28 -0
  82. package/templates/partials/groups/sidebar-left.tpl +27 -0
  83. package/templates/partials/mobile-footer.tpl +70 -0
  84. package/templates/partials/notifications_list.tpl +19 -27
  85. package/templates/partials/paginator.tpl +22 -24
  86. package/templates/partials/post_bar.tpl +23 -18
  87. package/templates/partials/posts_list.tpl +0 -2
  88. package/templates/partials/posts_list_item.tpl +14 -29
  89. package/templates/partials/quick-search-results.tpl +36 -25
  90. package/templates/partials/search-results.tpl +4 -1
  91. package/templates/partials/sidebar/chats.tpl +53 -0
  92. package/templates/partials/sidebar/drafts.tpl +41 -0
  93. package/templates/partials/sidebar/logged-out-menu.tpl +38 -0
  94. package/templates/partials/sidebar/notifications.tpl +28 -0
  95. package/templates/partials/sidebar/search-mobile.tpl +29 -0
  96. package/templates/partials/sidebar/search.tpl +30 -0
  97. package/templates/partials/sidebar/user-menu.tpl +87 -0
  98. package/templates/partials/sidebar-left.tpl +40 -0
  99. package/templates/partials/sidebar-right.tpl +41 -0
  100. package/templates/partials/skin-switcher.tpl +35 -0
  101. package/templates/partials/tags_list.tpl +0 -2
  102. package/templates/partials/toast.tpl +6 -8
  103. package/templates/partials/topic/event.tpl +4 -20
  104. package/templates/partials/topic/navigator.tpl +20 -41
  105. package/templates/partials/topic/necro-post.tpl +5 -4
  106. package/templates/partials/topic/post-menu.tpl +23 -2
  107. package/templates/partials/topic/post-placeholder.tpl +15 -0
  108. package/templates/partials/topic/post.tpl +67 -64
  109. package/templates/partials/topic/quickreply.tpl +12 -14
  110. package/templates/partials/topic/reactions.tpl +0 -2
  111. package/templates/partials/topic/reply-button.tpl +16 -20
  112. package/templates/partials/topic/selection-tooltip.tpl +0 -2
  113. package/templates/partials/topic/sort.tpl +8 -6
  114. package/templates/partials/topic/stats.tpl +15 -14
  115. package/templates/partials/topic/tag.tpl +1 -3
  116. package/templates/partials/topic/tags.tpl +1 -5
  117. package/templates/partials/topic/tools.tpl +13 -0
  118. package/templates/partials/topic/watch.tpl +15 -13
  119. package/templates/partials/topic-filters.tpl +4 -5
  120. package/templates/partials/topic-list-bar.tpl +54 -0
  121. package/templates/partials/topic-terms.tpl +4 -5
  122. package/templates/partials/topics_list.tpl +109 -100
  123. package/templates/partials/users/item.tpl +7 -0
  124. package/templates/partials/users_list.tpl +11 -60
  125. package/templates/partials/users_list_menu.tpl +10 -18
  126. package/templates/popular.tpl +1 -18
  127. package/templates/recent.tpl +8 -24
  128. package/templates/register.tpl +74 -60
  129. package/templates/tag.tpl +3 -15
  130. package/templates/tags.tpl +3 -4
  131. package/templates/top.tpl +1 -18
  132. package/templates/topic.tpl +39 -43
  133. package/templates/unread.tpl +1 -22
  134. package/templates/users.tpl +17 -17
  135. package/templates/admin/plugins/persona.tpl +0 -29
  136. package/templates/partials/account/menu.tpl +0 -103
  137. package/templates/partials/header/user-menu.tpl +0 -87
  138. package/templates/partials/menu.tpl +0 -188
  139. package/templates/partials/thread_tools.tpl +0 -10
@@ -0,0 +1,25 @@
1
+ .status {
2
+ padding: 3px;
3
+
4
+ &.online {
5
+ background-color: $success;
6
+ }
7
+
8
+ &.away {
9
+ background-color: $warning;
10
+ }
11
+
12
+ &.dnd {
13
+ background-color: $danger;
14
+ }
15
+
16
+ &.offline {
17
+ background-color: $gray-600;
18
+ }
19
+ }
20
+
21
+ @include media-breakpoint-up(sm) {
22
+ .status {
23
+ padding: 5px;
24
+ }
25
+ }
@@ -0,0 +1,128 @@
1
+ .page-topic {
2
+ [component="topic/title"] {
3
+ font-size: 28px;
4
+ line-height: 34px;
5
+ font-weight: $font-weight-semibold;
6
+ }
7
+
8
+ .tag-list:empty {
9
+ display: none !important;
10
+ }
11
+
12
+ [component="topic/reply"], [component="topic/reply/locked"], [component="topic/reply/guest"] {
13
+ font-size: 14px;
14
+ line-height: 20px;
15
+ }
16
+
17
+ .action-bar {
18
+ .dropdown-toggle::after {
19
+ border: none;
20
+ font-family: "FontAwesome";
21
+ content: "\f078";
22
+ color: tint-color($primary, 40%);
23
+
24
+ position: relative;
25
+ top: 2px;
26
+ }
27
+ }
28
+
29
+ .topic {
30
+ .posts {
31
+ max-width: 960px;
32
+ // fixes code blocks pushing content out on mobile
33
+ @include media-breakpoint-down(md) {
34
+ max-width: calc(100vw - $grid-gutter-width);
35
+ }
36
+ list-style-type: none;
37
+
38
+ &.timeline {
39
+ @include timeline-style;
40
+ }
41
+
42
+ .post-header {
43
+ font-size: 13px;
44
+ line-height: 20px;
45
+
46
+ .bookmarked {
47
+ transition: $transition-fade;
48
+ }
49
+ }
50
+
51
+ [component="post"] {
52
+ &.deleted {
53
+ opacity: .5;
54
+ }
55
+
56
+ [component="post/content"] {
57
+ pre {
58
+ max-height: calc($font-size-base * 24);
59
+ }
60
+ }
61
+
62
+ > [component="post/footer"] {
63
+ margin-left: calc($spacer * 2.5);
64
+ }
65
+ }
66
+
67
+ [component="post/reply-count"] {
68
+ font-size: $font-size-base * .75;
69
+ }
70
+ }
71
+ }
72
+
73
+ .quick-reply {
74
+ max-width: 960px;
75
+ @include topic-avatars();
76
+ }
77
+
78
+ [component="post/replies/container"] {
79
+ &:empty {
80
+ display: none;
81
+ }
82
+
83
+ .icon {
84
+ display: none !important;
85
+ }
86
+
87
+ .post-header .icon {
88
+ display: initial !important;
89
+
90
+ .status {
91
+ display: none;
92
+ }
93
+ }
94
+
95
+ .timeline-event {
96
+ display: none !important;
97
+ }
98
+
99
+ [component="post"] {
100
+ padding-top: 0 !important;
101
+
102
+ &:last-of-type {
103
+ .post-footer {
104
+ border-bottom: none !important;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ @include media-breakpoint-up(sm) {
112
+ .page-topic {
113
+ .topic .posts {
114
+ [component="post"] {
115
+ [component="post/actions"] {
116
+ opacity: 0;
117
+ transition: $transition-fade;
118
+ }
119
+
120
+ &:hover {
121
+ > .post-footer > [component="post/actions"] {
122
+ opacity: 1;
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
@@ -1,3 +1 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <!-- IMPORT account/posts.tpl -->
@@ -1,35 +1,40 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <div class="account">
4
2
  <!-- IMPORT partials/account/header.tpl -->
5
- <h1>[[pages:account/blocks, {username}]]</h1>
6
- <div class="row justify-content-end mb-2">
7
- <div class="col-3">
8
- <div class="dropdown">
9
- <input class="form-control" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
3
+ <div class="row gx-5">
4
+ <!-- IMPORT partials/account/sidebar-left.tpl -->
5
+ <div class="col-12 col-md-9 col-lg-10 ps-md-5">
6
+ <div class="d-flex justify-content-between mb-3">
7
+ <h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
8
+ <div class="justify-content-end">
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
11
 
11
- <ul class="dropdown-menu block-edit list-unstyled">
12
- <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
13
- {{{ each edit }}}
14
- <li class="">
15
- <div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between">
16
- <div class="text-truncate">
17
- <a href="{config.relative_path}/uid/{../uid}">{buildAvatar(edit, "24px", true)} {../username}</a>
18
- </div>
19
- <button class="btn btn-sm btn-primary text-nowrap" data-uid="{../uid}" data-action="toggle">[[user:block_toggle]]</button>
20
- </div>
21
- </li>
12
+ <ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end block-edit overflow-auto" style="max-height:300px;">
13
+ <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
14
+ {{{ each edit }}}
15
+ <li class="">
16
+ <div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between">
17
+ <div class="text-truncate">
18
+ <a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
19
+ </div>
20
+ <button class="btn btn-sm btn-primary text-nowrap" data-uid="{./uid}" data-action="toggle">[[user:block_toggle]]</button>
21
+ </div>
22
+ </li>
23
+ {{{ end }}}
24
+ </ul>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <div class="users">
29
+ <div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
30
+ {{{ each users }}}
31
+ <!-- IMPORT partials/users/item.tpl -->
22
32
  {{{ end }}}
23
- </ul>
33
+ </div>
34
+ <div class="alert alert-warning text-center"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has_no_blocks]]</div>
35
+ <!-- IMPORT partials/paginator.tpl -->
24
36
  </div>
25
37
  </div>
26
- </div>
27
38
 
28
- <div class="users row">
29
- <div class="col-12">
30
- <!-- IMPORT partials/users_list.tpl -->
31
- <div class="alert alert-warning text-center"<!-- IF users.length --> style="display: none;"<!-- END -->>[[user:has_no_blocks]]</div>
32
- <!-- IMPORT partials/paginator.tpl -->
33
- </div>
34
39
  </div>
35
40
  </div>
@@ -1,3 +1 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <!-- IMPORT account/posts.tpl -->
@@ -1,10 +1,8 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <div class="account">
4
2
  <!-- IMPORT partials/account/header.tpl -->
5
3
 
6
4
  <div class="row">
7
- <h1>{title}</h1>
5
+ <h3 class="fw-semibold fs-4">{title}</h3>
8
6
  <div class="col-lg-12 mb-2">
9
7
  <div class="btn-group bottom-sheet" component="category/watch/all">
10
8
  <button class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button">
@@ -1,3 +1 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <!-- IMPORT account/posts.tpl -->
@@ -1,3 +1 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <!-- IMPORT account/posts.tpl -->
@@ -1,19 +1,23 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <div class="account">
4
2
  <!-- IMPORT partials/account/header.tpl -->
5
3
 
6
- <div class="users row">
7
- <div class="col-12">
8
- <h1>[[pages:{template.name}, {username}]]</h1>
4
+ <div class="row gx-5">
5
+ <!-- IMPORT partials/account/sidebar-left.tpl -->
6
+
7
+ <div class="col-12 col-md-9 col-lg-10 ps-md-5">
8
+ <h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
9
9
 
10
- <!-- IMPORT partials/users_list.tpl -->
10
+ {{{ if !users.length }}}
11
+ <div class="alert alert-warning text-center">[[user:has_no_follower]]</div>
12
+ {{{ end }}}
11
13
 
12
- <!-- IF !users.length -->
13
- <div class="alert alert-warning text-center">[[user:has_no_follower]]</div>
14
- <!-- ENDIF !users.length -->
14
+ <div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
15
+ {{{ each users }}}
16
+ <!-- IMPORT partials/users/item.tpl -->
17
+ {{{end}}}
18
+ </div>
15
19
 
16
- <!-- IMPORT partials/paginator.tpl -->
20
+ <!-- IMPORT partials/paginator.tpl -->
17
21
  </div>
18
22
  </div>
19
23
  </div>
@@ -1,19 +1,23 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <div class="account">
4
2
  <!-- IMPORT partials/account/header.tpl -->
5
3
 
6
- <div class="users row">
7
- <div class="col-12">
8
- <h1>[[pages:{template.name}, {username}]]</h1>
4
+ <div class="row gx-5">
5
+ <!-- IMPORT partials/account/sidebar-left.tpl -->
6
+
7
+ <div class="col-12 col-md-9 col-lg-10 ps-md-5">
8
+ <h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
9
9
 
10
- <!-- IMPORT partials/users_list.tpl -->
10
+ {{{ if !users.length }}}
11
+ <div class="alert alert-warning text-center">[[user:follows_no_one]]</div>
12
+ {{{ end }}}
11
13
 
12
- <!-- IF !users.length -->
13
- <div class="alert alert-warning text-center">[[user:follows_no_one]]</div>
14
- <!-- ENDIF !users.length -->
14
+ <div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
15
+ {{{ each users }}}
16
+ <!-- IMPORT partials/users/item.tpl -->
17
+ {{{end}}}
18
+ </div>
15
19
 
16
- <!-- IMPORT partials/paginator.tpl -->
20
+ <!-- IMPORT partials/paginator.tpl -->
17
21
  </div>
18
22
  </div>
19
23
  </div>
@@ -1,18 +1,20 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <div class="account">
4
2
  <!-- IMPORT partials/account/header.tpl -->
5
3
 
6
- <div class="row">
7
- <h1>[[pages:{template.name}, {username}]]</h1>
4
+ <div class="row gx-5">
5
+ <!-- IMPORT partials/account/sidebar-left.tpl -->
6
+
7
+ <div class="col-12 col-md-9 col-lg-10 ps-md-5">
8
+ <h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
8
9
 
9
- <div class="col-12 groups list">
10
- <div component="groups/container" id="groups-list" class="row">
11
- <!-- IF !groups.length -->
12
- <div class="alert alert-warning text-center">[[groups:no_groups_found]]</div>
13
- <!-- ELSE -->
14
- <!-- IMPORT partials/groups/list.tpl -->
15
- <!-- ENDIF !groups.length -->
10
+ <div class="groups">
11
+ <div component="groups/container" id="groups-list" class="row">
12
+ {{{ if !groups.length }}}
13
+ <div class="alert alert-warning text-center">[[groups:no_groups_found]]</div>
14
+ {{{ else }}}
15
+ <!-- IMPORT partials/groups/list.tpl -->
16
+ {{{ end }}}
17
+ </div>
16
18
  </div>
17
19
  </div>
18
20
  </div>
@@ -1,3 +1 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <!-- IMPORT account/topics.tpl -->
@@ -1,21 +1,40 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  <div class="account">
4
2
  <!-- IMPORT partials/account/header.tpl -->
5
3
 
6
- <div class="row">
7
- <h1>{title}</h1>
4
+ <div class="row gx-5">
5
+ <!-- IMPORT partials/account/sidebar-left.tpl -->
6
+ <div class="col-12 col-md-9 col-lg-10 ps-md-5">
7
+ <div class="d-flex justify-content-between align-items-center mb-3">
8
+ <h3 class="fw-semibold fs-5 mb-0">[[global:posts]]</h3>
9
+ <div class="d-flex gap-1">
10
+ <a href="{config.relative_path}/user/{userslug}/posts" class="btn-ghost-sm fw-semibold {{{ if template.account/posts }}}active{{{ end }}}">[[global:header.recent]]</a>
11
+ {{{ if !reputation:disabled }}}
12
+ <a href="{config.relative_path}/user/{userslug}/best"class="btn-ghost-sm fw-semibold {{{ if template.account/best }}}active{{{ end }}}">[[global:best]]</a>
13
+ <a href="{config.relative_path}/user/{userslug}/controversial" class="btn-ghost-sm fw-semibold {{{ if template.account/controversial }}}active{{{ end }}}">[[global:controversial]]</a>
14
+ {{{ if canEdit }}}
15
+ <a href="{config.relative_path}/user/{userslug}/upvoted" class="btn-ghost-sm fw-semibold {{{ if template.account/upvoted }}}active{{{ end }}}">[[global:upvoted]]</a>
16
+ {{{ if !downvote:disabled }}}
17
+ <a href="{config.relative_path}/user/{userslug}/downvoted" class="btn-ghost-sm fw-semibold {{{ if template.account/downvoted }}}active{{{ end }}}">[[global:downvoted]]</a>
18
+ {{{ end }}}
19
+ {{{ end }}}
20
+ {{{ end }}}
21
+ {{{ if canEdit }}}
22
+ <a href="{config.relative_path}/user/{userslug}/bookmarks" class="btn-ghost-sm fw-semibold {{{ if template.account/bookmarks }}}active{{{ end }}}">[[user:bookmarks]]</a>
23
+ {{{ end }}}
24
+ </div>
25
+ </div>
8
26
 
9
- <!-- IF !posts.length -->
27
+ {{{ if !posts.length }}}
10
28
  <div class="alert alert-warning text-center">{noItemsFoundKey}</div>
11
- <!-- ENDIF !posts.length -->
29
+ {{{ end }}}
12
30
 
13
- <div class="col-12">
14
- <!-- IMPORT partials/posts_list.tpl -->
31
+ <div class="">
32
+ <!-- IMPORT partials/posts_list.tpl -->
15
33
 
16
- <!-- IF config.usePagination -->
34
+ {{{ if config.usePagination }}}
17
35
  <!-- IMPORT partials/paginator.tpl -->
18
- <!-- ENDIF config.usePagination -->
36
+ {{{ end }}}
37
+ </div>
19
38
  </div>
20
39
  </div>
21
40
  </div>