nodebb-theme-persona 12.1.4 → 13.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 (247) hide show
  1. package/README.md +14 -14
  2. package/package.json +2 -2
  3. package/public/persona.js +11 -23
  4. package/{less/account.less → scss/account.scss} +13 -97
  5. package/{less/categories.less → scss/categories.scss} +10 -40
  6. package/{less/category.less → scss/category.scss} +26 -75
  7. package/{less/chats.less → scss/chats.scss} +35 -88
  8. package/{less/flags.less → scss/flags.scss} +3 -3
  9. package/{less/footer.less → scss/footer.scss} +0 -1
  10. package/{less/groups.less → scss/groups.scss} +14 -38
  11. package/{less/header.less → scss/header.scss} +63 -139
  12. package/{less/helpers.less → scss/helpers.scss} +0 -0
  13. package/{less/keyframes.less → scss/keyframes.scss} +0 -0
  14. package/{less/mixins.less → scss/mixins.scss} +17 -59
  15. package/{less/mobile.less → scss/mobile.scss} +13 -18
  16. package/{less/modules/alerts.less → scss/modules/alerts.scss} +21 -21
  17. package/{less/modules/composer-default.less → scss/modules/composer-default.scss} +2 -2
  18. package/{less/modules/cookie-consent.less → scss/modules/cookie-consent.scss} +1 -1
  19. package/{less/modules/fab.less → scss/modules/fab.scss} +2 -2
  20. package/{less/modules/morph.less → scss/modules/morph.scss} +1 -1
  21. package/{less/modules/necro-post.less → scss/modules/necro-post.scss} +0 -0
  22. package/scss/modules/nprogress.scss +80 -0
  23. package/{less/modules/taskbar.less → scss/modules/taskbar.scss} +11 -10
  24. package/{less/modules/usercard.less → scss/modules/usercard.scss} +0 -0
  25. package/{less/noscript.less → scss/noscript.scss} +5 -7
  26. package/{less/outgoing.less → scss/outgoing.scss} +0 -0
  27. package/scss/overrides.scss +44 -0
  28. package/{less/persona.less → scss/persona.scss} +1 -13
  29. package/{less/posts_list.less → scss/posts_list.scss} +11 -14
  30. package/{less/register.less → scss/register.scss} +2 -7
  31. package/scss/search.scss +39 -0
  32. package/{less/style.less → scss/style.scss} +23 -47
  33. package/scss/tags.scss +11 -0
  34. package/{less/topic.less → scss/topic.scss} +53 -90
  35. package/scss/topics_list.scss +17 -0
  36. package/{less/variables.less → scss/variables.scss} +3 -3
  37. package/templates/account/blocks.tpl +24 -26
  38. package/templates/account/categories.tpl +6 -6
  39. package/templates/account/consent.tpl +10 -10
  40. package/templates/account/edit/password.tpl +8 -10
  41. package/templates/account/edit/username.tpl +6 -10
  42. package/templates/account/edit.tpl +23 -23
  43. package/templates/account/followers.tpl +3 -3
  44. package/templates/account/following.tpl +3 -3
  45. package/templates/account/groups.tpl +2 -2
  46. package/templates/account/info.tpl +67 -72
  47. package/templates/account/posts.tpl +1 -1
  48. package/templates/account/profile.tpl +20 -18
  49. package/templates/account/sessions.tpl +3 -3
  50. package/templates/account/settings.tpl +93 -81
  51. package/templates/account/topics.tpl +5 -5
  52. package/templates/account/uploads.tpl +2 -2
  53. package/templates/admin/plugins/persona.tpl +3 -3
  54. package/templates/category.tpl +15 -14
  55. package/templates/chat.tpl +16 -9
  56. package/templates/chats.tpl +5 -3
  57. package/templates/flags/detail.tpl +86 -80
  58. package/templates/flags/list.tpl +4 -4
  59. package/templates/footer.tpl +1 -1
  60. package/templates/groups/details.tpl +23 -218
  61. package/templates/groups/list.tpl +11 -9
  62. package/templates/groups/members.tpl +1 -4
  63. package/templates/header.tpl +10 -4
  64. package/templates/ip-blacklist.tpl +22 -20
  65. package/templates/login.tpl +17 -14
  66. package/templates/modules/taskbar.tpl +1 -1
  67. package/templates/modules/usercard.tpl +2 -2
  68. package/templates/notifications.tpl +40 -38
  69. package/templates/partials/acceptTos.tpl +8 -8
  70. package/templates/partials/account/category-item.tpl +6 -5
  71. package/templates/partials/account/header.tpl +2 -2
  72. package/templates/partials/account/menu.tpl +37 -37
  73. package/templates/partials/breadcrumbs.tpl +1 -1
  74. package/templates/partials/buttons/newTopic.tpl +10 -3
  75. package/templates/partials/categories/item.tpl +24 -10
  76. package/templates/partials/categories/lastpost.tpl +3 -3
  77. package/templates/partials/categories/link.tpl +10 -10
  78. package/templates/partials/category/sort.tpl +7 -7
  79. package/templates/partials/category/subcategory.tpl +3 -3
  80. package/templates/partials/category/tags.tpl +3 -5
  81. package/templates/partials/category/tools.tpl +16 -16
  82. package/templates/partials/category/watch.tpl +8 -10
  83. package/templates/partials/category-filter-content.tpl +17 -5
  84. package/templates/partials/category-filter-right.tpl +1 -1
  85. package/templates/partials/category-selector-content.tpl +17 -4
  86. package/templates/partials/category-selector-right.tpl +1 -1
  87. package/templates/partials/chats/message-window.tpl +10 -8
  88. package/templates/partials/chats/message.tpl +11 -11
  89. package/templates/partials/chats/options.tpl +8 -8
  90. package/templates/partials/chats/recent_room.tpl +1 -1
  91. package/templates/partials/chats/system-message.tpl +1 -1
  92. package/templates/partials/chats/user.tpl +1 -1
  93. package/templates/partials/chats-menu.tpl +11 -11
  94. package/templates/partials/cookie-consent.tpl +1 -1
  95. package/templates/partials/flags/filters.tpl +34 -32
  96. package/templates/partials/groups/admin.tpl +195 -0
  97. package/templates/partials/groups/badge.tpl +1 -0
  98. package/templates/partials/groups/list.tpl +6 -6
  99. package/templates/partials/groups/memberlist.tpl +11 -10
  100. package/templates/partials/menu.tpl +149 -156
  101. package/templates/partials/notifications_list.tpl +2 -2
  102. package/templates/partials/paginator.tpl +21 -21
  103. package/templates/partials/post_bar.tpl +4 -4
  104. package/templates/partials/posts_list.tpl +1 -1
  105. package/templates/partials/posts_list_item.tpl +2 -2
  106. package/templates/partials/quick-search-results.tpl +14 -11
  107. package/templates/partials/slideout-menu.tpl +1 -1
  108. package/templates/partials/tags_list.tpl +3 -3
  109. package/templates/partials/thread_tools.tpl +4 -4
  110. package/templates/partials/toast.tpl +14 -0
  111. package/templates/partials/topic/deleted-message.tpl +2 -2
  112. package/templates/partials/topic/event.tpl +26 -0
  113. package/templates/partials/topic/navigation-post.tpl +3 -3
  114. package/templates/partials/topic/navigator.tpl +7 -7
  115. package/templates/partials/topic/necro-post.tpl +1 -1
  116. package/templates/partials/topic/post-menu-list.tpl +26 -23
  117. package/templates/partials/topic/post-menu.tpl +3 -3
  118. package/templates/partials/topic/post.tpl +49 -44
  119. package/templates/partials/topic/quickreply.tpl +3 -3
  120. package/templates/partials/topic/reply-button.tpl +3 -3
  121. package/templates/partials/topic/sort.tpl +5 -5
  122. package/templates/partials/topic/tag.tpl +1 -0
  123. package/templates/partials/topic/tags.tpl +3 -5
  124. package/templates/partials/topic/topic-menu-list.tpl +18 -16
  125. package/templates/partials/topic/watch.tpl +11 -10
  126. package/templates/partials/topic-filters.tpl +12 -0
  127. package/templates/partials/topic-terms.tpl +12 -0
  128. package/templates/partials/topics_list.tpl +27 -25
  129. package/templates/partials/users_list.tpl +22 -10
  130. package/templates/partials/users_list_menu.tpl +19 -9
  131. package/templates/popular.tpl +9 -35
  132. package/templates/post-queue.tpl +42 -35
  133. package/templates/recent.tpl +10 -24
  134. package/templates/register.tpl +17 -17
  135. package/templates/registerComplete.tpl +14 -10
  136. package/templates/reset.tpl +7 -5
  137. package/templates/reset_code.tpl +9 -9
  138. package/templates/search.tpl +100 -87
  139. package/templates/tag.tpl +8 -10
  140. package/templates/tags.tpl +5 -3
  141. package/templates/top.tpl +9 -35
  142. package/templates/topic.tpl +13 -11
  143. package/templates/tos.tpl +4 -4
  144. package/templates/unread.tpl +10 -22
  145. package/templates/users.tpl +7 -20
  146. package/theme.json +6 -6
  147. package/theme.scss +1 -0
  148. package/less/bootstrap/.csscomb.json +0 -297
  149. package/less/bootstrap/.csslintrc +0 -19
  150. package/less/bootstrap/alerts.less +0 -73
  151. package/less/bootstrap/badges.less +0 -66
  152. package/less/bootstrap/bootstrap.less +0 -50
  153. package/less/bootstrap/breadcrumbs.less +0 -26
  154. package/less/bootstrap/button-groups.less +0 -243
  155. package/less/bootstrap/buttons.less +0 -160
  156. package/less/bootstrap/carousel.less +0 -269
  157. package/less/bootstrap/close.less +0 -34
  158. package/less/bootstrap/code.less +0 -69
  159. package/less/bootstrap/component-animations.less +0 -33
  160. package/less/bootstrap/dropdowns.less +0 -214
  161. package/less/bootstrap/forms.less +0 -574
  162. package/less/bootstrap/glyphicons.less +0 -305
  163. package/less/bootstrap/grid.less +0 -84
  164. package/less/bootstrap/input-groups.less +0 -166
  165. package/less/bootstrap/jumbotron.less +0 -50
  166. package/less/bootstrap/labels.less +0 -64
  167. package/less/bootstrap/list-group.less +0 -124
  168. package/less/bootstrap/media.less +0 -61
  169. package/less/bootstrap/mixins/alerts.less +0 -14
  170. package/less/bootstrap/mixins/background-variant.less +0 -8
  171. package/less/bootstrap/mixins/border-radius.less +0 -18
  172. package/less/bootstrap/mixins/buttons.less +0 -52
  173. package/less/bootstrap/mixins/center-block.less +0 -7
  174. package/less/bootstrap/mixins/clearfix.less +0 -22
  175. package/less/bootstrap/mixins/forms.less +0 -85
  176. package/less/bootstrap/mixins/gradients.less +0 -59
  177. package/less/bootstrap/mixins/grid-framework.less +0 -91
  178. package/less/bootstrap/mixins/grid.less +0 -122
  179. package/less/bootstrap/mixins/hide-text.less +0 -21
  180. package/less/bootstrap/mixins/image.less +0 -33
  181. package/less/bootstrap/mixins/labels.less +0 -12
  182. package/less/bootstrap/mixins/list-group.less +0 -29
  183. package/less/bootstrap/mixins/nav-divider.less +0 -10
  184. package/less/bootstrap/mixins/nav-vertical-align.less +0 -9
  185. package/less/bootstrap/mixins/opacity.less +0 -8
  186. package/less/bootstrap/mixins/pagination.less +0 -23
  187. package/less/bootstrap/mixins/panels.less +0 -24
  188. package/less/bootstrap/mixins/progress-bar.less +0 -10
  189. package/less/bootstrap/mixins/reset-filter.less +0 -8
  190. package/less/bootstrap/mixins/resize.less +0 -6
  191. package/less/bootstrap/mixins/responsive-visibility.less +0 -15
  192. package/less/bootstrap/mixins/size.less +0 -10
  193. package/less/bootstrap/mixins/tab-focus.less +0 -9
  194. package/less/bootstrap/mixins/table-row.less +0 -28
  195. package/less/bootstrap/mixins/text-emphasis.less +0 -8
  196. package/less/bootstrap/mixins/text-overflow.less +0 -8
  197. package/less/bootstrap/mixins/vendor-prefixes.less +0 -227
  198. package/less/bootstrap/mixins.less +0 -39
  199. package/less/bootstrap/modals.less +0 -150
  200. package/less/bootstrap/navbar.less +0 -660
  201. package/less/bootstrap/navs.less +0 -242
  202. package/less/bootstrap/normalize.less +0 -427
  203. package/less/bootstrap/pager.less +0 -54
  204. package/less/bootstrap/pagination.less +0 -88
  205. package/less/bootstrap/panels.less +0 -265
  206. package/less/bootstrap/popovers.less +0 -135
  207. package/less/bootstrap/print.less +0 -107
  208. package/less/bootstrap/progress-bars.less +0 -87
  209. package/less/bootstrap/responsive-embed.less +0 -35
  210. package/less/bootstrap/responsive-utilities.less +0 -194
  211. package/less/bootstrap/scaffolding.less +0 -162
  212. package/less/bootstrap/tables.less +0 -234
  213. package/less/bootstrap/theme.less +0 -273
  214. package/less/bootstrap/thumbnails.less +0 -36
  215. package/less/bootstrap/tooltip.less +0 -102
  216. package/less/bootstrap/type.less +0 -302
  217. package/less/bootstrap/utilities.less +0 -55
  218. package/less/bootstrap/variables.less +0 -861
  219. package/less/bootstrap/wells.less +0 -29
  220. package/less/bootstrap-flipped.css +0 -1550
  221. package/less/ip-blacklist.less +0 -7
  222. package/less/modules/bottom-sheet.less +0 -60
  223. package/less/modules/nprogress.less +0 -80
  224. package/less/notifications.less +0 -38
  225. package/less/post-queue.less +0 -19
  226. package/less/rtl.less +0 -132
  227. package/less/search.less +0 -96
  228. package/less/tags.less +0 -37
  229. package/less/topics_list.less +0 -16
  230. package/less/users.less +0 -73
  231. package/templates/alert.tpl +0 -15
  232. package/templates/partials/change_owner_modal.tpl +0 -22
  233. package/templates/partials/delete_posts_modal.tpl +0 -19
  234. package/templates/partials/fork_thread_modal.tpl +0 -22
  235. package/templates/partials/merge_topics_modal.tpl +0 -58
  236. package/templates/partials/modals/change_picture_modal.tpl +0 -73
  237. package/templates/partials/modals/flag_modal.tpl +0 -45
  238. package/templates/partials/modals/manage_room.tpl +0 -11
  239. package/templates/partials/modals/manage_room_users.tpl +0 -7
  240. package/templates/partials/modals/post_history.tpl +0 -36
  241. package/templates/partials/modals/rename_room.tpl +0 -4
  242. package/templates/partials/modals/upload_file_modal.tpl +0 -44
  243. package/templates/partials/modals/upload_picture_from_url_modal.tpl +0 -17
  244. package/templates/partials/modals/votes_modal.tpl +0 -10
  245. package/templates/partials/move_thread_modal.tpl +0 -17
  246. package/templates/partials/topic/badge.tpl +0 -5
  247. package/theme.less +0 -2
@@ -2,17 +2,17 @@
2
2
 
3
3
  <div class="search">
4
4
  <div class="row">
5
- <div class="col-xs-12">
6
- <form id="advanced-search">
7
- <div class="form-group">
5
+ <div class="<!-- IF widgets.sidebar.length -->col-lg-9 col-sm-12<!-- ELSE -->col-lg-12<!-- ENDIF widgets.sidebar.length -->">
6
+ <form id="advanced-search" class="mb-3">
7
+ <div class="mb-3">
8
8
  <div class="row">
9
- <div class="col-md-6">
10
- <label>[[global:search]]</label>
9
+ <div class="col-md-5">
10
+ <label class="form-label">[[global:search]]</label>
11
11
  <input type="text" class="form-control" id="search-input" placeholder="[[global:search]]">
12
12
  </div>
13
- <div class="col-md-2">
14
- <label>[[search:in]]</label>
15
- <select id="search-in" class="form-control">
13
+ <div class="col-md-3">
14
+ <label class="form-label">[[search:in]]</label>
15
+ <select id="search-in" class="form-select">
16
16
  <option value="titlesposts">[[search:titles-posts]]</option>
17
17
  <option value="titles">[[search:titles]]</option>
18
18
  <option value="posts">[[global:posts]]</option>
@@ -26,54 +26,62 @@
26
26
  </select>
27
27
  </div>
28
28
  <div class="col-md-2">
29
- <label>[[search:match-words]]</label>
30
- <select id="match-words-filter" class="form-control">
29
+ <label class="form-label">[[search:match-words]]</label>
30
+ <select id="match-words-filter" class="form-select">
31
31
  <option value="all">[[search:all]]</option>
32
32
  <option value="any">[[search:any]]</option>
33
33
  </select>
34
34
  </div>
35
35
  <div class="col-md-2">
36
- <label>&nbsp;</label>
36
+ <label class="form-label">&nbsp;</label>
37
37
  <button type="submit" class="btn btn-primary form-control">[[global:search]]</button>
38
38
  </div>
39
39
  </div>
40
40
  </div>
41
41
 
42
- <div class="panel panel-default">
43
- <div class="panel-heading" data-toggle="collapse" data-target=".search-options">
44
- <h3 class="panel-title"><i class="fa fa-sort"></i> [[search:advanced-search]]</h3>
45
- </div>
46
- <div class="panel-body search-options collapse <!-- IF expandSearch -->in<!-- ENDIF expandSearch -->">
47
- <div class="form-group post-search-item">
42
+ <div class="card">
43
+ <h5 class="card-header pointer" data-bs-toggle="collapse" data-bs-target=".search-options">
44
+ <i class="fa fa-sort"></i> [[search:advanced-search]]
45
+ </h5>
46
+ <div class="collapse search-options {{{ if expandSearch }}}show{{{ end }}}">
47
+ <div class="card-body">
48
+ <div class="mb-2 post-search-item">
48
49
  <div class="row">
49
50
  <div class="col-md-6">
50
- <label>[[search:in-categories]]</label>
51
- <select multiple class="form-control" id="posted-in-categories" size="{allCategoriesCount}">
51
+ <label class="form-label">[[search:in-categories]]</label>
52
+ <select multiple class="form-select" id="posted-in-categories" size="{allCategoriesCount}">
52
53
  {{{each allCategories}}}
53
54
  <option value="{allCategories.value}">{allCategories.text}</option>
54
55
  {{{end}}}
55
56
  </select>
56
- <input type="checkbox" id="search-children"> [[search:search-child-categories]]
57
+ <div class="form-check">
58
+ <input id="search-children" class="form-check-input" type="checkbox"/>
59
+ <label class="form-check-label" for="search-children">[[search:search-child-categories]]</label>
60
+ </div>
57
61
  </div>
58
62
  <div class="col-md-6">
59
- <div class="form-group post-search-item">
63
+ <div class="mb-2 post-search-item">
60
64
  <div class="row">
61
65
  <div class="col-md-6">
62
- <label>[[search:posted-by]]</label>
63
- <input type="text" class="form-control" id="posted-by-user" placeholder="[[search:posted-by]]">
66
+ <label class="form-label">[[search:posted-by]]</label>
67
+ <div>
68
+ <input type="text" class="form-control" id="posted-by-user">
69
+ </div>
64
70
  </div>
65
71
  <div class="col-md-6">
66
- <label>[[search:has-tags]]</label>
67
- <input type="text" class="form-control" id="has-tags">
72
+ <label class="form-label">[[search:has-tags]]</label>
73
+ <div>
74
+ <input type="text" class="form-control" id="has-tags">
75
+ </div>
68
76
  </div>
69
77
  </div>
70
78
  </div>
71
79
 
72
- <div class="form-group post-search-item">
73
- <label>[[search:reply-count]]</label>
80
+ <div class="mb-2 post-search-item">
81
+ <label class="form-label">[[search:reply-count]]</label>
74
82
  <div class="row">
75
83
  <div class="col-md-6">
76
- <select id="reply-count-filter" class="form-control">
84
+ <select id="reply-count-filter" class="form-select">
77
85
  <option value="atleast">[[search:at-least]]</option>
78
86
  <option value="atmost">[[search:at-most]]</option>
79
87
  </select>
@@ -84,17 +92,17 @@
84
92
  </div>
85
93
  </div>
86
94
 
87
- <div class="form-group post-search-item">
88
- <label>[[search:post-time]]</label>
95
+ <div class="mb-2 post-search-item">
96
+ <label class="form-label">[[search:post-time]]</label>
89
97
  <div class="row">
90
98
  <div class="col-md-6">
91
- <select id="post-time-filter" class="form-control">
99
+ <select id="post-time-filter" class="form-select">
92
100
  <option value="newer">[[search:newer-than]]</option>
93
101
  <option value="older">[[search:older-than]]</option>
94
102
  </select>
95
103
  </div>
96
104
  <div class="col-md-6">
97
- <select id="post-time-range" class="form-control">
105
+ <select id="post-time-range" class="form-select">
98
106
  <option value="">[[search:any-date]]</option>
99
107
  <option value="86400">[[search:yesterday]]</option>
100
108
  <option value="604800">[[search:one-week]]</option>
@@ -108,11 +116,11 @@
108
116
  </div>
109
117
  </div>
110
118
 
111
- <div class="form-group post-search-item">
112
- <label>[[search:sort-by]]</label>
119
+ <div class="mb-2 post-search-item">
120
+ <label class="form-label">[[search:sort-by]]</label>
113
121
  <div class="row">
114
122
  <div class="col-md-6">
115
- <select id="post-sort-by" class="form-control">
123
+ <select id="post-sort-by" class="form-select">
116
124
  <option value="relevance">[[search:relevance]]</option>
117
125
  <option value="timestamp">[[search:post-time]]</option>
118
126
  <option value="votes">[[search:votes]]</option>
@@ -127,7 +135,7 @@
127
135
  </select>
128
136
  </div>
129
137
  <div class="col-md-6">
130
- <select id="post-sort-direction" class="form-control">
138
+ <select id="post-sort-direction" class="form-select">
131
139
  <option value="desc">[[search:descending]]</option>
132
140
  <option value="asc">[[search:ascending]]</option>
133
141
  </select>
@@ -135,8 +143,8 @@
135
143
  </div>
136
144
  </div>
137
145
 
138
- <div class="form-group post-search-item">
139
- <label>[[search:show-results-as]]</label>
146
+ <div class="mb-2 post-search-item">
147
+ <label class="form-label">[[search:show-results-as]]</label>
140
148
  <div class="radio">
141
149
  <label>
142
150
  <input type="radio" name="options" id="show-as-posts" checked>
@@ -154,69 +162,74 @@
154
162
  </div>
155
163
  </div>
156
164
 
157
-
158
-
159
165
  <div class="btn-group">
160
166
  <button type="submit" class="btn btn-primary">[[global:search]]</button>
161
- <a class="btn btn-default" id="save-preferences" href="#">[[search:save-preferences]]</a>
162
- <a class="btn btn-default" id="clear-preferences" href="#">[[search:clear-preferences]]</a>
167
+ <a class="btn btn-outline-secondary" id="save-preferences" href="#">[[search:save-preferences]]</a>
168
+ <a class="btn btn-outline-secondary" id="clear-preferences" href="#">[[search:clear-preferences]]</a>
163
169
  </div>
164
170
  </div>
171
+ </div>
165
172
  </div>
166
173
  </form>
167
- </div>
168
- </div>
169
174
 
170
- <div class="row">
171
- <div id="results" class="search-results col-md-12" data-search-query="{search_query}">
172
- <!-- IF matchCount -->
173
- <div class="alert alert-info">[[search:results_matching, {matchCount}, {search_query}, {time}]] </div>
174
- <!-- ELSE -->
175
- <!-- IF search_query -->
176
- <div class="alert alert-warning">[[search:no-matches]]</div>
177
- <!-- ENDIF search_query -->
178
- <!-- ENDIF matchCount -->
175
+ <div id="results" class="search-results col-md-12" data-search-query="{search_query}">
176
+ <!-- IF matchCount -->
177
+ <div class="alert alert-info">[[search:results_matching, {matchCount}, {search_query}, {time}]] </div>
178
+ <!-- ELSE -->
179
+ <!-- IF search_query -->
180
+ <div class="alert alert-warning">[[search:no-matches]]</div>
181
+ <!-- ENDIF search_query -->
182
+ <!-- ENDIF matchCount -->
183
+
184
+ {{{each posts}}}
185
+ <div class="topic-row card clearfix mb-3">
186
+ <div class="card-body">
187
+ <a href="{config.relative_path}/user/{posts.user.userslug}">{buildAvatar(posts.user, "24px", true)}</a>
188
+ <span class="search-result-text search-result-title"><a href="{config.relative_path}/post/{posts.pid}">{posts.topic.title}</a></span>
189
+ <br/>
190
+ <!-- IF showAsPosts -->
191
+ <div class="search-result-text">
192
+ {posts.content}
193
+ <p class="fade-out"></p>
194
+ </div>
195
+ <!-- ENDIF showAsPosts -->
179
196
 
180
- {{{each posts}}}
181
- <div class="topic-row panel panel-default clearfix">
182
- <div class="panel-body">
183
- <a href="{config.relative_path}/user/{posts.user.userslug}">{buildAvatar(posts.user, "sm", true)}</a>
184
- <span class="search-result-text search-result-title"><a href="{config.relative_path}/post/{posts.pid}">{posts.topic.title}</a></span>
185
- <br/>
186
- <!-- IF showAsPosts -->
187
- <div class="search-result-text">
188
- {posts.content}
189
- <p class="fade-out"></p>
197
+ <small class="post-info float-end">
198
+ <a href="{config.relative_path}/category/{posts.category.slug}">
199
+ <div class="category-item d-inline-block">
200
+ {buildCategoryIcon(./category, "24px", "rounded-circle")}
201
+ {posts.category.name}
202
+ </div>
203
+ </a> &bull;
204
+ <span class="timeago" title="{posts.timestampISO}"></span>
205
+ </small>
190
206
  </div>
191
- <!-- ENDIF showAsPosts -->
192
-
193
- <small class="post-info pull-right">
194
- <a href="{config.relative_path}/category/{posts.category.slug}"><span class="fa-stack" style="{function.generateCategoryBackground, posts.category}"><i style="color:{posts.category.color};" class="fa {posts.category.icon} fa-stack-1x"></i></span> {posts.category.name}</a> &bull;
195
- <span class="timeago" title="{posts.timestampISO}"></span>
196
- </small>
197
207
  </div>
198
- </div>
199
- {{{end}}}
208
+ {{{end}}}
200
209
 
201
- <!-- IF users.length -->
202
- <ul id="users-container" class="users-container">
203
- <!-- IMPORT partials/users_list.tpl -->
204
- </ul>
205
- <!-- ENDIF users.length -->
210
+ <!-- IF users.length -->
211
+ <!-- IMPORT partials/users_list.tpl -->
212
+ <!-- ENDIF users.length -->
206
213
 
207
- <!-- IF tags.length -->
208
- <!-- IMPORT partials/tags_list.tpl -->
209
- <!-- ENDIF tags.length -->
214
+ <!-- IF tags.length -->
215
+ <!-- IMPORT partials/tags_list.tpl -->
216
+ <!-- ENDIF tags.length -->
210
217
 
211
- {{{ if categories.length }}}
212
- <ul class="categories">
213
- {{{each categories}}}
214
- <!-- IMPORT partials/categories/item.tpl -->
215
- {{{end}}}
216
- </ul>
217
- {{{ end }}}
218
+ {{{ if categories.length }}}
219
+ <ul class="categories">
220
+ {{{each categories}}}
221
+ <!-- IMPORT partials/categories/item.tpl -->
222
+ {{{end}}}
223
+ </ul>
224
+ {{{ end }}}
218
225
 
219
- <!-- IMPORT partials/paginator.tpl -->
226
+ <!-- IMPORT partials/paginator.tpl -->
227
+ </div>
228
+ </div>
229
+ <div data-widget-area="sidebar" class="col-lg-3 col-sm-12 <!-- IF !widgets.sidebar.length -->hidden<!-- ENDIF !widgets.sidebar.length -->">
230
+ {{{each widgets.sidebar}}}
231
+ {{widgets.sidebar.html}}
232
+ {{{end}}}
220
233
  </div>
221
234
  </div>
222
235
  </div>
package/templates/tag.tpl CHANGED
@@ -5,27 +5,25 @@
5
5
  {{{end}}}
6
6
  </div>
7
7
  <div class="tag">
8
- <div class="topic-list-header btn-toolbar">
9
- <div class="pull-left">
8
+ <div class="topic-list-header sticky-top btn-toolbar justify-content-between py-2 mb-2 gap-1 flex-nowrap overflow-auto">
9
+ <div class="d-flex gap-1 align-items-stretch">
10
10
  <!-- IF loggedIn -->
11
11
  <!-- IMPORT partials/buttons/newTopic.tpl -->
12
12
  <!-- ELSE -->
13
13
  <a component="category/post/guest" href="{config.relative_path}/login" class="btn btn-primary">[[category:guest-login-post]]</a>
14
14
  <!-- ENDIF loggedIn -->
15
15
  </div>
16
-
17
- <div class="btn-group pull-right">
16
+ <div class="d-flex gap-1 align-items-stretch">
17
+ <!-- IMPORT partials/category-filter-right.tpl -->
18
18
  <!-- IMPORT partials/category/tools.tpl -->
19
19
  </div>
20
-
21
- <!-- IMPORT partials/category-filter-right.tpl -->
22
20
  </div>
23
21
 
24
- <!-- IF !topics.length -->
25
- <div class="alert alert-warning">[[tags:no_tag_topics]]</div>
26
- <!-- ENDIF !topics.length -->
27
-
28
22
  <div class="category">
23
+ <!-- IF !topics.length -->
24
+ <div class="alert alert-warning">[[tags:no_tag_topics]]</div>
25
+ <!-- ENDIF !topics.length -->
26
+
29
27
  <!-- IMPORT partials/topics_list.tpl -->
30
28
  <button id="load-more-btn" class="btn btn-primary hide">[[unread:load_more]]</button>
31
29
  <!-- IF config.usePagination -->
@@ -7,11 +7,13 @@
7
7
  <div class="tags">
8
8
  <!-- IF displayTagSearch -->
9
9
  <!-- IF tags.length -->
10
- <div class="row">
11
- <div class="col-lg-12">
10
+ <div class="row justify-content-end mb-3">
11
+ <div class="col-lg-3">
12
12
  <div class="input-group">
13
13
  <input type="text" class="form-control" placeholder="[[global:search]]" id="tag-search">
14
- <span class="input-group-addon search-button"><i class="fa fa-search"></i></span>
14
+ <button class="btn btn-primary" type="button">
15
+ <i class="fa fa-search"></i>
16
+ </button>
15
17
  </div>
16
18
  </div>
17
19
  </div>
package/templates/top.tpl CHANGED
@@ -5,45 +5,19 @@
5
5
  {{{end}}}
6
6
  </div>
7
7
  <div class="top">
8
- <div class="topic-list-header btn-toolbar">
9
- <div class="pull-left">
10
- <!-- IF loggedIn -->
8
+ <div class="topic-list-header sticky-top btn-toolbar justify-content-between py-2 mb-2 gap-1 flex-nowrap overflow-auto">
9
+ <div class="d-flex gap-1 align-items-stretch">
10
+ {{{ if canPost }}}
11
11
  <!-- IMPORT partials/buttons/newTopic.tpl -->
12
- <!-- ELSE -->
12
+ {{{ else }}}
13
13
  <a component="category/post/guest" href="{config.relative_path}/login" class="btn btn-primary">[[category:guest-login-post]]</a>
14
- <!-- ENDIF loggedIn -->
14
+ {{{ end }}}
15
15
  </div>
16
-
17
- <div class="btn-group pull-right">
18
- <!-- IMPORT partials/category/tools.tpl -->
19
- </div>
20
-
16
+ <div class="d-flex gap-1 align-items-stretch">
17
+ <!-- IMPORT partials/topic-terms.tpl -->
18
+ <!-- IMPORT partials/topic-filters.tpl -->
21
19
  <!-- IMPORT partials/category-filter-right.tpl -->
22
-
23
- <div class="btn-group pull-right bottom-sheet <!-- IF !filters.length -->hidden<!-- ENDIF !filters.length -->">
24
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
25
- <span class="visible-sm-inline visible-md-inline visible-lg-inline">{selectedFilter.name}</span><span class="visible-xs-inline"><i class="fa fa-fw {selectedFilter.icon}"></i></span> <span class="caret"></span>
26
- </button>
27
- <ul class="dropdown-menu" role="menu">
28
- {{{each filters}}}
29
- <li role="presentation" class="category {{{if filters.selected}}}selected{{{end}}}">
30
- <a role="menu-item" href="{config.relative_path}/{filters.url}"><i class="fa fa-fw <!-- IF filters.selected -->fa-check<!-- ENDIF filters.selected -->"></i>{filters.name}</a>
31
- </li>
32
- {{{end}}}
33
- </ul>
34
- </div>
35
-
36
- <div class="btn-group pull-right <!-- IF !terms.length -->hidden<!-- ENDIF !terms.length -->">
37
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
38
- {selectedTerm.name} <span class="caret"></span>
39
- </button>
40
- <ul class="dropdown-menu" role="menu">
41
- {{{each terms}}}
42
- <li role="presentation" class="category">
43
- <a role="menu-item" href="{config.relative_path}/{terms.url}"><i class="fa fa-fw <!-- IF terms.selected -->fa-check<!-- ENDIF terms.selected -->"></i>{terms.name}</a>
44
- </li>
45
- {{{end}}}
46
- </ul>
20
+ <!-- IMPORT partials/category/tools.tpl -->
47
21
  </div>
48
22
  </div>
49
23
 
@@ -5,7 +5,7 @@
5
5
  </div>
6
6
  <div class="row">
7
7
  <div class="topic <!-- IF widgets.sidebar.length -->col-lg-9 col-sm-12<!-- ELSE -->col-lg-12<!-- ENDIF widgets.sidebar.length -->">
8
- <div class="topic-header">
8
+ <div class="topic-header sticky-top">
9
9
  <h1 component="post/header" class="" itemprop="name">
10
10
  <span class="topic-title">
11
11
  <span component="topic/labels">
@@ -20,24 +20,22 @@
20
20
  </h1>
21
21
 
22
22
  <div class="topic-info clearfix">
23
- <div class="category-item inline-block">
24
- <div role="presentation" class="icon pull-left" style="{function.generateCategoryBackground, category}">
25
- <i class="fa fa-fw {category.icon}"></i>
26
- </div>
23
+ <div class="category-item d-inline-block">
24
+ {buildCategoryIcon(category, "24px", "rounded-circle")}
27
25
  <a href="{config.relative_path}/category/{category.slug}">{category.name}</a>
28
26
  </div>
29
27
 
30
- <div class="tags tag-list inline-block hidden-xs">
28
+ <div class="tags tag-list d-inline-block hidden-xs">
31
29
  <!-- IMPORT partials/topic/tags.tpl -->
32
30
  </div>
33
- <div class="inline-block hidden-xs">
31
+ <div class="d-inline-block hidden-xs">
34
32
  <!-- IMPORT partials/topic/stats.tpl -->
35
33
  </div>
36
34
  {{{ if !feeds:disableRSS }}}
37
35
  {{{ if rssFeedUrl }}}<a class="hidden-xs" target="_blank" href="{rssFeedUrl}"><i class="fa fa-rss-square"></i></a>{{{ end }}}
38
36
  {{{ end }}}
39
37
  {{{ if browsingUsers }}}
40
- <div class="inline-block hidden-xs">
38
+ <div class="d-inline-block hidden-xs">
41
39
  <!-- IMPORT partials/topic/browsing-users.tpl -->
42
40
  </div>
43
41
  {{{ end }}}
@@ -47,8 +45,8 @@
47
45
  </div>
48
46
  <!-- IF merger -->
49
47
  <div component="topic/merged/message" class="alert alert-warning clearfix">
50
- <span class="pull-left">[[topic:merged_message, {config.relative_path}/topic/{mergeIntoTid}, {merger.mergedIntoTitle}]]</span>
51
- <span class="pull-right">
48
+ <span class="float-start">[[topic:merged_message, {config.relative_path}/topic/{mergeIntoTid}, {merger.mergedIntoTitle}]]</span>
49
+ <span class="float-end">
52
50
  <a href="{config.relative_path}/user/{merger.userslug}">
53
51
  <strong>{merger.username}</strong>
54
52
  </a>
@@ -71,7 +69,11 @@
71
69
 
72
70
  <!-- IMPORT partials/topic/post.tpl -->
73
71
  </li>
74
- {renderTopicEvents(@index, config.topicPostSort)}
72
+ {{{ if (config.topicPostSort != "most_votes") }}}
73
+ {{{ each ./events}}}
74
+ <!-- IMPORT partials/topic/event.tpl -->
75
+ {{{ end }}}
76
+ {{{ end }}}
75
77
  {{{end}}}
76
78
  </ul>
77
79
 
package/templates/tos.tpl CHANGED
@@ -1,4 +1,4 @@
1
- <h3>[[register:terms_of_use]]</h3>
2
- <hr/>
3
-
4
- {termsOfUse}
1
+ <h3>[[register:terms_of_use]]</h3>
2
+ <hr/>
3
+
4
+ {termsOfUse}
@@ -5,35 +5,23 @@
5
5
  {{{end}}}
6
6
  </div>
7
7
  <div class="unread">
8
- <div class="topic-list-header btn-toolbar">
9
- <div class="pull-left">
8
+ <div class="topic-list-header sticky-top btn-toolbar justify-content-between py-2 mb-2 gap-1 flex-nowrap overflow-auto">
9
+ <div class="d-flex gap-1 align-items-stretch">
10
10
  <!-- IMPORT partials/buttons/newTopic.tpl -->
11
- <a href="{config.relative_path}/{selectedFilter.url}{querystring}" class="inline-block">
12
- <div class="alert alert-warning hide" id="new-topics-alert"></div>
11
+ <a href="{config.relative_path}/{selectedFilter.url}{querystring}" class="d-inline-block">
12
+ <div class="alert alert-warning h-100 m-0 px-2 py-1 d-flex align-items-center hide" id="new-topics-alert"></div>
13
13
  </a>
14
14
  </div>
15
15
 
16
- <div class="btn-group pull-right">
17
- <!-- IMPORT partials/category/tools.tpl -->
18
- </div>
16
+ <div class="d-flex gap-1 align-items-stretch">
17
+ <!-- IMPORT partials/topic-filters.tpl -->
18
+ <!-- IMPORT partials/category-filter-right.tpl -->
19
19
 
20
- <div class="markread btn-group pull-right {{{ if !topics.length }}}hidden{{{ end }}}">
21
- <!-- IMPORT partials/category-selector-right.tpl -->
20
+ <div class="markread btn-group {{{ if !topics.length }}}hidden{{{ end }}}">
21
+ <!-- IMPORT partials/category-selector-right.tpl -->
22
22
  </div>
23
23
 
24
- <!-- IMPORT partials/category-filter-right.tpl -->
25
-
26
- <div class="btn-group pull-right bottom-sheet">
27
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
28
- <span class="visible-sm-inline visible-md-inline visible-lg-inline">{selectedFilter.name}</span><span class="visible-xs-inline"><i class="fa fa-fw {selectedFilter.icon}"></i></span> <span class="caret"></span>
29
- </button>
30
- <ul class="dropdown-menu" role="menu">
31
- {{{each filters}}}
32
- <li role="presentation" class="category {{{if filters.selected}}}selected{{{end}}}">
33
- <a role="menu-item" href="{config.relative_path}/{filters.url}"><i class="fa fa-fw <!-- IF filters.selected -->fa-check<!-- ENDIF filters.selected -->"></i>{filters.name}</a>
34
- </li>
35
- {{{end}}}
36
- </ul>
24
+ <!-- IMPORT partials/category/tools.tpl -->
37
25
  </div>
38
26
  </div>
39
27
 
@@ -1,47 +1,34 @@
1
1
  <!-- IMPORT partials/breadcrumbs.tpl -->
2
-
3
2
  <div data-widget-area="header">
4
3
  {{{each widgets.header}}}
5
4
  {{widgets.header.html}}
6
5
  {{{end}}}
7
6
  </div>
8
7
  <div class="users">
9
- <div class="row">
8
+ <div class="row mb-3">
10
9
  <div class="col-lg-6">
11
10
  <!-- IMPORT partials/users_list_menu.tpl -->
12
11
  </div>
13
- <div class="col-xs-3 text-right">
12
+ <div class="col-3 text-end">
14
13
  <!-- IF showInviteButton -->
15
14
  <button component="user/invite" class="btn btn-success"><i class="fa fa-users"></i> [[users:invite]]</button>
16
15
  <!-- ENDIF showInviteButton -->
17
16
  </div>
18
17
  <!-- IF displayUserSearch -->
19
- <div class="col-lg-3 col-xs-9">
18
+ <div class="col-lg-3 col-9">
20
19
  <div class="search">
21
20
  <div class="input-group">
22
- <input class="form-control" id="search-user" type="text" placeholder="[[users:enter_username]]"/>
23
- <span class="input-group-addon">
21
+ <input class="form-control" id="search-user" type="text" placeholder="[[global:search]]"/>
22
+ <button class="btn btn-primary" type="button">
24
23
  <i component="user/search/icon" class="fa fa-search"></i>
25
- </span>
24
+ </button>
26
25
  </div>
27
26
  </div>
28
27
  </div>
29
28
  <!-- ENDIF displayUserSearch -->
30
29
  </div>
31
30
 
32
- <ul id="users-container" class="users-container">
33
- <!-- IMPORT partials/users_list.tpl -->
34
- <!-- IF anonymousUserCount -->
35
- <li class="users-box anon-user">
36
- <div class="avatar avatar-lg avatar-rounded">G</div>
37
- <br/>
38
- <div class="user-info">
39
- <span id="online_anon_count">{anonymousUserCount}</span>
40
- <span>[[global:guests]]</span>
41
- </div>
42
- </li>
43
- <!-- ENDIF anonymousUserCount -->
44
- </ul>
31
+ <!-- IMPORT partials/users_list.tpl -->
45
32
 
46
33
  <!-- IMPORT partials/paginator.tpl -->
47
34
  </div>
package/theme.json CHANGED
@@ -1,7 +1,7 @@
1
- {
2
- "id": "nodebb-theme-persona",
3
- "name": "Persona",
4
- "description": "The default theme for NodeBB. Uses a standard approach to forum design.",
5
- "url": "https://github.com/psychobunny/nodebb-theme-persona",
6
- "screenshot": "screenshot.png"
1
+ {
2
+ "id": "nodebb-theme-persona",
3
+ "name": "Persona",
4
+ "description": "The default theme for NodeBB. Uses a standard approach to forum design.",
5
+ "url": "https://github.com/psychobunny/nodebb-theme-persona",
6
+ "screenshot": "screenshot.png"
7
7
  }
package/theme.scss ADDED
@@ -0,0 +1 @@
1
+ @import "./scss/persona";