nodebb-theme-harmony 1.0.0 → 1.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 (155) hide show
  1. package/README.md +12 -1
  2. package/languages/en-GB/harmony.json +6 -1
  3. package/library.js +56 -25
  4. package/package.json +1 -1
  5. package/plugin.json +0 -1
  6. package/public/harmony.js +165 -41
  7. package/public/settings.js +1 -0
  8. package/screenshots/categories.png +0 -0
  9. package/screenshots/recent.png +0 -0
  10. package/screenshots/topic.png +0 -0
  11. package/scss/account.scss +1 -1
  12. package/scss/chats.scss +81 -26
  13. package/scss/common.scss +84 -10
  14. package/scss/flags.scss +5 -0
  15. package/scss/groups.scss +2 -2
  16. package/scss/harmony.scss +3 -0
  17. package/scss/mixins.scss +7 -3
  18. package/scss/modals.scss +5 -3
  19. package/scss/modules/bottom-sheet.scss +1 -1
  20. package/scss/modules/composer.scss +0 -4
  21. package/scss/modules/cover.scss +1 -11
  22. package/scss/modules/filters.scss +8 -0
  23. package/scss/modules/paginator.scss +24 -0
  24. package/scss/modules/tags.scss +2 -2
  25. package/scss/modules/topic-navigator.scss +18 -42
  26. package/scss/modules/topics-list.scss +32 -17
  27. package/scss/modules/user-menu.scss +6 -0
  28. package/scss/overrides.scss +4 -1
  29. package/scss/sidebar.scss +61 -8
  30. package/scss/topic.scss +39 -13
  31. package/templates/account/blocks.tpl +35 -40
  32. package/templates/account/categories.tpl +47 -29
  33. package/templates/account/consent.tpl +66 -10
  34. package/templates/account/edit/password.tpl +25 -30
  35. package/templates/account/edit/username.tpl +21 -26
  36. package/templates/account/edit.tpl +105 -116
  37. package/templates/account/followers.tpl +12 -19
  38. package/templates/account/following.tpl +12 -18
  39. package/templates/account/groups.tpl +12 -17
  40. package/templates/account/info.tpl +178 -206
  41. package/templates/account/posts.tpl +31 -36
  42. package/templates/account/profile.tpl +82 -72
  43. package/templates/account/sessions.tpl +8 -30
  44. package/templates/account/settings.tpl +222 -203
  45. package/templates/account/theme.tpl +39 -25
  46. package/templates/account/topics.tpl +36 -38
  47. package/templates/account/uploads.tpl +33 -40
  48. package/templates/admin/plugins/harmony.tpl +21 -3
  49. package/templates/categories.tpl +3 -6
  50. package/templates/category.tpl +13 -14
  51. package/templates/chats.tpl +9 -10
  52. package/templates/flags/detail.tpl +160 -193
  53. package/templates/flags/list.tpl +3 -70
  54. package/templates/footer.tpl +2 -2
  55. package/templates/groups/details.tpl +22 -19
  56. package/templates/groups/list.tpl +1 -1
  57. package/templates/groups/members.tpl +0 -2
  58. package/templates/header.tpl +2 -2
  59. package/templates/login.tpl +4 -4
  60. package/templates/notifications.tpl +5 -5
  61. package/templates/partials/account/admin-menu.tpl +9 -9
  62. package/templates/partials/account/category-item.tpl +14 -17
  63. package/templates/partials/account/footer.tpl +3 -0
  64. package/templates/partials/account/header.tpl +78 -81
  65. package/templates/partials/account/session-list.tpl +18 -0
  66. package/templates/partials/account/sidebar-left.tpl +31 -25
  67. package/templates/partials/breadcrumbs.tpl +6 -6
  68. package/templates/partials/buttons/newTopic.tpl +1 -1
  69. package/templates/partials/categories/item.tpl +31 -27
  70. package/templates/partials/categories/lastpost.tpl +7 -7
  71. package/templates/partials/category/filter-dropdown-content.tpl +37 -0
  72. package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +7 -7
  73. package/templates/partials/category/sort.tpl +22 -7
  74. package/templates/partials/category/subcategory.tpl +2 -3
  75. package/templates/partials/category/tags.tpl +0 -2
  76. package/templates/partials/category/tools.tpl +28 -25
  77. package/templates/partials/category/watch.tpl +39 -6
  78. package/templates/partials/chats/dropdown.tpl +4 -1
  79. package/templates/partials/chats/message-window.tpl +12 -8
  80. package/templates/partials/chats/message.tpl +8 -10
  81. package/templates/partials/chats/options.tpl +14 -6
  82. package/templates/partials/chats/recent_room.tpl +41 -32
  83. package/templates/partials/cookie-consent.tpl +5 -5
  84. package/templates/partials/flags/bulk-actions.tpl +9 -0
  85. package/templates/partials/flags/filters.tpl +165 -78
  86. package/templates/partials/flags/results.tpl +38 -0
  87. package/templates/partials/groups/admin.tpl +4 -4
  88. package/templates/partials/groups/badge.tpl +1 -1
  89. package/templates/partials/groups/invited.tpl +1 -1
  90. package/templates/partials/groups/list.tpl +2 -2
  91. package/templates/partials/groups/memberlist.tpl +2 -2
  92. package/templates/partials/groups/sidebar-left.tpl +10 -10
  93. package/templates/partials/header/brand.tpl +9 -2
  94. package/templates/partials/mobile-footer.tpl +69 -61
  95. package/templates/partials/notifications_list.tpl +11 -8
  96. package/templates/partials/paginator.tpl +11 -9
  97. package/templates/partials/post_bar.tpl +26 -24
  98. package/templates/partials/posts_list_item.tpl +5 -5
  99. package/templates/partials/quick-search-results.tpl +3 -3
  100. package/templates/partials/search-filters.tpl +184 -0
  101. package/templates/partials/search-results.tpl +28 -35
  102. package/templates/partials/sidebar/chats.tpl +26 -34
  103. package/templates/partials/sidebar/drafts.tpl +45 -34
  104. package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
  105. package/templates/partials/sidebar/logged-out-menu.tpl +1 -1
  106. package/templates/partials/sidebar/notifications.tpl +30 -9
  107. package/templates/partials/sidebar/search-mobile.tpl +1 -1
  108. package/templates/partials/sidebar/search.tpl +1 -1
  109. package/templates/partials/sidebar/user-menu.tpl +38 -29
  110. package/templates/partials/sidebar-left.tpl +14 -11
  111. package/templates/partials/sidebar-right.tpl +1 -3
  112. package/templates/partials/skin-switcher.tpl +3 -3
  113. package/templates/partials/tags/filter-dropdown-content.tpl +34 -0
  114. package/templates/partials/tags_list.tpl +4 -4
  115. package/templates/partials/topic/browsing-users.tpl +0 -2
  116. package/templates/partials/topic/event.tpl +1 -1
  117. package/templates/partials/topic/navigation-post.tpl +5 -9
  118. package/templates/partials/topic/navigator-mobile.tpl +62 -0
  119. package/templates/partials/topic/navigator.tpl +23 -17
  120. package/templates/partials/topic/post-editor.tpl +0 -2
  121. package/templates/partials/topic/post-menu-list.tpl +60 -62
  122. package/templates/partials/topic/post-menu.tpl +16 -11
  123. package/templates/partials/topic/post.tpl +45 -27
  124. package/templates/partials/topic/quickreply.tpl +8 -8
  125. package/templates/partials/topic/reply-button.tpl +7 -7
  126. package/templates/partials/topic/sort.tpl +17 -5
  127. package/templates/partials/topic/tools.tpl +2 -2
  128. package/templates/partials/topic/topic-menu-list.tpl +22 -24
  129. package/templates/partials/topic/watch.tpl +42 -9
  130. package/templates/partials/topic-filters.tpl +6 -3
  131. package/templates/partials/topic-list-bar.tpl +50 -46
  132. package/templates/partials/topic-terms.tpl +6 -3
  133. package/templates/partials/topics_list.tpl +88 -93
  134. package/templates/partials/userFilter-placeholders.tpl +5 -0
  135. package/templates/partials/users/filter-dropdown-content.tpl +23 -0
  136. package/templates/partials/users/item.tpl +25 -27
  137. package/templates/partials/users_list.tpl +1 -1
  138. package/templates/popular.tpl +3 -1
  139. package/templates/post-queue.tpl +166 -0
  140. package/templates/recent.tpl +3 -2
  141. package/templates/register.tpl +4 -4
  142. package/templates/search.tpl +39 -177
  143. package/templates/tags.tpl +3 -3
  144. package/templates/top.tpl +3 -1
  145. package/templates/topic.tpl +86 -69
  146. package/templates/unread.tpl +3 -1
  147. package/templates/users.tpl +7 -3
  148. package/templates/modules/usercard.tpl +0 -39
  149. package/templates/partials/acceptTos.tpl +0 -11
  150. package/templates/partials/category-filter-content.tpl +0 -30
  151. package/templates/partials/category-filter-right.tpl +0 -5
  152. package/templates/partials/category-filter.tpl +0 -3
  153. package/templates/partials/category-selector-right.tpl +0 -5
  154. package/templates/partials/category-selector.tpl +0 -3
  155. package/templates/partials/slideout-menu.tpl +0 -6
@@ -1,7 +1,7 @@
1
- <div class="flex-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
1
+ <div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
2
2
  <div class="sticky-md-top d-flex flex-row flex-md-column flex-wrap gap-1" style="top: 1rem;z-index: 1;">
3
3
  <a href="{config.relative_path}/user/{userslug}" class="btn-ghost fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
4
- <div class="flex-1">[[global:about]]</div>
4
+ <div class="flex-grow-1">[[global:about]]</div>
5
5
  </a>
6
6
  <a href="{config.relative_path}/user/{userslug}/posts"class="btn-ghost fw-semibold
7
7
  {{{ if template.account/posts }}}active{{{ end }}}
@@ -10,61 +10,67 @@
10
10
  {{{ if template.account/upvoted }}}active{{{ end }}}
11
11
  {{{ if template.account/downvoted }}}active{{{ end }}}
12
12
  {{{ if template.account/bookmarks }}}active{{{ end }}}">
13
- <div class="flex-1">[[global:posts]]</div>
14
- <span class="text-xs human-readable-number" title="{counts.posts}">{counts.posts}</span>
13
+ <div class="flex-grow-1">[[global:posts]]</div>
14
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.posts}">{counts.posts}</span>
15
15
  </a>
16
16
  <a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost fw-semibold
17
17
  {{{ if template.account/topics }}}active{{{ end }}}
18
18
  {{{ if template.account/watched }}}active{{{ end }}}
19
19
  {{{ if template.account/ignored }}}active{{{ end }}}">
20
- <div class="flex-1">[[global:topics]]</div>
21
- <span class="text-xs human-readable-number" title="{counts.topics}">{counts.topics}</span>
20
+ <div class="flex-grow-1">[[global:topics]]</div>
21
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.topics}">{counts.topics}</span>
22
22
  </a>
23
23
  <a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost fw-semibold
24
24
  {{{ if template.account/groups }}}active{{{ end }}}">
25
- <div class="flex-1">[[global:header.groups]]</div>
26
- <span class="text-xs human-readable-number" title="{counts.groups}">{counts.groups}</span>
25
+ <div class="flex-grow-1">[[global:header.groups]]</div>
26
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.groups}">{counts.groups}</span>
27
27
  </a>
28
28
 
29
29
  <a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost fw-semibold
30
30
  {{{ if template.account/followers }}}active{{{ end }}}">
31
- <div class="flex-1">[[user:followers]]</div>
32
- <span class="text-xs human-readable-number" title="{counts.followers}">{counts.followers}</span>
31
+ <div class="flex-grow-1">[[user:followers]]</div>
32
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.followers}">{counts.followers}</span>
33
33
  </a>
34
34
 
35
35
  <a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost fw-semibold
36
36
  {{{ if template.account/following }}}active{{{ end }}}">
37
- <div class="flex-1">[[user:following]]</div>
38
- <span class="text-xs human-readable-number" title="{counts.following}">{counts.following}</span>
37
+ <div class="flex-grow-1">[[user:following]]</div>
38
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.following}">{counts.following}</span>
39
39
  </a>
40
40
 
41
41
  {{{ if canEdit }}}
42
+ <a href="{config.relative_path}/user/{userslug}/categories" class="btn-ghost fw-semibold
43
+ {{{ if template.account/categories }}}active{{{ end }}}">
44
+ <div class="flex-grow-1">[[user:watched_categories]]</div>
45
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
46
+ </a>
47
+
42
48
  <a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold
43
49
  {{{ if template.account/blocks }}}active{{{ end }}}">
44
- <div class="flex-1">[[user:blocked-users]]</div>
45
- <span class="text-xs human-readable-number" title="{counts.blocks}">{counts.blocks}</span>
50
+ <div class="flex-grow-1">[[user:blocked-users]]</div>
51
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.blocks}">{counts.blocks}</span>
46
52
  </a>
47
53
 
48
54
  <a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost fw-semibold
49
55
  {{{ if template.account/uploads }}}active{{{ end }}}">
50
- <div class="flex-1">[[global:uploads]]</div>
51
- <span class="text-xs human-readable-number" title="{counts.uploaded}">{counts.uploaded}</span>
56
+ <div class="flex-grow-1">[[global:uploads]]</div>
57
+ <span class="flex-shrink-0 text-xs human-readable-number" title="{counts.uploaded}">{counts.uploaded}</span>
52
58
  </a>
53
59
  {{{ end }}}
54
60
 
55
61
  <hr class="w-100 my-2"/>
56
62
  {{{ if (loggedIn && (!isSelf && !banned)) }}}
57
63
  <a href="#" component="account/flag" class="btn-ghost-sm">
58
- <i class="fa-solid fa-flag text-danger"></i>
59
- <div class="flex-1 text-nowrap">[[user:flag-profile]]</div>
64
+ <i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
65
+ <div class="flex-grow-1 text-nowrap">[[user:flag-profile]]</div>
60
66
  </a>
61
67
  <a href="#" component="account/block" class="btn-ghost-sm {{{ if isBlocked }}}hidden{{{ end }}}">
62
- <i class="fa-solid fa-ban text-danger"></i>
63
- <div class="flex-1 text-nowrap">[[user:block_user]]</div>
68
+ <i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
69
+ <div class="flex-grow-1 text-nowrap">[[user:block_user]]</div>
64
70
  </a>
65
71
  <a href="#" component="account/unblock" class="btn-ghost-sm {{{ if !isBlocked }}}hidden{{{ end }}}">
66
- <i class="fa-solid fa-ban text-danger"></i>
67
- <div class="flex-1 text-nowrap">[[user:unblock_user]]</div>
72
+ <i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
73
+ <div class="flex-grow-1 text-nowrap">[[user:unblock_user]]</div>
68
74
  </a>
69
75
  <hr class="w-100 my-2"/>
70
76
  {{{ end }}}
@@ -72,17 +78,17 @@
72
78
  {{{ if canEdit }}}
73
79
  <a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm text-xs
74
80
  {{{ if template.account/edit }}}active{{{ end }}}">
75
- <div class="flex-1">[[user:edit-profile]]</div>
81
+ <div class="flex-grow-1">[[user:edit-profile]]</div>
76
82
  </a>
77
83
  <a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm text-xs
78
84
  {{{ if template.account/settings }}}active{{{ end }}}">
79
- <div class="flex-1">[[user:settings]]</div>
85
+ <div class="flex-grow-1">[[user:settings]]</div>
80
86
  </a>
81
87
  {{{ end }}}
82
88
 
83
89
  {{{ each profile_links }}}
84
90
  <a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}} {{{ if (url == ./url) }}}active{{{ end }}}" id="{./id}">
85
- <div class="flex-1">{./name}</div>
91
+ <div class="flex-grow-1">{./name}</div>
86
92
  </a>
87
93
  {{{end}}}
88
94
  </div>
@@ -1,12 +1,12 @@
1
1
  {{{ if breadcrumbs.length }}}
2
- <ol class="breadcrumb mb-0 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
3
- {{{each breadcrumbs}}}
4
- <li<!-- IF @last --> component="breadcrumb/current"<!-- ENDIF @last --> itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item <!-- IF @last -->active<!-- ENDIF @last -->">
2
+ <ol class="breadcrumb mb-0 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
3
+ {{{ each breadcrumbs }}}
4
+ <li{{{ if @last }}} component="breadcrumb/current"{{{ end }}} itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item {{{ if @last }}}active{{{ end }}}">
5
5
  <meta itemprop="position" content="{@index}" />
6
- {{{ if ./url }}}<a href="{breadcrumbs.url}" itemprop="item">{{{ end }}}
7
- <span class="fw-semibold" itemprop="name">{breadcrumbs.text}</span>
6
+ {{{ if ./url }}}<a href="{./url}" itemprop="item">{{{ end }}}
7
+ <span class="fw-semibold" itemprop="name">{./text}</span>
8
8
  {{{ if ./url }}}</a>{{{ end }}}
9
9
  </li>
10
- {{{end}}}
10
+ {{{ end }}}
11
11
  </ol>
12
12
  {{{ end }}}
@@ -4,7 +4,7 @@
4
4
  </button>
5
5
  <noscript>
6
6
  <input type="checkbox" class="hidden" id="category-dropdown-check" aria-hidden="true">
7
- <ul component="category/list" class="dropdown-menu category-dropdown-menu" role="menu">
7
+ <ul component="category/list" class="dropdown-menu p-1 text-sm category-dropdown-menu" role="menu">
8
8
  {{{each categories}}}
9
9
  <li role="presentation" class="category {{{if categories.disabledClass}}}disabled{{{end}}}">
10
10
  <a role="menu-item" href="{config.relative_path}/compose?cid={categories.cid}">{categories.level}
@@ -1,29 +1,35 @@
1
- <li component="categories/category" data-cid="{./cid}" class="row clearfix category-{./cid}">
1
+ <li component="categories/category" data-cid="{./cid}" class="w-100 border-bottom py-3 py-lg-4 gap-1 d-flex flex-column flex-lg-row align-items-start category-{./cid}">
2
2
  <meta itemprop="name" content="{./name}">
3
3
 
4
- <div class="d-flex gap-3 col-12 {{{ if config.hideCategoryLastPost }}}col-md-10 col-sm-12{{{ else }}}col-md-7 col-sm-9{{{ end }}}">
5
- <div class="">
4
+ <div class="d-flex col-lg-7 gap-2 gap-lg-3">
5
+ <div class="flex-shrink-0">
6
6
  {buildCategoryIcon(@value, "40px", "rounded-1")}
7
7
  </div>
8
- <div class="d-flex flex-column gap-1">
9
- <h2 class="title fw-bold fs-4">
8
+ <div class="flex-grow-1 d-flex flex-wrap gap-1">
9
+ <h2 class="title text-break fs-4 fw-semibold m-0 tracking-tight w-100">
10
10
  <!-- IMPORT partials/categories/link.tpl -->
11
11
  </h2>
12
12
  {{{ if ./descriptionParsed }}}
13
- <div class="description text-muted small">
13
+ <div class="description text-muted text-sm w-100">
14
14
  {./descriptionParsed}
15
15
  </div>
16
16
  {{{ end }}}
17
17
  {{{ if !config.hideSubCategories }}}
18
18
  {{{ if ./children.length }}}
19
- <div class="category-children row row-cols-2 g-2">
19
+ <div class="category-children row row-cols-2 g-2 my-1 w-100">
20
20
  {{{ each ./children }}}
21
21
  {{{ if !./isSection }}}
22
22
  <span class="category-children-item small">
23
23
  {{{ if ./link }}}
24
- <a href="{./link}">{./name}</a>
24
+ <div class="d-flex align-items-start gap-1">
25
+ <i class="fa fa-fw fa-caret-right text-primary mt-1"></i>
26
+ <a href="{./link}" class="text-reset fw-semibold">{./name}</a>
27
+ </div>
25
28
  {{{ else }}}
26
- <a href="{config.relative_path}/category/{./slug}">{./name}</a>
29
+ <div class="d-flex align-items-start gap-1">
30
+ <i class="fa fa-fw fa-caret-right text-primary mt-1"></i>
31
+ <a href="{config.relative_path}/category/{./slug}" class="text-reset fw-semibold">{./name}</a>
32
+ </div>
27
33
  {{{ end }}}
28
34
  </span>
29
35
  {{{ end }}}
@@ -33,27 +39,25 @@
33
39
  {{{ end }}}
34
40
  </div>
35
41
  </div>
36
-
37
42
  {{{ if !./link }}}
38
- <div class="col-md-2 d-none d-md-flex stats text-muted gap-2 px-0">
39
- <div class="w-50">
40
- <div class="card card-header align-items-center px-0 py-2 border-0 rounded-1">
41
- <span class="{./unread-class} human-readable-number fs-5 fw-semibold ff-secondary" title="{./totalTopicCount}">{./totalTopicCount}</span>
42
- <span class="text-lowercase text-xs">[[global:topics]]</span>
43
+ <div class="d-flex col-lg-5 align-content-stretch">
44
+ <div class="meta stats d-none d-lg-grid col-6 gap-1 pe-2 text-muted" style="grid-template-columns: 1fr 1fr;">
45
+ <div class="card card-header border-0 p-2 overflow-hidden rounded-1 d-flex flex-column align-items-center">
46
+ <span class="{./unread-class} human-readable-number fs-5 ff-secondary lh-1" title="{./totalTopicCount}" data-toFixed="0">{./totalTopicCount}</span>
47
+ <span class="d-none d-xl-flex text-lowercase text-xs">[[global:topics]]</span>
48
+ <i class="d-xl-none fa fa-fw text-xs text-muted opacity-75 fa-list"></i>
49
+ </div>
50
+ <div class="card card-header border-0 p-2 overflow-hidden rounded-1 d-flex flex-column align-items-center">
51
+ <span class="{./unread-class} human-readable-number fs-5 ff-secondary lh-1" title="{./totalPostCount}" data-toFixed="0">{./totalPostCount}</span>
52
+ <span class="d-none d-xl-flex text-lowercase text-xs">[[global:posts]]</span>
53
+ <i class="d-xl-none fa fa-fw text-xs text-muted opacity-75 fa-message"></i>
54
+ </div>
43
55
  </div>
44
- </div>
45
- <div class="w-50">
46
- <div class="card card-header align-items-center px-0 py-2 border-0 rounded-1">
47
- <span class="{./unread-class} human-readable-number fs-5 fw-semibold ff-secondary" title="{./totalPostCount}">{./totalPostCount}</span>
48
- <span class="text-lowercase text-xs">[[global:posts]]</span>
56
+ {{{ if !config.hideCategoryLastPost }}}
57
+ <div component="topic/teaser" class="teaser col-lg-6 {{{ if !config.theme.mobileTopicTeasers }}}d-none d-lg-block{{{ end }}}">
58
+ <!-- IMPORT partials/categories/lastpost.tpl -->
49
59
  </div>
60
+ {{{ end }}}
50
61
  </div>
51
- </div>
52
-
53
- {{{ if !config.hideCategoryLastPost }}}
54
- <div class="col-md-3 col-sm-3 teaser d-none d-sm-block" component="topic/teaser">
55
- <!-- IMPORT partials/categories/lastpost.tpl -->
56
- </div>
57
- {{{ end }}}
58
62
  {{{ end }}}
59
63
  </li>
@@ -1,15 +1,15 @@
1
- <div class="lastpost background-link-container border-start border-2 h-100" style="border-color: {./bgColor}!important;">
1
+ <div class="lastpost background-link-container border-start border-2 lh-sm h-100" style="border-color: {./bgColor}!important;">
2
2
  {{{ each ./posts }}}
3
3
  {{{ if @first }}}
4
- <div component="category/posts" class="ps-3">
4
+ <div component="category/posts" class="ps-2 text-xs">
5
5
  <a class="background-link" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}"></a>
6
- <p class="mb-0">
7
- <a class="text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "20px", true)}</a>
6
+ <div>
7
+ <a class="text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "18px", true, "avatar-tooltip")}</a>
8
8
  <a class="permalink text-muted" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}">
9
9
  <span class="timeago text-xs" title="{../timestampISO}"></span>
10
10
  </a>
11
- </p>
12
- <div class="post-content mt-2 overflow-hidden text-xs line-clamp-3">
11
+ </div>
12
+ <div class="post-content text-xs text-break line-clamp-sm-2 lh-sm">
13
13
  {./content}
14
14
  </div>
15
15
  </div>
@@ -17,7 +17,7 @@
17
17
  {{{ end }}}
18
18
 
19
19
  {{{ if !./posts.length }}}
20
- <div component="category/posts" class="ps-3">
20
+ <div component="category/posts" class="ps-2">
21
21
  <div class="post-content overflow-hidden text-xs">
22
22
  [[category:no_new_posts]]
23
23
  </div>
@@ -0,0 +1,37 @@
1
+ <button type="button" class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
2
+ {{{ if selectedCategory }}}
3
+ <span class="category-item d-inline-flex align-items-center gap-1">
4
+ {buildCategoryIcon(selectedCategory, "18px", "rounded-circle")}
5
+ <span class="visible-md-inline visible-lg-inline fw-semibold">{selectedCategory.name}</span>
6
+ </span>
7
+ {{{ else }}}
8
+ <i class="fa fa-fw fa-list link-primary"></i>
9
+ <span class="visible-md-inline visible-lg-inline fw-semibold">[[unread:all_categories]]</span>{{{ end }}}
10
+ </button>
11
+ <div component="category-selector-search" class="hidden position-absolute">
12
+ <input type="text" class="form-control form-control-sm" placeholder="[[search:type-to-search]]" autocomplete="off">
13
+ </div>
14
+ <ul component="category/list" class="dropdown-menu p-1 text-sm category-dropdown-menu" role="menu">
15
+ <li role="presentation" class="category" data-cid="all">
16
+ <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" role="menu-item" href="{{{ if allCategoriesUrl }}}{config.relative_path}/{allCategoriesUrl}{{{ else }}}#{{{ end }}}">
17
+ <div class="flex-grow-1">[[unread:all_categories]]</div>
18
+ <i component="category/select/icon" class="flex-shrink-0 fa fa-fw fa-check {{{if selectedCategory}}}invisible{{{end}}}"></i>
19
+ </a>
20
+ </li>
21
+ {{{each categoryItems}}}
22
+ <li role="presentation" class="category {{{ if ../disabledClass }}}disabled{{{ end }}}" data-cid="{../cid}" data-parent-cid="{../parentCid}" data-name="{../name}">
23
+ <a class="dropdown-item rounded-1 d-flex align-items-center gap-2" role="menu-item" href="#">
24
+ {../level}
25
+ <span component="category-markup" class="flex-grow-1" style="{{{ if ../match }}}font-weight: bold;{{{end}}}">
26
+ <div class="category-item d-inline-flex align-items-center gap-1">
27
+ {{{ if ./icon }}}
28
+ {buildCategoryIcon(@value, "24px", "rounded-circle")}
29
+ {{{ end }}}
30
+ {./name}
31
+ </div>
32
+ </span>
33
+ <i component="category/select/icon" class="flex-shrink-0 fa fa-fw fa-check {{{ if !../selected }}}invisible{{{ end }}}"></i>
34
+ </a>
35
+ </li>
36
+ {{{end}}}
37
+ </ul>
@@ -1,7 +1,7 @@
1
- <button type="button" class="btn-ghost-sm d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown">
1
+ <button type="button" class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown">
2
2
  <span component="category-selector-selected">
3
3
  {{{ if (selectedCategory && !showCategorySelectLabel) }}}
4
- <span class="category-item">
4
+ <span class="category-item d-inline-flex align-items-center gap-1">
5
5
  {buildCategoryIcon(selectedCategory, "24px", "rounded-circle")}
6
6
  <span class="fw-semibold">{selectedCategory.name}</span>
7
7
  </span>
@@ -12,17 +12,17 @@
12
12
  </span>
13
13
  </button>
14
14
  <div component="category-selector-search" class="hidden position-absolute">
15
- <input type="text" class="form-control" autocomplete="off">
15
+ <input type="text" class="form-control form-control-sm" placeholder="[[search:type-to-search]]" autocomplete="off">
16
16
  </div>
17
- <ul component="category/list" class="dropdown-menu category-dropdown-menu" role="menu">
17
+ <ul component="category/list" class="dropdown-menu p-1 text-sm category-dropdown-menu" role="menu">
18
18
  <li component="category/no-matches" role="presentation" class="category hidden">
19
- <a class="dropdown-item" role="menu-item">[[search:no-matches]]</a>
19
+ <a class="dropdown-item rounded-1" role="menu-item">[[search:no-matches]]</a>
20
20
  </li>
21
21
  {{{ each categoryItems }}}
22
22
  <li role="presentation" class="category {{{ if ./disabledClass }}}disabled {{{ end }}}" data-cid="{./cid}" data-name="{./name}" data-parent-cid="{./parentCid}">
23
- <a class="dropdown-item" role="menu-item">{./level}
23
+ <a class="dropdown-item rounded-1" role="menu-item">{./level}
24
24
  <span component="category-markup" style="{{{ if ./match }}}font-weight: bold;{{{end}}}">
25
- <div class="category-item d-inline-block">
25
+ <div class="category-item d-inline-flex align-items-center gap-1">
26
26
  {{{ if ./icon }}}
27
27
  {buildCategoryIcon(@value, "24px", "rounded-circle")}
28
28
  {{{ end }}}
@@ -1,14 +1,29 @@
1
1
  <div class="btn-group bottom-sheet" component="thread/sort">
2
- <button class="btn-ghost-sm d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
2
+ <button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
3
3
  <i class="fa fa-fw fa-arrow-down-wide-short text-primary"></i>
4
4
  <span class="visible-md-inline visible-lg-inline fw-semibold">[[topic:sort_by]]</span>
5
5
  </button>
6
6
 
7
- <ul class="dropdown-menu">
8
- <li><a class="dropdown-item" href="#" class="newest_to_oldest" data-sort="newest_to_oldest"><i class="fa fa-fw"></i> [[topic:newest_to_oldest]]</a></li>
9
- <li><a class="dropdown-item" href="#" class="oldest_to_newest" data-sort="oldest_to_newest"><i class="fa fa-fw"></i> [[topic:oldest_to_newest]]</a></li>
10
- <li><a class="dropdown-item" href="#" class="most_posts" data-sort="most_posts"><i class="fa fa-fw"></i> [[topic:most_posts]]</a></li>
11
- <li><a class="dropdown-item" href="#" class="most_votes" data-sort="most_votes"><i class="fa fa-fw"></i> [[topic:most_votes]]</a></li>
12
- <li><a class="dropdown-item" href="#" class="most_views" data-sort="most_views"><i class="fa fa-fw"></i> [[topic:most_views]]</a></li>
7
+ <ul class="dropdown-menu p-1 text-sm">
8
+ <li><a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="newest_to_oldest" data-sort="newest_to_oldest">
9
+ <span class="flex-grow-1">[[topic:newest_to_oldest]]</span>
10
+ <i class="flex-shrink-0 fa fa-fw text-muted"></i>
11
+ </a></li>
12
+ <li><a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="oldest_to_newest" data-sort="oldest_to_newest">
13
+ <span class="flex-grow-1">[[topic:oldest_to_newest]]</span>
14
+ <i class="flex-shrink-0 fa fa-fw text-muted"></i>
15
+ </a></li>
16
+ <li><a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="most_posts" data-sort="most_posts">
17
+ <span class="flex-grow-1">[[topic:most_posts]]</span>
18
+ <i class="flex-shrink-0 fa fa-fw text-muted"></i>
19
+ </a></li>
20
+ <li><a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="most_votes" data-sort="most_votes">
21
+ <span class="flex-grow-1">[[topic:most_votes]]</span>
22
+ <i class="flex-shrink-0 fa fa-fw text-muted"></i>
23
+ </a></li>
24
+ <li><a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="most_views" data-sort="most_views">
25
+ <span class="flex-grow-1">[[topic:most_views]]</span>
26
+ <i class="flex-shrink-0 fa fa-fw text-muted"></i>
27
+ </a></li>
13
28
  </ul>
14
29
  </div>
@@ -1,16 +1,15 @@
1
1
  {{{ if children.length }}}
2
2
  <div class="subcategory">
3
3
  {{{ if hasMoreSubCategories }}}
4
- <div class="mb-2"><!-- IMPORT partials/category-selector.tpl --></div>
4
+ <div class="mb-2"><!-- IMPORT partials/category/selector-dropdown-left.tpl --></div>
5
5
  {{{ else }}}
6
6
  <h3 class="fs-6 fw-semibold">[[category:subcategories]]</h3>
7
7
  {{{ end }}}
8
8
 
9
- <ul component="category/subcategory/container" class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
9
+ <ul component="category/subcategory/container" class="categories-list list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
10
10
  <hr class="text-muted"/>
11
11
  {{{each children}}}
12
12
  <!-- IMPORT partials/categories/item.tpl -->
13
- <hr class="text-muted"/>
14
13
  {{{end}}}
15
14
  </ul>
16
15
  {{{ if hasMoreSubCategories}}}
@@ -1,5 +1,3 @@
1
- <!-- THIS FILE IS STILL PERSONA -->
2
-
3
1
  {{{ each tags }}}
4
2
  <a href="{config.relative_path}/tags/{topics.tags.value}"><span class="tag-item" data-tag="{topics.tags.value}">{topics.tags.value}</span><span class="tag-topic-count human-readable-number" title="{topics.tags.score}">{topics.tags.score}</span></a>
5
3
  {{{ end }}}
@@ -1,78 +1,81 @@
1
1
  {{{ if showTopicTools }}}
2
2
  <div class="btn-group thread-tools bottom-sheet">
3
- <button class="btn-ghost-sm d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
3
+ <button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
4
4
  <i class="fa fa-fw fa-gear text-primary"></i>
5
5
  <span class="visible-md-inline visible-lg-inline fw-semibold">[[topic:thread_tools.title]]</span>
6
+ <span component="topic/selected/badge" class="badge rounded-pill bg-secondary"></span>
6
7
  </button>
7
- <ul class="dropdown-menu">
8
+ <ul class="dropdown-menu p-1 text-sm">
8
9
  <li>
9
- <a component="topic/mark-unread-for-all" href="#" class="dropdown-item">
10
- <i class="fa fa-fw fa-inbox"></i> [[topic:thread_tools.markAsUnreadForAll]]
10
+ <a component="topic/mark-unread-for-all" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
11
+ <i class="fa fa-fw text-muted fa-inbox"></i> [[topic:thread_tools.markAsUnreadForAll]]
11
12
  </a>
12
13
  </li>
13
14
  <li>
14
- <a component="topic/pin" href="#" class="dropdown-item">
15
- <i class="fa fa-fw fa-thumb-tack"></i> [[topic:thread_tools.pin]]
15
+ <a component="topic/pin" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
16
+ <i class="fa fa-fw text-muted fa-thumb-tack"></i> [[topic:thread_tools.pin]]
16
17
  </a>
17
18
  </li>
18
19
  <li>
19
- <a component="topic/unpin" href="#" class="hidden dropdown-item">
20
- <i class="fa fa-fw fa-thumb-tack fa-rotate-90"></i> [[topic:thread_tools.unpin]]
20
+ <a component="topic/unpin" href="#" class="hidden dropdown-item rounded-1">
21
+ <i class="fa fa-fw text-muted fa-thumb-tack fa-rotate-90"></i> [[topic:thread_tools.unpin]]
21
22
  </a>
22
23
  </li>
23
24
 
24
25
  <li>
25
- <a component="topic/lock" href="#" class="dropdown-item">
26
- <i class="fa fa-fw fa-lock"></i> [[topic:thread_tools.lock]]
26
+ <a component="topic/lock" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
27
+ <i class="fa fa-fw text-muted fa-lock"></i> [[topic:thread_tools.lock]]
27
28
  </a>
28
29
  </li>
29
30
  <li>
30
- <a component="topic/unlock" href="#" class="hidden dropdown-item" >
31
- <i class="fa fa-fw fa-unlock"></i> [[topic:thread_tools.unlock]]
31
+ <a component="topic/unlock" href="#" class="hidden dropdown-item rounded-1 d-flex align-items-center gap-2">
32
+ <i class="fa fa-fw text-muted fa-unlock"></i> [[topic:thread_tools.unlock]]
32
33
  </a>
33
34
  </li>
34
35
 
35
36
  <li class="dropdown-divider"></li>
36
37
 
37
38
  <li>
38
- <a component="topic/move" href="#" class="dropdown-item">
39
- <i class="fa fa-fw fa-arrows"></i> [[topic:thread_tools.move]]
39
+ <a component="topic/move" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
40
+ <i class="fa fa-fw text-muted fa-arrows"></i> [[topic:thread_tools.move]]
40
41
  </a>
41
42
  </li>
42
43
  {{{if template.category}}}
43
44
  <li>
44
- <a component="topic/move-all" href="#" class="dropdown-item">
45
- <i class="fa fa-fw fa-arrows"></i> [[topic:thread_tools.move_all]]
45
+ <a component="topic/move-all" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
46
+ <i class="fa fa-fw text-muted fa-arrows"></i> [[topic:thread_tools.move_all]]
46
47
  </a>
47
48
  </li>
48
49
  {{{end}}}
49
50
  <li>
50
- <a component="topic/merge" href="#" class="dropdown-item">
51
- <i class="fa fa-fw fa-code-fork"></i> [[topic:thread_tools.merge]]
51
+ <a component="topic/merge" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
52
+ <i class="fa fa-fw text-muted fa-code-fork"></i> [[topic:thread_tools.merge]]
52
53
  </a>
53
54
  </li>
54
55
 
55
56
  <li class="dropdown-divider"></li>
56
57
 
57
58
  <li>
58
- <a component="topic/delete" href="#" class="dropdown-item">
59
- <i class="fa fa-fw fa-trash-o"></i> [[topic:thread_tools.delete]]
59
+ <a component="topic/delete" href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2">
60
+ <i class="fa fa-fw text-muted fa-trash-o"></i> [[topic:thread_tools.delete]]
60
61
  </a>
61
62
  </li>
62
63
  <li>
63
- <a component="topic/restore" href="#" class="hidden dropdown-item">
64
- <i class="fa fa-fw fa-history"></i> [[topic:thread_tools.restore]]
64
+ <a component="topic/restore" href="#" class="hidden dropdown-item rounded-1">
65
+ <i class="fa fa-fw text-muted fa-history"></i> [[topic:thread_tools.restore]]
65
66
  </a>
66
67
  </li>
67
68
  <li>
68
- <a component="topic/purge" href="#" class="hidden dropdown-item">
69
- <i class="fa fa-fw fa-eraser"></i> [[topic:thread_tools.purge]]
69
+ <a component="topic/purge" href="#" class="hidden dropdown-item rounded-1">
70
+ <i class="fa fa-fw text-muted fa-eraser"></i> [[topic:thread_tools.purge]]
70
71
  </a>
71
72
  </li>
72
73
 
73
74
  {{{each thread_tools}}}
74
75
  <li>
75
- <a href="#" class="dropdown-item {thread_tools.class}"><i class="fa fa-fw {thread_tools.icon}"></i> {thread_tools.title}</a>
76
+ <a href="#" class="dropdown-item rounded-1 d-flex align-items-center gap-2 {thread_tools.class}">
77
+ <i class="fa fa-fw {thread_tools.icon}"></i>
78
+ {thread_tools.title}</a>
76
79
  </li>
77
80
  {{{end}}}
78
81
  </ul>
@@ -1,6 +1,6 @@
1
1
  {{{ if config.loggedIn }}}
2
- <div class="btn-group topic-watch-dropdown bottom-sheet" component="topic/watch">
3
- <button class="btn-ghost-sm d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
2
+ <div class="btn-group bottom-sheet" component="topic/watch">
3
+ <button class="btn-ghost-sm d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" type="button">
4
4
  <span component="category/watching/menu" {{{ if !./isWatched }}}class="hidden"{{{ end }}}><i class="fa fa-fw fa-inbox text-primary"></i><span class="visible-md-inline visible-lg-inline fw-semibold"> [[category:watching]]</span></span>
5
5
 
6
6
  <span component="category/notwatching/menu" {{{ if !./isNotWatched }}}class="hidden"{{{ end }}}><i class="fa fa-fw fa-clock-o text-primary"></i><span class="visible-md-inline visible-lg-inline fw-semibold"> [[category:not-watching]]</span></span>
@@ -8,12 +8,45 @@
8
8
  <span component="category/ignoring/menu" {{{ if !./isIgnored }}}class="hidden"{{{ end }}}><i class="fa fa-fw fa-eye-slash text-primary"></i><span class="visible-md-inline visible-lg-inline fw-semibold"> [[category:ignoring]]</span></span>
9
9
  </button>
10
10
 
11
- <ul class="dropdown-menu">
12
- <li><a class="dropdown-item" href="#" component="category/watching" data-state="watching"><i component="category/watching/check" class="fa fa-fw {{{ if ./isWatched }}}fa-check{{{ end }}}"></i><i class="fa fa-fw fa-inbox"></i> [[category:watching]]<p class="help-text text-muted"><small>[[category:watching.description]]</small></p></a></li>
11
+ <ul class="dropdown-menu p-1 text-sm {{{ if template.account/categories }}}dropdown-menu-end{{{ end }}}">
12
+ <li>
13
+ <a class="dropdown-item rounded-1 d-flex align-items-center gap-2 p-2" href="#" component="category/watching" data-state="watching">
14
+ <div class="flex-grow-1 d-flex flex-column">
15
+ <span class="d-flex align-items-center gap-2">
16
+ <i class="flex-shrink-0 fa fa-fw text-muted fa-inbox"></i>
17
+ <span class="flex-grow-1 fw-semibold">[[category:watching]]</span>
18
+ </span>
19
+ <div class="help-text text-muted text-xs">[[category:watching.description]]</div>
20
+ </div>
21
+ <span class="flex-shrink-0"><i component="category/watching/check" class="fa fa-fw {{{ if ./isWatched }}}fa-check{{{ end }}}"></i></span>
22
+ </a>
23
+ </li>
13
24
 
14
- <li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching"><i component="category/notwatching/check" class="fa fa-fw {{{ if ./isNotWatched }}}fa-check{{{ end }}}"></i><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text text-muted"><small>[[category:not-watching.description]]</small></p></a></li>
25
+ <li>
26
+ <a class="dropdown-item rounded-1 d-flex align-items-center gap-2 p-2" href="#" component="category/notwatching" data-state="notwatching">
27
+ <div class="flex-grow-1 d-flex flex-column">
28
+ <span class="d-flex align-items-center gap-2">
29
+ <i class="flex-shrink-0 fa fa-fw text-muted fa-clock-o"></i>
30
+ <span class="flex-grow-1 fw-semibold">[[category:not-watching]]</span>
31
+ </span>
32
+ <div class="help-text text-muted text-xs">[[category:not-watching.description]]</div>
33
+ </div>
34
+ <span class="flex-shrink-0"><i component="category/notwatching/check" class="fa fa-fw {{{ if ./isNotWatched }}}fa-check{{{ end }}}"></i></span>
35
+ </a>
36
+ </li>
15
37
 
16
- <li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring"><i component="category/ignoring/check" class="fa fa-fw {{{ if ./isIgnored }}}fa-check{{{ end }}}"></i><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text text-muted"><small>[[category:ignoring.description]]</small></p></a></li>
38
+ <li>
39
+ <a class="dropdown-item rounded-1 d-flex align-items-center gap-2 p-2" href="#" component="category/ignoring" data-state="ignoring">
40
+ <div class="flex-grow-1 d-flex flex-column">
41
+ <span class="d-flex align-items-center gap-2">
42
+ <i class="flex-shrink-0 fa fa-fw text-muted fa-eye-slash"></i>
43
+ <span class="flex-grow-1 fw-semibold">[[category:ignoring]]</span>
44
+ </span>
45
+ <div class="help-text text-muted text-xs">[[category:ignoring.description]]</div>
46
+ </div>
47
+ <span class="flex-shrink-0"><i component="category/ignoring/check" class="fa fa-fw {{{ if ./isIgnored }}}fa-check{{{ end }}}"></i></span>
48
+ </a>
49
+ </li>
17
50
  </ul>
18
51
  </div>
19
52
  {{{ end }}}
@@ -1,5 +1,8 @@
1
1
  {{{ if !rooms.length }}}
2
- <li class="text-center p-2">[[modules:chat.no_active]]</li>
2
+ <li class="text-center p-4 d-flex flex-column">
3
+ <div class="p-4"><i class="fa-solid fa-wind fs-2 text-muted"></i></div>
4
+ <div class="text-xs fw-semibold text-muted">[[modules:chat.no_active]]</div>
5
+ </li>
3
6
  {{{ end }}}
4
7
 
5
8
  {{{ each rooms }}}