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
@@ -1,9 +1,6 @@
1
1
  <!-- IMPORT partials/breadcrumbs.tpl -->
2
2
  <div class="users">
3
-
4
- <ul id="users-container" class="users-container">
5
- <!-- IMPORT partials/users_list.tpl -->
6
- </ul>
3
+ <!-- IMPORT partials/users_list.tpl -->
7
4
 
8
5
  <!-- IMPORT partials/paginator.tpl -->
9
6
  </div>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <title>{browserTitle}</title>
5
5
  {{{each metaTags}}}{function.buildMetaTag}{{{end}}}
6
- <link rel="stylesheet" type="text/css" href="{relative_path}/assets/client{{{if bootswatchSkin}}}-{bootswatchSkin}{{{end}}}.css?{config.cache-buster}" />
6
+ <link rel="stylesheet" type="text/css" href="{relative_path}/assets/client{{{if bootswatchSkin}}}-{bootswatchSkin}{{{end}}}{{{ if (languageDirection=="rtl") }}}-rtl{{{ end }}}.css?{config.cache-buster}" />
7
7
  {{{each linkTags}}}{function.buildLinkTag}{{{end}}}
8
8
 
9
9
  <script>
@@ -11,6 +11,7 @@
11
11
  var app = {
12
12
  user: JSON.parse('{{userJSON}}')
13
13
  };
14
+
14
15
  document.documentElement.style.setProperty('--panel-offset', `${localStorage.getItem('panelOffset') || 0}px`);
15
16
  </script>
16
17
 
@@ -31,11 +32,16 @@
31
32
  </nav>
32
33
 
33
34
  <main id="panel" class="slideout-panel">
34
- <nav class="navbar navbar-default navbar-fixed-top header" id="header-menu" component="navbar">
35
- <div class="container">
35
+ <nav class="navbar sticky-top navbar-expand-lg bg-light header border-bottom" id="header-menu" component="navbar">
36
+ <div class="container justify-content-start flex-nowrap">
36
37
  <!-- IMPORT partials/menu.tpl -->
37
38
  </div>
38
39
  </nav>
39
- <div class="container" id="content">
40
+ <script>
41
+ const rect = document.getElementById('header-menu').getBoundingClientRect();
42
+ const offset = Math.max(0, rect.bottom);
43
+ document.documentElement.style.setProperty('--panel-offset', offset + `px`);
44
+ </script>
45
+ <div class="container pt-3" id="content">
40
46
  <!-- IMPORT partials/noscript/warning.tpl -->
41
47
  <!-- IMPORT partials/noscript/message.tpl -->
@@ -10,22 +10,24 @@
10
10
  </p>
11
11
 
12
12
  <div class="row">
13
- <div class="col-sm-6">
14
- <div class="panel panel-default">
15
- <div class="panel-heading">[[ip-blacklist:active-rules]]</div>
16
- <div class="panel-body">
17
- <textarea id="blacklist-rules">{rules}</textarea><br />
18
- <button type="button" class="btn btn-warning" data-action="test">
19
- <i class="fa fa-bomb"></i> [[ip-blacklist:validate]]
20
- </button>
21
- <button type="button" class="btn btn-primary" data-action="apply">
22
- <i class="fa fa-save"></i> [[ip-blacklist:apply]]
23
- </button>
13
+ <div class="col-sm-6 d-flex flex-column">
14
+ <div class="card mb-3 flex-grow-1">
15
+ <div class="card-header">[[ip-blacklist:active-rules]]</div>
16
+ <div class="card-body d-flex flex-column">
17
+ <textarea id="blacklist-rules" class="flex-grow-1 mb-3 w-100 d-block border px-2 py-1">{rules}</textarea>
18
+ <div>
19
+ <button type="button" class="btn btn-warning" data-action="test">
20
+ <i class="fa fa-bomb"></i> [[ip-blacklist:validate]]
21
+ </button>
22
+ <button type="button" class="btn btn-primary" data-action="apply">
23
+ <i class="fa fa-save"></i> [[ip-blacklist:apply]]
24
+ </button>
25
+ </div>
24
26
  </div>
25
27
  </div>
26
- <div class="panel panel-default">
27
- <div class="panel-heading">[[ip-blacklist:hints]]</div>
28
- <div class="panel-body">
28
+ <div class="card flex-shrink-1">
29
+ <div class="card-header">[[ip-blacklist:hints]]</div>
30
+ <div class="card-body">
29
31
  <p>
30
32
  [[ip-blacklist:hint-1]]
31
33
  </p>
@@ -36,18 +38,18 @@
36
38
  </div>
37
39
  </div>
38
40
  <div class="col-sm-6">
39
- <div class="panel panel-default">
40
- <div class="panel-body">
41
+ <div class="card mb-3">
42
+ <div class="card-body">
41
43
  <div><canvas id="blacklist:hourly" height="250"></canvas></div>
42
44
  </div>
43
- <div class="panel-footer"><small>[[ip-blacklist:analytics.blacklist-hourly]]</small></div>
45
+ <div class="card-footer"><small>[[ip-blacklist:analytics.blacklist-hourly]]</small></div>
44
46
  </div>
45
47
 
46
- <div class="panel panel-default">
47
- <div class="panel-body">
48
+ <div class="card">
49
+ <div class="card-body">
48
50
  <div><canvas id="blacklist:daily" height="250"></canvas></div>
49
51
  </div>
50
- <div class="panel-footer"><small>[[ip-blacklist:analytics.blacklist-daily]]</small></div>
52
+ <div class="card-footer"><small>[[ip-blacklist:analytics.blacklist-daily]]</small></div>
51
53
  </div>
52
54
  </div>
53
55
  </div>
@@ -17,14 +17,14 @@
17
17
  </div>
18
18
 
19
19
  <form class="form-horizontal" role="form" method="post" id="login-form">
20
- <div class="form-group">
21
- <label for="username" class="col-lg-2 control-label">{allowLoginWith}</label>
20
+ <div class="row mb-2">
21
+ <label for="username" class="col-lg-2 col-form-label">{allowLoginWith}</label>
22
22
  <div class="col-lg-10">
23
23
  <input class="form-control" type="text" placeholder="{allowLoginWith}" name="username" id="username" autocorrect="off" autocapitalize="off" value="{username}"/>
24
24
  </div>
25
25
  </div>
26
- <div class="form-group">
27
- <label for="password" class="col-lg-2 control-label">[[user:password]]</label>
26
+ <div class="row mb-2">
27
+ <label for="password" class="col-lg-2 col-form-label">[[user:password]]</label>
28
28
  <div class="col-lg-10">
29
29
  <input class="form-control" type="password" placeholder="[[user:password]]" name="password" id="password" <!-- IF username -->autocomplete="off"<!-- ENDIF username -->/>
30
30
  <p id="caps-lock-warning" class="text-danger hidden">
@@ -32,8 +32,8 @@
32
32
  </p>
33
33
  </div>
34
34
  </div>
35
- <div class="form-group">
36
- <div class="col-lg-offset-2 col-lg-10">
35
+ <div class="row mb-2">
36
+ <div class="col-lg-10 offset-lg-2">
37
37
  <div class="checkbox">
38
38
  <label>
39
39
  <input type="checkbox" name="remember" id="remember" checked /> [[login:remember_me]]
@@ -42,26 +42,29 @@
42
42
  </div>
43
43
  </div>
44
44
  {{{each loginFormEntry}}}
45
- <div class="form-group loginFormEntry">
46
- <label for="login-{loginFormEntry.styleName}" class="col-lg-4 control-label">{loginFormEntry.label}</label>
47
- <div id="login-{loginFormEntry.styleName}" class="col-lg-8">{{loginFormEntry.html}}</div>
45
+ <div class="row mb-2 loginFormEntry">
46
+ <label for="login-{loginFormEntry.styleName}" class="col-lg-2 col-form-label">{loginFormEntry.label}</label>
47
+ <div id="login-{loginFormEntry.styleName}" class="col-lg-10">{{loginFormEntry.html}}</div>
48
48
  </div>
49
49
  {{{end}}}
50
50
  <input type="hidden" name="_csrf" value="{config.csrf_token}" />
51
51
  <input type="hidden" name="noscript" id="noscript" value="true" />
52
- <div class="form-group">
53
- <div class="col-lg-offset-2 col-lg-10">
54
- <button class="btn btn-primary btn-lg btn-block" id="login" type="submit">[[global:login]]</button>
52
+ <div class="row">
53
+ <div class="col-lg-10 offset-lg-2">
54
+ <button class="btn btn-primary btn-lg" id="login" type="submit">[[global:login]]</button>
55
+ </div>
56
+ </div>
57
+ <div class="row">
58
+ <div class="col-lg-10 offset-lg-2">
55
59
  <!-- IF allowRegistration -->
56
60
  <span>[[login:dont_have_account]] <a href="{config.relative_path}/register">[[register:register]]</a></span>
57
61
  <!-- ENDIF allowRegistration -->
58
62
  <!-- IF allowPasswordReset -->
59
- &nbsp; <a id="reset-link" href="{config.relative_path}/reset">[[login:forgot_password]]</a>
63
+ <a id="reset-link" href="{config.relative_path}/reset">[[login:forgot_password]]</a>
60
64
  <!-- ENDIF allowPasswordReset -->
61
65
  </div>
62
66
  </div>
63
67
  </form>
64
-
65
68
  </div>
66
69
  </div>
67
70
  {{{ end }}}
@@ -1,3 +1,3 @@
1
- <div id="taskbar" class="taskbar navbar-fixed-bottom">
1
+ <div id="taskbar" class="taskbar fixed-bottom">
2
2
  <div class="navbar-inner"><ul class="nav navbar-nav"></ul></div>
3
3
  </div>
@@ -16,11 +16,11 @@
16
16
  </a>
17
17
 
18
18
  <div class="row usercard-info">
19
- <div class="col-xs-4">
19
+ <div class="col-4">
20
20
  <small>[[global:posts]]</small>
21
21
  <span class="human-readable-number">{postcount}</span>
22
22
  </div>
23
- <div class="col-xs-4">
23
+ <div class="col-4">
24
24
  <small>[[global:reputation]]</small>
25
25
  <span class="human-readable-number">{reputation}</span>
26
26
  </div>
@@ -2,59 +2,61 @@
2
2
  <div class="notifications">
3
3
 
4
4
  <!-- IMPORT partials/breadcrumbs.tpl -->
5
-
6
- <div class="btn-toolbar">
7
- <div class="dropdown pull-right">
8
- <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="true">
9
- <i class="fa fa-eye"></i>
10
- <span class="caret"></span>
5
+ <div class="btn-toolbar justify-content-end" role="toolbar">
6
+ <div class="btn-group me-2">
7
+ <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
8
+ {{{ if selectedFilter }}}{selectedFilter.name}{{{ end}}} <span class="caret"></span>
11
9
  </button>
12
- <ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenu1">
13
- <li role="presentation"><a role="menuitem" tabindex="-1" href="#" data-ajaxify="false" component="notifications/mark_all">[[notifications:mark_all_read]]</a></li>
10
+ <ul class="dropdown-menu dropdown-menu-end" role="menu">
11
+ {{{ each filters }}}
12
+ {{{ if filters.separator }}}
13
+ <li role="separator" class="dropdown-divider"></li>
14
+ {{{ else }}}
15
+ <li role="presentation" class="category">
16
+ <a class="dropdown-item" role="menu-item" href="{config.relative_path}/notifications?filter={filters.filter}"><i class="fa fa-fw {{{ if filters.selected }}}fa-check{{{ end }}}"></i> {filters.name}</a>
17
+ </li>
18
+ {{{ end }}}
19
+ {{{ end }}}
14
20
  </ul>
15
21
  </div>
16
22
 
17
- <div class="dropdown pull-right">
18
- <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
19
- <!-- IF selectedFilter -->{selectedFilter.name}<!-- ENDIF selectedFilter --> <span class="caret"></span>
23
+ <div class="btn-group">
24
+ <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="true">
25
+ <i class="fa fa-eye"></i>
26
+ <span class="caret"></span>
20
27
  </button>
21
- <ul class="dropdown-menu" role="menu">
22
- {{{each filters}}}
23
- <!-- IF filters.separator -->
24
- <li role="separator" class="divider"></li>
25
- <!-- ELSE -->
26
- <li role="presentation" class="category">
27
- <a role="menu-item" href="{config.relative_path}/notifications?filter={filters.filter}"><i class="fa fa-fw <!-- IF filters.selected -->fa-check<!-- ENDIF filters.selected -->"></i> {filters.name}</a>
28
- </li>
29
- <!-- ENDIF filters.separator -->
30
- {{{end}}}
28
+ <ul class="dropdown-menu dropdown-menu-end" role="menu" aria-labelledby="dropdownMenu1">
29
+ <li role="presentation"><a class="dropdown-item" role="menuitem" tabindex="-1" href="#" component="notifications/mark_all">[[notifications:mark_all_read]]</a></li>
31
30
  </ul>
32
31
  </div>
33
32
  </div>
34
33
 
35
34
  <hr />
36
35
 
37
- <div class="alert alert-info <!-- IF notifications.length -->hidden<!-- ENDIF notifications.length -->">
36
+ <div class="alert alert-info {{{ if notifications.length }}}hidden{{{ end }}}">
38
37
  [[notifications:no_notifs]]
39
38
  </div>
40
39
 
41
- <ul class="notifications-list" data-nextstart="{nextStart}">
40
+ <ul class="notifications-list list-unstyled" data-nextstart="{nextStart}">
42
41
  {{{each notifications}}}
43
- <li data-nid="{notifications.nid}" class="{notifications.readClass}" component="notifications/item">
44
- <!-- IF notifications.image -->
45
- <!-- IF notifications.from -->
46
- <a class="pull-left" href="{config.relative_path}/user/{notifications.user.userslug}"><img class="user-img" src="{notifications.image}" /></a>
47
- <!-- ENDIF notifications.from -->
48
- <!-- ELSE -->
49
- <a class="pull-left" href="{config.relative_path}/user/{notifications.user.userslug}"><div class="pull-left user-icon user-img" style="background-color: {notifications.user.icon:bgColor};">{notifications.user.icon:text}</div></a>
50
- <!-- ENDIF notifications.image -->
51
-
52
- <p>
53
- <a component="notifications/item/link" href="{notifications.path}">{notifications.bodyShort}</a>
54
- </p>
55
- <p class="timestamp">
56
- <span class="timeago" title="{notifications.datetimeISO}"></span>
57
- </p>
42
+ <li data-nid="{notifications.nid}" class="{notifications.readClass} {{{ if !./read}}}text-bg-warning{{{ end }}} d-flex pointer border p-3 mb-2" component="notifications/item">
43
+ <div class="me-2">
44
+ {{{ if notifications.from }}}
45
+ {buildAvatar(notifications.user, "24px", true)}
46
+ {{{ else }}}
47
+ {{{ if notifications.image }}}
48
+ <img width="24" height="24" src="{notifications.image}" />
49
+ {{{ end }}}
50
+ {{{ end }}}
51
+ </div>
52
+ <div>
53
+ <p class="mb-1">
54
+ <a class="text-reset" component="notifications/item/link" href="{notifications.path}">{notifications.bodyShort}</a>
55
+ </p>
56
+ <p class="timestamp">
57
+ <span class="timeago small text-reset" title="{notifications.datetimeISO}"></span>
58
+ </p>
59
+ </div>
58
60
  </li>
59
61
  {{{end}}}
60
62
  </ul>
@@ -1,9 +1,9 @@
1
- <div class="form-group">
2
- <label for="agree-terms">[[register:terms_of_use]]</label>
3
- <div class="tos">{termsOfUse}</div>
4
- <div class="checkbox">
5
- <label>
6
- <input type="checkbox" name="agree-terms" id="agree-terms"> [[register:agree_to_terms_of_use]]
7
- </label>
8
- </div>
1
+ <div class="form-group">
2
+ <label for="agree-terms">[[register:terms_of_use]]</label>
3
+ <div class="tos">{termsOfUse}</div>
4
+ <div class="checkbox">
5
+ <label>
6
+ <input type="checkbox" name="agree-terms" id="agree-terms"> [[register:agree_to_terms_of_use]]
7
+ </label>
8
+ </div>
9
9
  </div>
@@ -1,9 +1,9 @@
1
1
  <li component="categories/category" data-cid="{../cid}" data-parent-cid="{../parentCid}" class="row clearfix">
2
2
  <meta itemprop="name" content="{../name}">
3
3
 
4
- <div class="content col-xs-12 col-md-10 col-sm-12 depth-{../depth}">
5
- <div class="icon pull-left" style="{function.generateCategoryBackground}">
6
- <i class="fa fa-fw {../icon}"></i>
4
+ <div class="content col-10 depth-{../depth}">
5
+ <div class="float-start">
6
+ {buildCategoryIcon(@value, "48px", "rounded-circle")}
7
7
  </div>
8
8
 
9
9
  <h2 class="title">
@@ -11,12 +11,13 @@
11
11
  </h2>
12
12
  <div>
13
13
  <!-- IF ../descriptionParsed -->
14
- <div class="description">
14
+ <div class="description text-muted">
15
15
  {../descriptionParsed}
16
16
  </div>
17
17
  <!-- ENDIF ../descriptionParsed -->
18
18
  </div>
19
19
  </div>
20
-
20
+ <div class="col-2">
21
21
  <!-- IMPORT partials/category/watch.tpl -->
22
+ </div>
22
23
  </li>
@@ -9,9 +9,9 @@
9
9
  <div class="cover" component="account/cover" style="background-image: url({cover:url}); background-position: {cover:position};">
10
10
  <div class="avatar-wrapper" data-uid="{uid}">
11
11
  <!-- IF picture -->
12
- <img src="{picture}" class="avatar avatar-xl avatar-rounded" />
12
+ <img src="{picture}" class="avatar avatar-rounded" style="--avatar-size: 128px;" />
13
13
  <!-- ELSE -->
14
- <div class="avatar avatar-xl avatar-rounded" style="background-color: {icon:bgColor};" title="{username}">{icon:text}</div>
14
+ <div class="avatar avatar-rounded" style="background-color: {icon:bgColor}; --avatar-size: 128px;" title="{username}">{icon:text}</div>
15
15
  <!-- ENDIF picture -->
16
16
  <i component="user/status" class="fa fa-circle status {status}" title="[[global:{status}]]"></i>
17
17
 
@@ -1,101 +1,101 @@
1
1
  <div class="btn-group account-fab bottom-sheet">
2
- <button type="button" class="persona-fab dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
2
+ <button type="button" class="persona-fab dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
3
3
  <i class="fa fa-ellipsis-v"></i>
4
4
  </button>
5
- <ul class="dropdown-menu dropdown-menu-right">
5
+ <ul class="dropdown-menu dropdown-menu-end">
6
6
  <!-- IF loggedIn -->
7
7
  <!-- IF !isSelf -->
8
8
  <!-- IF !banned -->
9
9
  <!-- IF !config.disableChat -->
10
10
  <li class="<!-- IF !hasPrivateChat -->hidden<!-- ENDIF !hasPrivateChat -->">
11
- <a component="account/chat" href="#">[[user:chat_with, {username}]]</a>
11
+ <a class="dropdown-item" component="account/chat" href="#">[[user:chat_with, {username}]]</a>
12
12
  </li>
13
13
  <li>
14
- <a component="account/new-chat" href="#">[[user:new_chat_with, {username}]]</a>
14
+ <a class="dropdown-item" component="account/new-chat" href="#">[[user:new_chat_with, {username}]]</a>
15
15
  </li>
16
16
  <!-- ENDIF !config.disableChat -->
17
17
  <li>
18
- <a component="account/flag" href="#">[[user:flag-profile]]</a>
18
+ <a class="dropdown-item" component="account/flag" href="#">[[user:flag-profile]]</a>
19
19
  </li>
20
20
  <li>
21
- <a component="account/block" href="#"><!-- IF !../isBlocked -->[[user:block_user]]<!-- ELSE -->[[user:unblock_user]]<!-- END --></a>
21
+ <a class="dropdown-item" component="account/block" href="#"><!-- IF !../isBlocked -->[[user:block_user]]<!-- ELSE -->[[user:unblock_user]]<!-- END --></a>
22
22
  </li>
23
- <li role="separator" class="divider"></li>
23
+ <li role="separator" class="dropdown-divider"></li>
24
24
  <!-- ENDIF !banned -->
25
25
  <!-- ENDIF !isSelf -->
26
26
  <!-- ENDIF loggedIn -->
27
27
  <li>
28
- <a href="{config.relative_path}/user/{userslug}" class="inline-block" id="profile">[[user:profile]]</a>
28
+ <a class="dropdown-item" href="{config.relative_path}/user/{userslug}" class="d-inline-block" id="profile">[[user:profile]]</a>
29
29
  </li>
30
30
  <!-- IF canEdit -->
31
- <li><a href="{config.relative_path}/user/{userslug}/edit">[[user:edit]]</a></li>
32
- <li><a href="{config.relative_path}/user/{userslug}/settings">[[user:settings]]</a></li>
31
+ <li><a class="dropdown-item" href="{config.relative_path}/user/{userslug}/edit">[[user:edit]]</a></li>
32
+ <li><a class="dropdown-item" href="{config.relative_path}/user/{userslug}/settings">[[user:settings]]</a></li>
33
33
  <!-- ENDIF canEdit -->
34
34
 
35
35
  <!-- IF !isSelf -->
36
36
  {{{ if (canBan || canMute) }}}
37
- <li role="separator" class="divider"></li>
37
+ <li role="separator" class="dropdown-divider"></li>
38
38
  <li class="dropdown-header">[[user:admin_actions_label]]</li>
39
39
  {{{ end }}}
40
40
  {{{ if canBan }}}
41
41
  <li class="<!-- IF banned -->hide<!-- ENDIF banned -->">
42
- <a component="account/ban" href="#">[[user:ban_account]]</a>
42
+ <a class="dropdown-item" component="account/ban" href="#">[[user:ban_account]]</a>
43
43
  </li>
44
44
  <li class="<!-- IF !banned -->hide<!-- ENDIF !banned -->">
45
- <a component="account/unban" href="#">[[user:unban_account]]</a>
45
+ <a class="dropdown-item" component="account/unban" href="#">[[user:unban_account]]</a>
46
46
  </li>
47
47
  {{{ end }}}
48
48
  {{{ if canMute }}}
49
49
  <li class="<!-- IF muted -->hide<!-- ENDIF muted -->">
50
- <a component="account/mute" href="#">[[user:mute_account]]</a>
50
+ <a class="dropdown-item" component="account/mute" href="#">[[user:mute_account]]</a>
51
51
  </li>
52
52
  <li class="<!-- IF !muted -->hide<!-- ENDIF !muted -->">
53
- <a component="account/unmute" href="#">[[user:unmute_account]]</a>
53
+ <a class="dropdown-item" component="account/unmute" href="#">[[user:unmute_account]]</a>
54
54
  </li>
55
55
  {{{ end }}}
56
56
  <!-- IF isAdmin -->
57
57
  <li>
58
- <a component="account/delete-account" href="#" class="">[[user:delete_account_as_admin]]</a>
59
- <a component="account/delete-content" href="#" class="">[[user:delete_content]]</a>
60
- <a component="account/delete-all" href="#" class="">[[user:delete_all]]</a>
58
+ <a component="account/delete-account" href="#" class="dropdown-item">[[user:delete_account_as_admin]]</a>
59
+ <a component="account/delete-content" href="#" class="dropdown-item">[[user:delete_content]]</a>
60
+ <a component="account/delete-all" href="#" class="dropdown-item">[[user:delete_all]]</a>
61
61
  </li>
62
62
  <!-- ENDIF isAdmin -->
63
63
  <!-- ENDIF !isSelf -->
64
64
 
65
- <li role="separator" class="divider"></li>
66
- <li><a href="{config.relative_path}/user/{userslug}/following">[[user:following]] <span class="badge badge-default pull-right formatted-number" title="{counts.following}">{counts.following}</span></a></li>
67
- <li><a href="{config.relative_path}/user/{userslug}/followers">[[user:followers]] <span class="badge badge-default pull-right formatted-number" title="{counts.followers}">{counts.followers}</span></a></li>
65
+ <li role="separator" class="dropdown-divider"></li>
66
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/following">[[user:following]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.following}">{counts.following}</span></a></li>
67
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/followers">[[user:followers]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.followers}">{counts.followers}</span></a></li>
68
68
  <!-- IF canEdit -->
69
- <li><a href="{config.relative_path}/user/{userslug}/blocks">[[user:blocks]] <span class="badge badge-default pull-right formatted-number" title="{counts.blocks}">{counts.blocks}</span></a></li>
69
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/blocks">[[user:blocks]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.blocks}">{counts.blocks}</span></a></li>
70
70
  <!-- ENDIF canEdit -->
71
- <li role="separator" class="divider"></li>
72
- <li><a href="{config.relative_path}/user/{userslug}/topics">[[global:topics]] <span class="badge badge-default pull-right formatted-number" title="{counts.topics}">{counts.topics}</span></a></li>
73
- <li><a href="{config.relative_path}/user/{userslug}/posts">[[global:posts]] <span class="badge badge-default pull-right formatted-number" title="{counts.posts}">{counts.posts}</span></a></li>
71
+ <li role="separator" class="dropdown-divider"></li>
72
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/topics">[[global:topics]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.topics}">{counts.topics}</span></a></li>
73
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/posts">[[global:posts]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.posts}">{counts.posts}</span></a></li>
74
74
  <!-- IF !reputation:disabled -->
75
- <li><a href="{config.relative_path}/user/{userslug}/best">[[global:best]] <span class="badge badge-default pull-right formatted-number" title="{counts.best}">{counts.best}</span></a></li>
76
- <li><a href="{config.relative_path}/user/{userslug}/controversial">[[global:controversial]] <span class="badge badge-default pull-right formatted-number" title="{counts.controversial}">{counts.controversial}</span></a></li>
75
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/best">[[global:best]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.best}">{counts.best}</span></a></li>
76
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/controversial">[[global:controversial]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.controversial}">{counts.controversial}</span></a></li>
77
77
  <!-- ENDIF !reputation:disabled -->
78
- <li><a href="{config.relative_path}/user/{userslug}/groups">[[global:header.groups]] <span class="badge badge-default pull-right formatted-number" title="{counts.groups}">{counts.groups}</span></a></li>
78
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/groups">[[global:header.groups]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.groups}">{counts.groups}</span></a></li>
79
79
 
80
80
  <!-- IF canEdit -->
81
- <li><a href="{config.relative_path}/user/{userslug}/categories">[[user:watched_categories]] <span class="badge badge-default pull-right formatted-number" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span></a></li>
82
- <li><a href="{config.relative_path}/user/{userslug}/bookmarks">[[user:bookmarks]] <span class="badge badge-default pull-right formatted-number" title="{counts.bookmarks}">{counts.bookmarks}</span></a></li>
83
- <li><a href="{config.relative_path}/user/{userslug}/watched">[[user:watched]] <span class="badge badge-default pull-right formatted-number" title="{counts.watched}">{counts.watched}</span></a></li>
84
- <li><a href="{config.relative_path}/user/{userslug}/ignored">[[user:ignored]] <span class="badge badge-default pull-right formatted-number" title="{counts.ignored}">{counts.ignored}</span></a></li>
81
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/categories">[[user:watched_categories]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span></a></li>
82
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/bookmarks">[[user:bookmarks]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.bookmarks}">{counts.bookmarks}</span></a></li>
83
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/watched">[[user:watched]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.watched}">{counts.watched}</span></a></li>
84
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/ignored">[[user:ignored]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.ignored}">{counts.ignored}</span></a></li>
85
85
  <!-- IF !reputation:disabled -->
86
- <li><a href="{config.relative_path}/user/{userslug}/upvoted">[[global:upvoted]] <span class="badge badge-default pull-right formatted-number" title="{counts.upvoted}">{counts.upvoted}</span></a></li>
86
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/upvoted">[[global:upvoted]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.upvoted}">{counts.upvoted}</span></a></li>
87
87
  <!-- IF !downvote:disabled -->
88
- <li><a href="{config.relative_path}/user/{userslug}/downvoted">[[global:downvoted]] <span class="badge badge-default pull-right formatted-number" title="{counts.downvoted}">{counts.downvoted}</span></a></li>
88
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/downvoted">[[global:downvoted]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.downvoted}">{counts.downvoted}</span></a></li>
89
89
  <!-- ENDIF !downvote:disabled -->
90
90
  <!-- ENDIF !reputation:disabled -->
91
- <li><a href="{config.relative_path}/user/{userslug}/uploads">[[global:uploads]] <span class="badge badge-default pull-right formatted-number" title="{counts.uploaded}">{counts.uploaded}</span></a></li>
91
+ <li><a class="dropdown-item d-flex justify-content-between align-items-center" href="{config.relative_path}/user/{userslug}/uploads">[[global:uploads]] <span class="badge bg-secondary formatted-number rounded-pill ms-2" title="{counts.uploaded}">{counts.uploaded}</span></a></li>
92
92
  <!-- ENDIF canEdit -->
93
93
 
94
94
  {{{each profile_links}}}
95
95
  <!-- IF @first -->
96
- <li role="separator" class="divider"></li>
96
+ <li role="separator" class="dropdown-divider"></li>
97
97
  <!-- ENDIF @first -->
98
- <li id="{profile_links.id}" class="plugin-link <!-- IF profile_links.public -->public<!-- ELSE -->private<!-- ENDIF profile_links.public -->"><a href="{config.relative_path}/user/{userslug}/{profile_links.route}"><!-- IF ../icon --><i class="fa fa-fw {profile_links.icon}"></i> <!-- END -->{profile_links.name}</a></li>
98
+ <li id="{profile_links.id}" class="plugin-link <!-- IF profile_links.public -->public<!-- ELSE -->private<!-- ENDIF profile_links.public -->"><a class="dropdown-item" href="{config.relative_path}/user/{userslug}/{profile_links.route}"><!-- IF ../icon --><i class="fa fa-fw {profile_links.icon}"></i> <!-- END -->{profile_links.name}</a></li>
99
99
  {{{end}}}
100
100
  </ul>
101
101
  </div>
@@ -1,7 +1,7 @@
1
1
  <!-- IF breadcrumbs.length -->
2
2
  <ol class="breadcrumb" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
3
3
  {{{each breadcrumbs}}}
4
- <li<!-- IF @last --> component="breadcrumb/current"<!-- ENDIF @last --> itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" <!-- IF @last -->class="active"<!-- ENDIF @last -->>
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 -->">
5
5
  <meta itemprop="position" content="{@index}" />
6
6
  {{{ if ./url }}}<a href="{breadcrumbs.url}" itemprop="item">{{{ end }}}
7
7
  <span itemprop="name">
@@ -1,13 +1,20 @@
1
1
  <noscript><div class="dropdown" component="category-selector"></noscript>
2
- <label component="category/post" for="category-dropdown-check" class="btn btn-primary" id="new_topic" role="button">
2
+ <button component="category/post" for="category-dropdown-check" class="btn btn-primary text-nowrap" id="new_topic" role="button">
3
3
  [[category:new_topic_button]]
4
- </label>
4
+ </button>
5
5
  <noscript>
6
6
  <input type="checkbox" class="hidden" id="category-dropdown-check" aria-hidden="true">
7
7
  <ul component="category/list" class="dropdown-menu category-dropdown-menu" role="menu">
8
8
  {{{each categories}}}
9
9
  <li role="presentation" class="category {{{if categories.disabledClass}}}disabled{{{end}}}">
10
- <a role="menu-item" href="{config.relative_path}/compose?cid={categories.cid}">{categories.level}<span component="category-markup">{{{if categories.icon}}}<span class="fa-stack" style="{function.generateCategoryBackground}"><i style="color: {categories.color};" class="fa fa-stack-1x fa-fw {categories.icon}"></i></span>{{{end}}} {categories.name}</span></a>
10
+ <a role="menu-item" href="{config.relative_path}/compose?cid={categories.cid}">{categories.level}
11
+ <span component="category-markup">
12
+ <div class="category-item d-inline-block">
13
+ {buildCategoryIcon(@value, "24px", "rounded-circle")}
14
+ {categories.name}
15
+ </div>
16
+ </span>
17
+ </a>
11
18
  </li>
12
19
  {{{end}}}
13
20
  </ul>