nodebb-theme-harmony 2.0.0-pre.8 → 2.0.0

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 (94) hide show
  1. package/README.md +3 -0
  2. package/library.js +1 -7
  3. package/package-lock.json +372 -402
  4. package/package.json +2 -2
  5. package/plugin.json +1 -2
  6. package/public/harmony.js +15 -15
  7. package/scss/common.scss +2 -8
  8. package/scss/harmony.scss +0 -1
  9. package/scss/header.scss +1 -1
  10. package/scss/mixins.scss +12 -5
  11. package/scss/modules/cover.scss +2 -4
  12. package/scss/modules/topics-list.scss +1 -1
  13. package/scss/overrides.scss +4 -0
  14. package/scss/sidebar.scss +18 -19
  15. package/scss/skins.scss +9 -0
  16. package/scss/topic.scss +4 -12
  17. package/templates/account/blocks.tpl +18 -7
  18. package/templates/account/categories.tpl +1 -1
  19. package/templates/account/consent.tpl +2 -2
  20. package/templates/account/edit/password.tpl +8 -8
  21. package/templates/account/edit/username.tpl +2 -3
  22. package/templates/account/edit.tpl +30 -15
  23. package/templates/account/info.tpl +142 -73
  24. package/templates/account/posts.tpl +7 -7
  25. package/templates/account/profile.tpl +19 -22
  26. package/templates/account/read.tpl +1 -0
  27. package/templates/account/settings.tpl +5 -5
  28. package/templates/account/shares.tpl +20 -0
  29. package/templates/account/topics.tpl +6 -5
  30. package/templates/admin/plugins/harmony.tpl +1 -0
  31. package/templates/footer.tpl +1 -1
  32. package/templates/groups/list.tpl +9 -7
  33. package/templates/notifications.tpl +1 -1
  34. package/templates/partials/account/header.tpl +15 -15
  35. package/templates/partials/account/sidebar-left.tpl +30 -16
  36. package/templates/partials/breadcrumbs-json-ld.tpl +15 -25
  37. package/templates/partials/categories/item.tpl +8 -8
  38. package/templates/partials/categories/lastpost.tpl +1 -1
  39. package/templates/partials/category/subcategory.tpl +1 -1
  40. package/templates/partials/groups/list.tpl +1 -1
  41. package/templates/partials/groups/memberlist.tpl +1 -1
  42. package/templates/partials/groups/sidebar-left.tpl +8 -8
  43. package/templates/partials/header/brand.tpl +3 -1
  44. package/templates/partials/mobile-footer.tpl +3 -6
  45. package/templates/partials/notifications_list.tpl +2 -2
  46. package/templates/partials/post_bar.tpl +3 -5
  47. package/templates/partials/posts_list_item.tpl +1 -1
  48. package/templates/partials/quick-search-results.tpl +5 -5
  49. package/templates/partials/search-filters.tpl +1 -1
  50. package/templates/partials/search-results.tpl +1 -1
  51. package/templates/partials/sidebar/chats.tpl +1 -1
  52. package/templates/partials/sidebar/notifications.tpl +1 -1
  53. package/templates/partials/sidebar/search.tpl +2 -2
  54. package/templates/partials/sidebar-left.tpl +2 -5
  55. package/templates/partials/tags_list.tpl +6 -4
  56. package/templates/partials/topic/event.tpl +1 -1
  57. package/templates/partials/topic/navigator.tpl +2 -2
  58. package/templates/partials/topic/post-menu-list.tpl +25 -1
  59. package/templates/partials/topic/post-menu.tpl +3 -29
  60. package/templates/partials/topic/post.tpl +108 -101
  61. package/templates/partials/topic/quickreply.tpl +2 -2
  62. package/templates/partials/topic/reply-button.tpl +4 -2
  63. package/templates/partials/topic/sort.tpl +1 -1
  64. package/templates/partials/topic/thumbs.tpl +1 -1
  65. package/templates/partials/topic/tools.tpl +2 -6
  66. package/templates/partials/topic/watch.tpl +1 -1
  67. package/templates/partials/topic-filters.tpl +1 -1
  68. package/templates/partials/topic-list-bar.tpl +6 -6
  69. package/templates/partials/topic-terms.tpl +1 -1
  70. package/templates/partials/topics_list.tpl +12 -4
  71. package/templates/partials/users/item.tpl +33 -31
  72. package/templates/partials/users_list_menu.tpl +5 -5
  73. package/templates/post-queue.tpl +6 -2
  74. package/templates/recent.tpl +7 -0
  75. package/templates/topic.tpl +81 -88
  76. package/templates/users.tpl +2 -2
  77. package/templates/world.tpl +32 -1
  78. package/scss/modules/bottom-sheet.scss +0 -52
  79. package/templates/flags/detail.tpl +0 -179
  80. package/templates/flags/list.tpl +0 -6
  81. package/templates/login.tpl +0 -102
  82. package/templates/partials/category/filter-dropdown-content.tpl +0 -41
  83. package/templates/partials/category/selector-dropdown-content.tpl +0 -39
  84. package/templates/partials/category/sort.tpl +0 -39
  85. package/templates/partials/category/tools.tpl +0 -89
  86. package/templates/partials/category/watch.tpl +0 -67
  87. package/templates/partials/flags/bulk-actions.tpl +0 -9
  88. package/templates/partials/flags/filters.tpl +0 -189
  89. package/templates/partials/flags/results.tpl +0 -38
  90. package/templates/partials/groups/filter-dropdown-content.tpl +0 -25
  91. package/templates/partials/tags/filter-dropdown-content.tpl +0 -38
  92. package/templates/partials/tags/watch.tpl +0 -42
  93. package/templates/partials/users/filter-dropdown-content.tpl +0 -23
  94. package/templates/register.tpl +0 -104
@@ -1,37 +1,39 @@
1
- <a href="{config.relative_path}/user/{./userslug}" class="btn-ghost ff-secondary align-items-start justify-content-start p-2 ff-base">
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>
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>
@@ -1,15 +1,15 @@
1
1
  <div component="user/list/menu" class="text-sm d-flex flex-wrap align-items-center gap-2">
2
- <a class="btn-ghost ff-secondary fw-semibold" href="{config.relative_path}/users?section=online">[[global:online]]</a>
2
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=online">[[global:online]]</a>
3
3
 
4
- <a class="btn-ghost ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-posts">[[users:top-posters]]</a>
4
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-posts">[[users:top-posters]]</a>
5
5
 
6
6
  {{{ if !reputation:disabled }}}
7
- <a class="btn-ghost ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-reputation">[[users:most-reputation]]</a>
7
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-reputation">[[users:most-reputation]]</a>
8
8
  {{{ end }}}
9
9
 
10
10
  {{{ if isAdminOrGlobalMod }}}
11
- <a class="btn-ghost ff-secondary fw-semibold" href="{config.relative_path}/users?section=flagged">[[users:most-flags]]</a>
11
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=flagged">[[users:most-flags]]</a>
12
12
 
13
- <a class="btn-ghost ff-secondary fw-semibold" href="{config.relative_path}/users?section=banned">[[user:banned]]</a>
13
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=banned">[[user:banned]]</a>
14
14
  {{{ end }}}
15
15
  </div>
@@ -20,7 +20,7 @@
20
20
  </div>
21
21
 
22
22
  <div class="btn-group bottom-sheet" component="post-queue/bulk-actions">
23
- <button type="button" class="btn-ghost-sm ff-secondary dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false">
23
+ <button type="button" class="btn btn-ghost btn-sm ff-secondary dropdown-toggle d-flex align-items-center gap-2" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false">
24
24
  <i class="fa fa-clone text-primary"></i><span class="fw-semibold"> [[post-queue:bulk-actions]]</span>
25
25
  </button>
26
26
  <ul class="dropdown-menu p-1 text-sm dropdown-menu-end" role="menu">
@@ -78,7 +78,7 @@
78
78
  [[post-queue:user]]
79
79
  {{{ if ((privileges.ban || privileges.mute) || privileges.admin:users) }}}
80
80
  <div class="ms-auto btn-group bottom-sheet">
81
- <button href="#" class="btn btn-ghost-sm ff-secondary border text-xs dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">[[global:actions]]</button>
81
+ <button href="#" class="btn btn-ghost btn-sm ff-secondary border text-xs dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">[[global:actions]]</button>
82
82
  <ul class="dropdown-menu p-1 text-sm" role="menu">
83
83
  {{{ if privileges.view:users:info }}}
84
84
  <li><a class="dropdown-item rounded-1" href="{config.relative_path}/user/{./user.userslug}/info" role="menuitem">[[user:account-info]]</a></li>
@@ -198,6 +198,10 @@
198
198
  <div class="post-content-editable flex-grow-1 hidden">
199
199
  <textarea class="form-control w-100 h-100 p-3">{posts.data.rawContent}</textarea>
200
200
  </div>
201
+ <div component="post-queue/link-container" class="hidden border-top mx-3 py-3">
202
+ <label class="text-secondary form-text mb-2">[[post-queue:links-in-this-post]]</label>
203
+ <ul component="post-queue/link-container/list" class="text-sm"></ul>
204
+ </div>
201
205
  </div>
202
206
  </div>
203
207
  </div>
@@ -15,6 +15,13 @@
15
15
  <div class="alert alert-info" id="category-no-topics">[[recent:no-recent-topics]]</div>
16
16
  {{{ end }}}
17
17
 
18
+ {{{ if (selectedCategory.cid == "-1") }}}
19
+ <div class="py-3">
20
+ <h4>[[recent:uncategorized.title]]</h4>
21
+ <p>[[recent:uncategorized.intro]]</p>
22
+ </div>
23
+ {{{ end }}}
24
+
18
25
  <!-- IMPORT partials/topics_list.tpl -->
19
26
 
20
27
  {{{ if config.usePagination }}}
@@ -4,123 +4,116 @@
4
4
  {{{ end }}}
5
5
  {{{ if widgets.header.length }}}
6
6
  <div data-widget-area="header">
7
- {{{each widgets.header}}}
8
- {{widgets.header.html}}
9
- {{{end}}}
7
+ {{{each widgets.header}}}
8
+ {{widgets.header.html}}
9
+ {{{end}}}
10
10
  </div>
11
11
  {{{ end }}}
12
12
 
13
- <div class="d-flex flex-column gap-3" itemid="{url}" itemscope itemtype="https://schema.org/DiscussionForumPosting">
14
- <meta itemprop="headline" content="{title}">
13
+ <div itemid="{url}" itemscope itemtype="https://schema.org/DiscussionForumPosting">
14
+ <meta itemprop="headline" content="{escape(titleRaw)}">
15
+ <meta itemprop="text" content="{escape(titleRaw)}">
15
16
  <meta itemprop="url" content="{url}">
16
17
  <meta itemprop="datePublished" content="{timestampISO}">
17
18
  <meta itemprop="dateModified" content="{lastposttimeISO}">
18
- <meta itemprop="author" itemscope itemtype="https://schema.org/Person" itemref="topicAuthorName{{{ if author.userslug }}} topicAuthorUrl{{{ end }}}">
19
- <meta id="topicAuthorName" itemprop="name" content="{author.username}">
20
- {{{ if author.userslug }}}<meta id="topicAuthorUrl" itemprop="url" content="{config.relative_path}/user/{author.userslug}">{{{ end }}}
21
- <div class="d-flex flex-wrap">
22
- <div class="d-flex flex-column gap-3 flex-grow-1">
23
- <h1 component="post/header" class="tracking-tight fw-semibold fs-3 mb-0 text-break {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
24
- <span class="topic-title" component="topic/title">{title}</span>
25
- </h1>
19
+ <div itemprop="author" itemscope itemtype="https://schema.org/Person">
20
+ <meta itemprop="name" content="{author.username}">
21
+ {{{ if author.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{author.userslug}">{{{ end }}}
22
+ </div>
26
23
 
27
- <div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
28
- <span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!oldCid && !icons.length)))) }}}hidden{{{ end }}}">
29
- <span component="topic/scheduled" class="badge badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
30
- <i class="fa fa-clock-o"></i>
31
- [[topic:scheduled]]
32
- </span>
33
- <span component="topic/pinned" class="badge badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
34
- <i class="fa fa-thumb-tack"></i>
35
- {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
36
- </span>
37
- <span component="topic/locked" class="badge badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
38
- <i class="fa fa-lock"></i>
39
- [[topic:locked]]
24
+ <div class="d-flex flex-column gap-3">
25
+ <div class="d-flex flex-wrap">
26
+ <div class="d-flex flex-column gap-3 flex-grow-1">
27
+ <h1 component="post/header" class="tracking-tight fw-semibold fs-3 mb-0 text-break {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
28
+ <span class="topic-title" component="topic/title">{title}</span>
29
+ </h1>
30
+
31
+ <div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
32
+ <span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!oldCid && !icons.length)))) }}}hidden{{{ end }}}">
33
+ <span component="topic/scheduled" class="badge badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
34
+ <i class="fa fa-clock-o"></i> [[topic:scheduled]]
35
+ </span>
36
+ <span component="topic/pinned" class="badge badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
37
+ <i class="fa fa-thumb-tack"></i> {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
38
+ </span>
39
+ <span component="topic/locked" class="badge badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
40
+ <i class="fa fa-lock"></i> [[topic:locked]]
41
+ </span>
42
+ <a component="topic/moved" href="{config.relative_path}/category/{oldCid}" class="badge badge border border-gray-300 text-body text-decoration-none {{{ if (!oldCid || (oldCid == "-1")) }}}hidden{{{ end }}}">
43
+ <i class="fa fa-arrow-circle-right"></i> {{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
44
+ </a>
45
+ {{{each icons}}}<span class="lh-1">{@value}</span>{{{end}}}
40
46
  </span>
41
- <a href="{config.relative_path}/category/{oldCid}" class="badge badge border border-gray-300 text-body text-decoration-none {{{ if !oldCid }}}hidden{{{ end }}}">
42
- <i class="fa fa-arrow-circle-right"></i>
43
- {{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
44
- </a>
45
- {{{each icons}}}<span class="lh-1">{@value}</span>{{{end}}}
46
- </span>
47
- {function.buildCategoryLabel, category, "a", "border"}
48
- <div data-tid="{./tid}" component="topic/tags" class="lh-1 tags tag-list d-flex flex-wrap hidden-xs hidden-empty gap-2"><!-- IMPORT partials/topic/tags.tpl --></div>
49
- <div class="d-flex hidden-xs gap-2">
50
- <!-- IMPORT partials/topic/stats.tpl -->
47
+ {function.buildCategoryLabel, category, "a", "border"}
48
+ <div data-tid="{./tid}" component="topic/tags" class="lh-1 tags tag-list d-flex flex-wrap hidden-xs hidden-empty gap-2"><!-- IMPORT partials/topic/tags.tpl --></div>
49
+ <div class="d-flex hidden-xs gap-2"><!-- IMPORT partials/topic/stats.tpl --></div>
51
50
  </div>
52
51
  </div>
52
+ <div class="d-flex gap-2 align-items-center mt-2 hidden-empty" component="topic/thumb/list"><!-- IMPORT partials/topic/thumbs.tpl --></div>
53
53
  </div>
54
- <div class="d-flex gap-2 justify-content-end align-items-center mt-2 hidden-empty" component="topic/thumb/list"><!-- IMPORT partials/topic/thumbs.tpl --></div>
55
- </div>
56
-
57
- <div class="row mb-4 mb-lg-0">
58
- <div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
59
- <!-- IMPORT partials/post_bar.tpl -->
60
-
61
- {{{ if merger }}}
62
- <!-- IMPORT partials/topic/merged-message.tpl -->
63
- {{{ end }}}
64
54
 
65
- {{{ if forker }}}
66
- <!-- IMPORT partials/topic/forked-message.tpl -->
67
- {{{ end }}}
55
+ <div class="row mb-4 mb-lg-0">
56
+ <div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
57
+ <!-- IMPORT partials/post_bar.tpl -->
58
+ {{{ if merger }}}
59
+ <!-- IMPORT partials/topic/merged-message.tpl -->
60
+ {{{ end }}}
61
+ {{{ if forker }}}
62
+ <!-- IMPORT partials/topic/forked-message.tpl -->
63
+ {{{ end }}}
64
+ {{{ if !scheduled }}}
65
+ <!-- IMPORT partials/topic/deleted-message.tpl -->
66
+ {{{ end }}}
68
67
 
69
- {{{ if !scheduled }}}
70
- <!-- IMPORT partials/topic/deleted-message.tpl -->
71
- {{{ end }}}
68
+ <div class="d-flex gap-0 gap-lg-5">
69
+ <div class="posts-container" style="min-width: 0;">
70
+ <ul component="topic" class="posts timeline list-unstyled mt-sm-2 p-0 py-3" style="min-width: 0;" data-tid="{tid}" data-cid="{cid}">
71
+ {{{ each posts }}}
72
+ <li component="post" class="pt-4 {{{ if posts.deleted }}}deleted{{{ end }}} {{{ if posts.selfPost }}}self-post{{{ end }}} {{{ if posts.topicOwnerPost }}}topic-owner-post{{{ end }}}" <!-- IMPORT partials/data/topic.tpl -->>
73
+ <a component="post/anchor" data-index="{./index}" id="{increment(./index, "1")}"></a>
74
+ <meta itemprop="datePublished" content="{./timestampISO}">
75
+ {{{ if ./editedISO }}}
76
+ <meta itemprop="dateModified" content="{./editedISO}">
77
+ {{{ end }}}
72
78
 
73
- <div class="d-flex gap-0 gap-lg-5">
74
- <div class="posts-container" style="min-width: 0;">
75
- <ul component="topic" class="posts timeline list-unstyled mt-sm-2 p-0 py-3" style="min-width: 0;" data-tid="{tid}" data-cid="{cid}">
76
- {{{ each posts }}}
77
- <li component="post" class="pt-4 {{{ if posts.deleted }}}deleted{{{ end }}} {{{ if posts.selfPost }}}self-post{{{ end }}} {{{ if posts.topicOwnerPost }}}topic-owner-post{{{ end }}}" <!-- IMPORT partials/data/topic.tpl -->>
78
- <a component="post/anchor" data-index="{./index}" id="{increment(./index, "1")}"></a>
79
-
80
- <meta itemprop="datePublished" content="{./timestampISO}">
81
- {{{ if ./editedISO }}}
82
- <meta itemprop="dateModified" content="{./editedISO}">
79
+ <!-- IMPORT partials/topic/post.tpl -->
80
+ </li>
81
+ {{{ if (config.topicPostSort != "most_votes") }}}
82
+ {{{ each ./events}}}<!-- IMPORT partials/topic/event.tpl -->{{{ end }}}
83
83
  {{{ end }}}
84
-
85
- <!-- IMPORT partials/topic/post.tpl -->
86
- </li>
87
- {{{ if (config.topicPostSort != "most_votes") }}}
88
- {{{ each ./events}}}
89
- <!-- IMPORT partials/topic/event.tpl -->
90
84
  {{{ end }}}
85
+ </ul>
86
+ {{{ if browsingUsers }}}
87
+ <div class="visible-xs">
88
+ <!-- IMPORT partials/topic/browsing-users.tpl -->
89
+ <hr/>
90
+ </div>
91
+ {{{ end }}}
92
+ {{{ if config.theme.enableQuickReply }}}
93
+ <!-- IMPORT partials/topic/quickreply.tpl -->
91
94
  {{{ end }}}
92
- {{{ end }}}
93
- </ul>
94
- {{{ if browsingUsers }}}
95
- <div class="visible-xs">
96
- <!-- IMPORT partials/topic/browsing-users.tpl -->
97
- <hr/>
98
95
  </div>
99
- {{{ end }}}
100
- {{{ if config.theme.enableQuickReply }}}
101
- <!-- IMPORT partials/topic/quickreply.tpl -->
102
- {{{ end }}}
96
+
97
+ <!-- IMPORT partials/topic/navigator.tpl -->
103
98
  </div>
104
99
 
105
- <!-- IMPORT partials/topic/navigator.tpl -->
100
+ {{{ if config.usePagination }}}
101
+ <!-- IMPORT partials/paginator.tpl -->
102
+ {{{ end }}}
106
103
  </div>
107
-
108
- {{{ if config.usePagination }}}
109
- <!-- IMPORT partials/paginator.tpl -->
110
- {{{ end }}}
111
- </div>
112
- <div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
104
+ <div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
113
105
  {{{each widgets.sidebar}}}
114
106
  {{widgets.sidebar.html}}
115
107
  {{{end}}}
108
+ </div>
116
109
  </div>
117
110
  </div>
118
111
  </div>
119
112
 
120
113
  <div data-widget-area="footer">
121
- {{{each widgets.footer}}}
122
- {{widgets.footer.html}}
123
- {{{end}}}
114
+ {{{each widgets.footer}}}
115
+ {{widgets.footer.html}}
116
+ {{{end}}}
124
117
  </div>
125
118
 
126
119
  {{{ if !config.usePagination }}}
@@ -9,7 +9,7 @@
9
9
  <div class="mb-2 mb-md-0">
10
10
  <!-- IMPORT partials/users_list_menu.tpl -->
11
11
  </div>
12
- <div class="">
12
+ <div>
13
13
  <div class="d-flex justify-content-end gap-2">
14
14
  {{{ if showInviteButton }}}
15
15
  <button component="user/invite" class="btn btn-primary btn-sm text-nowrap"><i class="fa fa-user-plus"></i> [[users:invite]]</button>
@@ -17,7 +17,7 @@
17
17
  {{{ if displayUserSearch }}}
18
18
  <div class="search">
19
19
  <div class="input-group">
20
- <input class="form-control form-control-sm" id="search-user" type="text" placeholder="[[global:search]]"/>
20
+ <input class="form-control form-control-sm" id="search-user" type="text" placeholder="[[global:search]]" autocomplete="off" />
21
21
  <button class="btn btn-primary btn-sm" type="button" aria-label="[[global:search]]">
22
22
  <i component="user/search/icon" class="fa fa-search"></i>
23
23
  </button>
@@ -6,13 +6,44 @@
6
6
  </div>
7
7
  {{{ end }}}
8
8
 
9
+ <div class="category-header d-flex flex-column gap-2">
10
+ <div class="d-flex gap-2 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
11
+ {buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}
12
+ <h1 class="tracking-tight fs-2 fw-semibold mb-0 text-center">{./name}</h1>
13
+ </div>
14
+ {{{ if ./descriptionParsed }}}
15
+ <p class="description text-secondary text-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
16
+ {./descriptionParsed}
17
+ </p>
18
+ {{{ end }}}
19
+
20
+ <p class="description text-secondary text-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
21
+ <a class="btn btn-sm btn-link" href="{config.relative_path}/popular?term=daily&cid=-1">[[world:popular]]</a>
22
+ <a class="btn btn-sm btn-link" href="{config.relative_path}/recent?cid=-1">[[world:recent]]</a>
23
+ <button class="btn btn-sm btn-link" id="world-help">
24
+ <i class="fa fa-question"></i>
25
+ [[world:help]]
26
+ </button>
27
+ </p>
28
+ </div>
29
+
9
30
  <div class="row">
10
31
  <div class="world {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
11
32
  <!-- IMPORT partials/topic-list-bar.tpl -->
12
33
 
13
34
  <div class="category">
14
35
  {{{ if !topics.length }}}
15
- <div class="alert alert-info" id="category-no-topics">[[activitypub:no-topics]]</div>
36
+ <div class="row">
37
+ <div class="col-md-10 offset-md-1 d-flex align-items-center">
38
+ <div>
39
+ <h2 class="fs-4 mb-3">[[world:onboard.title]]</h2>
40
+ <p>[[world:onboard.what]]</p>
41
+ <p>[[world:onboard.why]]</p>
42
+ <p>[[world:onboard.how]]</p>
43
+ </div>
44
+ <i class="fa fa-comment-nodes fa-8x p-3"></i>
45
+ </div>
46
+ </div>
16
47
  {{{ end }}}
17
48
 
18
49
  <!-- IMPORT partials/topics_list.tpl -->
@@ -1,52 +0,0 @@
1
- .bottom-sheet {
2
- @include media-breakpoint-down(md) {
3
- .dropdown-menu {
4
- display: block;
5
- visibility: hidden;
6
-
7
- position: fixed!important;
8
- inset: auto 0 0 0!important;
9
-
10
- margin: 0 -1px -1px -1px;
11
- padding: $spacer * 0.25 !important;
12
- max-height: 60%;
13
-
14
- box-shadow: 0 2px 6px rgba(0,0,0,0.35);
15
- overflow: auto;
16
- -webkit-overflow-scrolling: touch;
17
- transform: translate3d(0, 350px, 0);
18
- transition: transform 0.3s, visibility 0s 0.3s;
19
- z-index: $zindex-popover;
20
- padding: 5px 0 10px;
21
-
22
- border-radius: 0;
23
- border: 0px;
24
- border-top: 1px solid $border-color;
25
-
26
- > li {
27
- > a, .dropdown-item {
28
- padding: 10px 20px;
29
- overflow: hidden;
30
- text-overflow: ellipsis;
31
- white-space: nowrap;
32
- }
33
-
34
- &.divider {
35
- padding: 0;
36
- }
37
- }
38
- }
39
-
40
- .dropdown-menu.show {
41
- transform: none!important;
42
- visibility: visible;
43
- transition-delay: 0s;
44
- top: auto;
45
- width: auto;
46
- }
47
-
48
- .dropdown-backdrop {
49
- background-color: rgba(0, 0, 0, .3);
50
- }
51
- }
52
- }