nodebb-theme-harmony 2.0.0 → 2.0.1
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.
- package/.eslintrc +3 -3
- package/README.md +22 -22
- package/lib/controllers.js +29 -29
- package/library.js +183 -183
- package/package.json +48 -48
- package/plugin.json +24 -24
- package/public/.eslintrc +3 -3
- package/public/admin.js +15 -15
- package/public/harmony.js +287 -287
- package/public/settings.js +31 -31
- package/renovate.json +6 -6
- package/scss/account.scss +27 -27
- package/scss/category.scss +3 -3
- package/scss/chats.scss +11 -11
- package/scss/common.scss +122 -122
- package/scss/fonts.scss +19 -19
- package/scss/groups.scss +22 -22
- package/scss/harmony.scss +24 -24
- package/scss/header.scss +15 -15
- package/scss/mixins.scss +183 -183
- package/scss/modals.scss +6 -6
- package/scss/modules/breadcrumbs.scss +15 -15
- package/scss/modules/cover.scss +102 -102
- package/scss/modules/filters.scss +7 -7
- package/scss/modules/nprogress.scss +80 -80
- package/scss/modules/paginator.scss +23 -23
- package/scss/modules/tags.scss +5 -5
- package/scss/modules/topic-navigator.scss +52 -52
- package/scss/modules/topics-list.scss +40 -40
- package/scss/modules/user-menu.scss +10 -10
- package/scss/overrides.scss +65 -65
- package/scss/sidebar.scss +188 -188
- package/scss/skins.scss +58 -58
- package/scss/status.scss +24 -24
- package/scss/topic.scss +130 -130
- package/templates/account/blocks.tpl +51 -51
- package/templates/account/categories.tpl +63 -63
- package/templates/account/consent.tpl +73 -73
- package/templates/account/edit/password.tpl +34 -34
- package/templates/account/edit/username.tpl +29 -29
- package/templates/account/edit.tpl +137 -137
- package/templates/account/followers.tpl +14 -14
- package/templates/account/following.tpl +15 -15
- package/templates/account/groups.tpl +15 -15
- package/templates/account/info.tpl +270 -270
- package/templates/account/posts.tpl +35 -35
- package/templates/account/profile.tpl +92 -92
- package/templates/account/sessions.tpl +8 -8
- package/templates/account/settings.tpl +236 -236
- package/templates/account/shares.tpl +19 -19
- package/templates/account/tags.tpl +12 -12
- package/templates/account/theme.tpl +63 -63
- package/templates/account/topics.tpl +44 -44
- package/templates/account/uploads.tpl +37 -37
- package/templates/admin/plugins/harmony.tpl +57 -57
- package/templates/categories.tpl +29 -29
- package/templates/category.tpl +72 -72
- package/templates/footer.tpl +17 -17
- package/templates/groups/details.tpl +86 -86
- package/templates/groups/list.tpl +58 -58
- package/templates/groups/members.tpl +9 -9
- package/templates/header.tpl +45 -45
- package/templates/notifications.tpl +32 -32
- package/templates/partials/account/admin-menu.tpl +36 -36
- package/templates/partials/account/category-item.tpl +22 -22
- package/templates/partials/account/footer.tpl +2 -2
- package/templates/partials/account/header.tpl +98 -98
- package/templates/partials/account/session-list.tpl +18 -18
- package/templates/partials/account/sidebar-left.tpl +116 -116
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -15
- package/templates/partials/breadcrumbs.tpl +12 -12
- package/templates/partials/buttons/newTopic.tpl +22 -22
- package/templates/partials/categories/item.tpl +56 -56
- package/templates/partials/categories/lastpost.tpl +24 -24
- package/templates/partials/categories/link.tpl +4 -4
- package/templates/partials/category/subcategory.tpl +18 -18
- package/templates/partials/category/tags.tpl +3 -3
- package/templates/partials/cookie-consent.tpl +6 -6
- package/templates/partials/groups/admin.tpl +95 -95
- package/templates/partials/groups/invited.tpl +32 -32
- package/templates/partials/groups/list.tpl +15 -15
- package/templates/partials/groups/memberlist.tpl +46 -46
- package/templates/partials/groups/pending.tpl +29 -29
- package/templates/partials/groups/sidebar-left.tpl +27 -27
- package/templates/partials/header/brand.tpl +27 -27
- package/templates/partials/mobile-footer.tpl +95 -95
- package/templates/partials/notifications_list.tpl +44 -44
- package/templates/partials/paginator.tpl +46 -46
- package/templates/partials/post_bar.tpl +27 -27
- package/templates/partials/posts_list.tpl +7 -7
- package/templates/partials/posts_list_item.tpl +19 -19
- package/templates/partials/quick-search-results.tpl +46 -46
- package/templates/partials/search-filters.tpl +183 -183
- package/templates/partials/search-results.tpl +54 -54
- package/templates/partials/sidebar/chats.tpl +45 -45
- package/templates/partials/sidebar/drafts.tpl +63 -63
- package/templates/partials/sidebar/logged-in-menu.tpl +22 -22
- package/templates/partials/sidebar/logged-out-menu.tpl +44 -44
- package/templates/partials/sidebar/notifications.tpl +49 -49
- package/templates/partials/sidebar/search-mobile.tpl +28 -28
- package/templates/partials/sidebar/search.tpl +30 -30
- package/templates/partials/sidebar/user-menu.tpl +103 -103
- package/templates/partials/sidebar-left.tpl +39 -39
- package/templates/partials/sidebar-right.tpl +16 -16
- package/templates/partials/skin-switcher.tpl +50 -50
- package/templates/partials/tags_list.tpl +7 -7
- package/templates/partials/toast.tpl +19 -19
- package/templates/partials/topic/event.tpl +12 -12
- package/templates/partials/topic/navigation-post.tpl +9 -9
- package/templates/partials/topic/navigator-mobile.tpl +61 -61
- package/templates/partials/topic/navigator.tpl +26 -26
- package/templates/partials/topic/necro-post.tpl +5 -5
- package/templates/partials/topic/post-menu-list.tpl +156 -156
- package/templates/partials/topic/post-menu.tpl +4 -4
- package/templates/partials/topic/post-placeholder.tpl +14 -14
- package/templates/partials/topic/post.tpl +146 -146
- package/templates/partials/topic/quickreply.tpl +28 -28
- package/templates/partials/topic/reply-button.tpl +26 -26
- package/templates/partials/topic/selection-tooltip.tpl +2 -2
- package/templates/partials/topic/sort.tpl +27 -27
- package/templates/partials/topic/stats.tpl +14 -14
- package/templates/partials/topic/thumbs.tpl +4 -4
- package/templates/partials/topic/tools.tpl +8 -8
- package/templates/partials/topic/topic-menu-list.tpl +73 -73
- package/templates/partials/topic/watch.tpl +59 -59
- package/templates/partials/topic-filters.tpl +15 -15
- package/templates/partials/topic-list-bar.tpl +54 -54
- package/templates/partials/topic-terms.tpl +15 -15
- package/templates/partials/topics_list.tpl +131 -131
- package/templates/partials/users/item.tpl +39 -39
- package/templates/partials/users_list.tpl +4 -4
- package/templates/partials/users_list_menu.tpl +14 -14
- package/templates/popular.tpl +34 -34
- package/templates/post-queue.tpl +211 -211
- package/templates/recent.tpl +42 -42
- package/templates/search.tpl +46 -46
- package/templates/tag.tpl +34 -34
- package/templates/tags.tpl +49 -49
- package/templates/top.tpl +34 -34
- package/templates/topic.tpl +123 -123
- package/templates/unread.tpl +31 -31
- package/templates/users.tpl +39 -39
- package/templates/world.tpl +66 -66
- package/theme.json +6 -6
- package/package-lock.json +0 -2338
package/templates/footer.tpl
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
</div><!-- /.container#content -->
|
|
3
|
-
</main>
|
|
4
|
-
<!-- IMPORT partials/sidebar-right.tpl -->
|
|
5
|
-
</div>
|
|
6
|
-
<!-- IMPORT partials/mobile-footer.tpl -->
|
|
7
|
-
{{{ if !isSpider }}}
|
|
8
|
-
<div>
|
|
9
|
-
<div component="toaster/tray" class="alert-window fixed-bottom mb-5 mb-md-2 me-2 me-md-5 ms-auto" style="width:300px; z-index: 1090;">
|
|
10
|
-
<!-- IMPORT partials/reconnect-alert.tpl -->
|
|
11
|
-
</div>
|
|
12
|
-
</div>
|
|
13
|
-
{{{ end }}}
|
|
14
|
-
|
|
15
|
-
<!-- IMPORT partials/footer/js.tpl -->
|
|
16
|
-
</body>
|
|
17
|
-
</html>
|
|
1
|
+
|
|
2
|
+
</div><!-- /.container#content -->
|
|
3
|
+
</main>
|
|
4
|
+
<!-- IMPORT partials/sidebar-right.tpl -->
|
|
5
|
+
</div>
|
|
6
|
+
<!-- IMPORT partials/mobile-footer.tpl -->
|
|
7
|
+
{{{ if !isSpider }}}
|
|
8
|
+
<div>
|
|
9
|
+
<div component="toaster/tray" class="alert-window fixed-bottom mb-5 mb-md-2 me-2 me-md-5 ms-auto" style="width:300px; z-index: 1090;">
|
|
10
|
+
<!-- IMPORT partials/reconnect-alert.tpl -->
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
{{{ end }}}
|
|
14
|
+
|
|
15
|
+
<!-- IMPORT partials/footer/js.tpl -->
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
<div component="groups/container" class="groups details">
|
|
2
|
-
<div class="cover position-absolute start-0 top-0" component="groups/cover" style="background-image: url({group.cover:url}); background-position: {group.cover:position};">
|
|
3
|
-
<div class="container">
|
|
4
|
-
{{{ if group.isOwner }}}
|
|
5
|
-
<div class="controls text-center">
|
|
6
|
-
<span class="upload p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-upload"></i></span>
|
|
7
|
-
<span class="resize p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-arrows"></i></span>
|
|
8
|
-
<span class="remove p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-times"></i></span>
|
|
9
|
-
</div>
|
|
10
|
-
<div class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></div>
|
|
11
|
-
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
12
|
-
{{{ end }}}
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<div class="d-flex flex-column flex-md-row justify-content-md-between pb-4 mb-4 mt-2 border-bottom">
|
|
17
|
-
<div class="d-flex flex-column mt-1">
|
|
18
|
-
<div class="d-flex align-items-center gap-2">
|
|
19
|
-
<h3 class="mb-0">{group.displayName}</h3>
|
|
20
|
-
</div>
|
|
21
|
-
<div class="d-flex gap-2">
|
|
22
|
-
{group.descriptionParsed}
|
|
23
|
-
<div>
|
|
24
|
-
{{{ if group.private }}}<span class="badge text-bg-light border border-1">[[groups:details.private]]</span>{{{ end }}}
|
|
25
|
-
{{{ if group.hidden }}}<span class="badge text-bg-light border border-1">[[groups:details.hidden]]</span>{{{ end }}}
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="d-flex gap-2 align-items-start">
|
|
30
|
-
{{{ if loggedIn }}}
|
|
31
|
-
{function.membershipBtn, group}
|
|
32
|
-
{{{ end }}}
|
|
33
|
-
{{{ if isAdmin }}}
|
|
34
|
-
<a href="{config.relative_path}/admin/manage/groups/{group.nameEncoded}" target="_blank" class="btn btn-light"><i class="fa fa-gear"></i> [[user:edit]]</a>
|
|
35
|
-
{{{ end }}}
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<div class="d-flex flex-column flex-md-row">
|
|
40
|
-
<div data-widget-area="left">
|
|
41
|
-
{{{each widgets.left}}}
|
|
42
|
-
{{widgets.left.html}}
|
|
43
|
-
{{{end}}}
|
|
44
|
-
</div>
|
|
45
|
-
<!-- IMPORT partials/groups/sidebar-left.tpl -->
|
|
46
|
-
|
|
47
|
-
<div class="flex-grow-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
48
|
-
<div class="tab-content">
|
|
49
|
-
<div class="tab-pane fade show active" id="groups-posts" role="tabpanel">
|
|
50
|
-
<h3 class="fw-semibold fs-5 mb-0">[[global:posts]]</h3>
|
|
51
|
-
{{{ if !posts.length }}}
|
|
52
|
-
<div class="alert alert-info my-2">[[groups:details.has-no-posts]]</div>
|
|
53
|
-
{{{ end }}}
|
|
54
|
-
<!-- IMPORT partials/posts_list.tpl -->
|
|
55
|
-
</div>
|
|
56
|
-
<div class="tab-pane fade" id="groups-members" role="tabpanel">
|
|
57
|
-
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.members]]</h3>
|
|
58
|
-
|
|
59
|
-
<!-- IMPORT partials/groups/memberlist.tpl -->
|
|
60
|
-
</div>
|
|
61
|
-
{{{ if group.isOwner }}}
|
|
62
|
-
<div class="tab-pane fade" id="groups-pending" role="tabpanel">
|
|
63
|
-
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.pending]]</h3>
|
|
64
|
-
<!-- IMPORT partials/groups/pending.tpl -->
|
|
65
|
-
</div>
|
|
66
|
-
|
|
67
|
-
<div class="tab-pane fade" id="groups-invited" role="tabpanel">
|
|
68
|
-
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.invited]]</h3>
|
|
69
|
-
<!-- IMPORT partials/groups/invited.tpl -->
|
|
70
|
-
</div>
|
|
71
|
-
|
|
72
|
-
<div class="tab-pane fade" id="groups-admin" role="tabpanel">
|
|
73
|
-
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.owner-options]]</h3>
|
|
74
|
-
<!-- IMPORT partials/groups/admin.tpl -->
|
|
75
|
-
</div>
|
|
76
|
-
{{{ end }}}
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
<div data-widget-area="right">
|
|
81
|
-
{{{each widgets.right}}}
|
|
82
|
-
{{widgets.right.html}}
|
|
83
|
-
{{{end}}}
|
|
84
|
-
</div>
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
1
|
+
<div component="groups/container" class="groups details">
|
|
2
|
+
<div class="cover position-absolute start-0 top-0" component="groups/cover" style="background-image: url({group.cover:url}); background-position: {group.cover:position};">
|
|
3
|
+
<div class="container">
|
|
4
|
+
{{{ if group.isOwner }}}
|
|
5
|
+
<div class="controls text-center">
|
|
6
|
+
<span class="upload p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-upload"></i></span>
|
|
7
|
+
<span class="resize p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-arrows"></i></span>
|
|
8
|
+
<span class="remove p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-times"></i></span>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></div>
|
|
11
|
+
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
12
|
+
{{{ end }}}
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="d-flex flex-column flex-md-row justify-content-md-between pb-4 mb-4 mt-2 border-bottom">
|
|
17
|
+
<div class="d-flex flex-column mt-1">
|
|
18
|
+
<div class="d-flex align-items-center gap-2">
|
|
19
|
+
<h3 class="mb-0">{group.displayName}</h3>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="d-flex gap-2">
|
|
22
|
+
{group.descriptionParsed}
|
|
23
|
+
<div>
|
|
24
|
+
{{{ if group.private }}}<span class="badge text-bg-light border border-1">[[groups:details.private]]</span>{{{ end }}}
|
|
25
|
+
{{{ if group.hidden }}}<span class="badge text-bg-light border border-1">[[groups:details.hidden]]</span>{{{ end }}}
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="d-flex gap-2 align-items-start">
|
|
30
|
+
{{{ if loggedIn }}}
|
|
31
|
+
{function.membershipBtn, group}
|
|
32
|
+
{{{ end }}}
|
|
33
|
+
{{{ if isAdmin }}}
|
|
34
|
+
<a href="{config.relative_path}/admin/manage/groups/{group.nameEncoded}" target="_blank" class="btn btn-light"><i class="fa fa-gear"></i> [[user:edit]]</a>
|
|
35
|
+
{{{ end }}}
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div class="d-flex flex-column flex-md-row">
|
|
40
|
+
<div data-widget-area="left">
|
|
41
|
+
{{{each widgets.left}}}
|
|
42
|
+
{{widgets.left.html}}
|
|
43
|
+
{{{end}}}
|
|
44
|
+
</div>
|
|
45
|
+
<!-- IMPORT partials/groups/sidebar-left.tpl -->
|
|
46
|
+
|
|
47
|
+
<div class="flex-grow-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
48
|
+
<div class="tab-content">
|
|
49
|
+
<div class="tab-pane fade show active" id="groups-posts" role="tabpanel">
|
|
50
|
+
<h3 class="fw-semibold fs-5 mb-0">[[global:posts]]</h3>
|
|
51
|
+
{{{ if !posts.length }}}
|
|
52
|
+
<div class="alert alert-info my-2">[[groups:details.has-no-posts]]</div>
|
|
53
|
+
{{{ end }}}
|
|
54
|
+
<!-- IMPORT partials/posts_list.tpl -->
|
|
55
|
+
</div>
|
|
56
|
+
<div class="tab-pane fade" id="groups-members" role="tabpanel">
|
|
57
|
+
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.members]]</h3>
|
|
58
|
+
|
|
59
|
+
<!-- IMPORT partials/groups/memberlist.tpl -->
|
|
60
|
+
</div>
|
|
61
|
+
{{{ if group.isOwner }}}
|
|
62
|
+
<div class="tab-pane fade" id="groups-pending" role="tabpanel">
|
|
63
|
+
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.pending]]</h3>
|
|
64
|
+
<!-- IMPORT partials/groups/pending.tpl -->
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="tab-pane fade" id="groups-invited" role="tabpanel">
|
|
68
|
+
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.invited]]</h3>
|
|
69
|
+
<!-- IMPORT partials/groups/invited.tpl -->
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div class="tab-pane fade" id="groups-admin" role="tabpanel">
|
|
73
|
+
<h3 class="fw-semibold fs-5 mb-3">[[groups:details.owner-options]]</h3>
|
|
74
|
+
<!-- IMPORT partials/groups/admin.tpl -->
|
|
75
|
+
</div>
|
|
76
|
+
{{{ end }}}
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<div data-widget-area="right">
|
|
81
|
+
{{{each widgets.right}}}
|
|
82
|
+
{{widgets.right.html}}
|
|
83
|
+
{{{end}}}
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
<div data-widget-area="header">
|
|
2
|
-
{{{each widgets.header}}}
|
|
3
|
-
{{widgets.header.html}}
|
|
4
|
-
{{{end}}}
|
|
5
|
-
</div>
|
|
6
|
-
<div class="groups list">
|
|
7
|
-
<h3 class="fw-semibold">[[pages:groups]]</h3>
|
|
8
|
-
<div class="d-flex flex-wrap justify-content-between">
|
|
9
|
-
<div class="mb-2 mb-md-0">
|
|
10
|
-
<div class="text-sm d-flex flex-wrap align-items-center gap-2">
|
|
11
|
-
[[topic:sort-by]]
|
|
12
|
-
<div class="d-flex gap-2">
|
|
13
|
-
<a href="?sort=alpha" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if (sort == "alpha") }}}active{{{ end }}}">[[groups:details.group-name]]</a>
|
|
14
|
-
<a href="?sort=count" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if (sort == "count") }}}active{{{ end }}}">[[groups:details.member-count]]</a>
|
|
15
|
-
<a href="?sort=date" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if (sort == "date") }}}active{{{ end }}}">[[groups:details.creation-date]]</a>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
<div>
|
|
20
|
-
<div class="d-flex justify-content-end gap-2">
|
|
21
|
-
<div>
|
|
22
|
-
{{{ if allowGroupCreation }}}
|
|
23
|
-
<button class="btn btn-primary btn-sm text-nowrap" data-action="new"><i class="fa fa-users"></i> [[groups:new-group]]</button>
|
|
24
|
-
{{{ end }}}
|
|
25
|
-
<select class="form-select hidden" id="search-sort">
|
|
26
|
-
<option value="alpha">[[groups:details.group-name]]</option>
|
|
27
|
-
<option value="count">[[groups:details.member-count]]</option>
|
|
28
|
-
<option value="date">[[groups:details.creation-date]]</option>
|
|
29
|
-
</select>
|
|
30
|
-
</div>
|
|
31
|
-
<div>
|
|
32
|
-
<div class="input-group">
|
|
33
|
-
<input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" name="query" id="search-text">
|
|
34
|
-
<button id="search-button" class="btn btn-primary btn-sm" aria-label="[[global:search]]">
|
|
35
|
-
<i class="fa fa-search"></i>
|
|
36
|
-
</button>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<hr />
|
|
44
|
-
|
|
45
|
-
<div component="groups/container" class="row" id="groups-list">
|
|
46
|
-
{{{ if groups.length }}}
|
|
47
|
-
<!-- IMPORT partials/groups/list.tpl -->
|
|
48
|
-
{{{ else }}}
|
|
49
|
-
<div class="col-12">
|
|
50
|
-
<div class="alert alert-warning">
|
|
51
|
-
[[groups:no-groups-found]]
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
{{{ end }}}
|
|
55
|
-
</div>
|
|
56
|
-
|
|
57
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
58
|
-
</div>
|
|
1
|
+
<div data-widget-area="header">
|
|
2
|
+
{{{each widgets.header}}}
|
|
3
|
+
{{widgets.header.html}}
|
|
4
|
+
{{{end}}}
|
|
5
|
+
</div>
|
|
6
|
+
<div class="groups list">
|
|
7
|
+
<h3 class="fw-semibold">[[pages:groups]]</h3>
|
|
8
|
+
<div class="d-flex flex-wrap justify-content-between">
|
|
9
|
+
<div class="mb-2 mb-md-0">
|
|
10
|
+
<div class="text-sm d-flex flex-wrap align-items-center gap-2">
|
|
11
|
+
[[topic:sort-by]]
|
|
12
|
+
<div class="d-flex gap-2">
|
|
13
|
+
<a href="?sort=alpha" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if (sort == "alpha") }}}active{{{ end }}}">[[groups:details.group-name]]</a>
|
|
14
|
+
<a href="?sort=count" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if (sort == "count") }}}active{{{ end }}}">[[groups:details.member-count]]</a>
|
|
15
|
+
<a href="?sort=date" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if (sort == "date") }}}active{{{ end }}}">[[groups:details.creation-date]]</a>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div>
|
|
20
|
+
<div class="d-flex justify-content-end gap-2">
|
|
21
|
+
<div>
|
|
22
|
+
{{{ if allowGroupCreation }}}
|
|
23
|
+
<button class="btn btn-primary btn-sm text-nowrap" data-action="new"><i class="fa fa-users"></i> [[groups:new-group]]</button>
|
|
24
|
+
{{{ end }}}
|
|
25
|
+
<select class="form-select hidden" id="search-sort">
|
|
26
|
+
<option value="alpha">[[groups:details.group-name]]</option>
|
|
27
|
+
<option value="count">[[groups:details.member-count]]</option>
|
|
28
|
+
<option value="date">[[groups:details.creation-date]]</option>
|
|
29
|
+
</select>
|
|
30
|
+
</div>
|
|
31
|
+
<div>
|
|
32
|
+
<div class="input-group">
|
|
33
|
+
<input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" name="query" id="search-text">
|
|
34
|
+
<button id="search-button" class="btn btn-primary btn-sm" aria-label="[[global:search]]">
|
|
35
|
+
<i class="fa fa-search"></i>
|
|
36
|
+
</button>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<hr />
|
|
44
|
+
|
|
45
|
+
<div component="groups/container" class="row" id="groups-list">
|
|
46
|
+
{{{ if groups.length }}}
|
|
47
|
+
<!-- IMPORT partials/groups/list.tpl -->
|
|
48
|
+
{{{ else }}}
|
|
49
|
+
<div class="col-12">
|
|
50
|
+
<div class="alert alert-warning">
|
|
51
|
+
[[groups:no-groups-found]]
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
{{{ end }}}
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
58
|
+
</div>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
|
-
<div class="users">
|
|
3
|
-
<div id="users-container" class="users-container row row-cols-2 row-cols-md-3 row-cols-lg-4 row-cols-xl-5 g-4">
|
|
4
|
-
{{{ each users }}}
|
|
5
|
-
<!-- IMPORT partials/users/item.tpl -->
|
|
6
|
-
{{{ end }}}
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
1
|
+
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
|
+
<div class="users">
|
|
3
|
+
<div id="users-container" class="users-container row row-cols-2 row-cols-md-3 row-cols-lg-4 row-cols-xl-5 g-4">
|
|
4
|
+
{{{ each users }}}
|
|
5
|
+
<!-- IMPORT partials/users/item.tpl -->
|
|
6
|
+
{{{ end }}}
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
10
10
|
</div>
|
package/templates/header.tpl
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="{function.localeToHTML, userLang, defaultLang}" {{{if languageDirection}}}data-dir="{languageDirection}" style="direction: {languageDirection};"{{{end}}}>
|
|
3
|
-
<head>
|
|
4
|
-
<title>{browserTitle}</title>
|
|
5
|
-
{{{each metaTags}}}{function.buildMetaTag}{{{end}}}
|
|
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
|
-
{{{each linkTags}}}{function.buildLinkTag}{{{end}}}
|
|
8
|
-
|
|
9
|
-
<script>
|
|
10
|
-
var config = JSON.parse('{{configJSON}}');
|
|
11
|
-
var app = {
|
|
12
|
-
user: JSON.parse('{{userJSON}}')
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
document.documentElement.style.setProperty('--panel-offset', `${localStorage.getItem('panelOffset') || 0}px`);
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
{{{if useCustomHTML}}}
|
|
19
|
-
{{customHTML}}
|
|
20
|
-
{{{end}}}
|
|
21
|
-
{{{if useCustomCSS}}}
|
|
22
|
-
<style>{{customCSS}}</style>
|
|
23
|
-
{{{end}}}
|
|
24
|
-
</head>
|
|
25
|
-
|
|
26
|
-
<body class="{bodyClass} skin-{{{if bootswatchSkin}}}{bootswatchSkin}{{{else}}}noskin{{{end}}}">
|
|
27
|
-
<a class="visually-hidden-focusable position-absolute top-0 start-0 p-3 m-3 bg-body" style="z-index: 1021;" href="#content">[[global:skip-to-content]]</a>
|
|
28
|
-
<div class="layout-container d-flex justify-content-between pb-4 pb-md-0">
|
|
29
|
-
<!-- IMPORT partials/sidebar-left.tpl -->
|
|
30
|
-
|
|
31
|
-
<main id="panel" class="d-flex flex-column gap-3 flex-grow-1 mt-3" style="min-width: 0;">
|
|
32
|
-
<!-- IMPORT partials/header/brand.tpl -->
|
|
33
|
-
<script>
|
|
34
|
-
const headerEl = document.getElementById('header-menu');
|
|
35
|
-
if (headerEl) {
|
|
36
|
-
const rect = headerEl.getBoundingClientRect();
|
|
37
|
-
const offset = Math.max(0, rect.bottom);
|
|
38
|
-
document.documentElement.style.setProperty('--panel-offset', offset + `px`);
|
|
39
|
-
} else {
|
|
40
|
-
document.documentElement.style.setProperty('--panel-offset', `0px`);
|
|
41
|
-
}
|
|
42
|
-
</script>
|
|
43
|
-
<div class="container-lg px-md-4 d-flex flex-column gap-3 h-100 mb-5 mb-lg-0" id="content">
|
|
44
|
-
<!-- IMPORT partials/noscript/warning.tpl -->
|
|
45
|
-
<!-- IMPORT partials/noscript/message.tpl -->
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="{function.localeToHTML, userLang, defaultLang}" {{{if languageDirection}}}data-dir="{languageDirection}" style="direction: {languageDirection};"{{{end}}}>
|
|
3
|
+
<head>
|
|
4
|
+
<title>{browserTitle}</title>
|
|
5
|
+
{{{each metaTags}}}{function.buildMetaTag}{{{end}}}
|
|
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
|
+
{{{each linkTags}}}{function.buildLinkTag}{{{end}}}
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
var config = JSON.parse('{{configJSON}}');
|
|
11
|
+
var app = {
|
|
12
|
+
user: JSON.parse('{{userJSON}}')
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
document.documentElement.style.setProperty('--panel-offset', `${localStorage.getItem('panelOffset') || 0}px`);
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
{{{if useCustomHTML}}}
|
|
19
|
+
{{customHTML}}
|
|
20
|
+
{{{end}}}
|
|
21
|
+
{{{if useCustomCSS}}}
|
|
22
|
+
<style>{{customCSS}}</style>
|
|
23
|
+
{{{end}}}
|
|
24
|
+
</head>
|
|
25
|
+
|
|
26
|
+
<body class="{bodyClass} skin-{{{if bootswatchSkin}}}{bootswatchSkin}{{{else}}}noskin{{{end}}}">
|
|
27
|
+
<a class="visually-hidden-focusable position-absolute top-0 start-0 p-3 m-3 bg-body" style="z-index: 1021;" href="#content">[[global:skip-to-content]]</a>
|
|
28
|
+
<div class="layout-container d-flex justify-content-between pb-4 pb-md-0">
|
|
29
|
+
<!-- IMPORT partials/sidebar-left.tpl -->
|
|
30
|
+
|
|
31
|
+
<main id="panel" class="d-flex flex-column gap-3 flex-grow-1 mt-3" style="min-width: 0;">
|
|
32
|
+
<!-- IMPORT partials/header/brand.tpl -->
|
|
33
|
+
<script>
|
|
34
|
+
const headerEl = document.getElementById('header-menu');
|
|
35
|
+
if (headerEl) {
|
|
36
|
+
const rect = headerEl.getBoundingClientRect();
|
|
37
|
+
const offset = Math.max(0, rect.bottom);
|
|
38
|
+
document.documentElement.style.setProperty('--panel-offset', offset + `px`);
|
|
39
|
+
} else {
|
|
40
|
+
document.documentElement.style.setProperty('--panel-offset', `0px`);
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
<div class="container-lg px-md-4 d-flex flex-column gap-3 h-100 mb-5 mb-lg-0" id="content">
|
|
44
|
+
<!-- IMPORT partials/noscript/warning.tpl -->
|
|
45
|
+
<!-- IMPORT partials/noscript/message.tpl -->
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
<div class="notifications">
|
|
2
|
-
<div class="btn-toolbar justify-content-end" role="toolbar">
|
|
3
|
-
<button class="btn btn-sm btn-light" component="notifications/mark_all">[[notifications:mark-all-read]]</button>
|
|
4
|
-
</div>
|
|
5
|
-
|
|
6
|
-
<hr class="text-muted opacity-25"/>
|
|
7
|
-
|
|
8
|
-
<div class="d-flex flex-column flex-md-row">
|
|
9
|
-
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
10
|
-
<div class="nav sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="z-index: 1;">
|
|
11
|
-
{{{ each filters }}}
|
|
12
|
-
{{{ if ./separator }}}
|
|
13
|
-
<hr/>
|
|
14
|
-
{{{ else }}}
|
|
15
|
-
<a class="btn btn-ghost d-flex gap-2 text-start text-sm ff-secondary fw-semibold {{{ if ./selected }}}active{{{ end }}}" href="{config.relative_path}/notifications?filter={./filter}">
|
|
16
|
-
<div class="flex-grow-1">{filters.name}</div>
|
|
17
|
-
<span class="flex-shrink-0 text-xs" title="{./count}">{humanReadableNumber(./count)}</span>
|
|
18
|
-
</a>
|
|
19
|
-
{{{ end }}}
|
|
20
|
-
{{{ end }}}
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
<div class="flex-grow-1 ps-md-2 ps-lg-5">
|
|
24
|
-
<ul component="notifications/list" class="notifications-list list-unstyled" data-nextstart="{nextStart}">
|
|
25
|
-
<!-- IMPORT partials/notifications_list.tpl -->
|
|
26
|
-
</ul>
|
|
27
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
<div class="notifications">
|
|
2
|
+
<div class="btn-toolbar justify-content-end" role="toolbar">
|
|
3
|
+
<button class="btn btn-sm btn-light" component="notifications/mark_all">[[notifications:mark-all-read]]</button>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<hr class="text-muted opacity-25"/>
|
|
7
|
+
|
|
8
|
+
<div class="d-flex flex-column flex-md-row">
|
|
9
|
+
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
10
|
+
<div class="nav sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="z-index: 1;">
|
|
11
|
+
{{{ each filters }}}
|
|
12
|
+
{{{ if ./separator }}}
|
|
13
|
+
<hr/>
|
|
14
|
+
{{{ else }}}
|
|
15
|
+
<a class="btn btn-ghost d-flex gap-2 text-start text-sm ff-secondary fw-semibold {{{ if ./selected }}}active{{{ end }}}" href="{config.relative_path}/notifications?filter={./filter}">
|
|
16
|
+
<div class="flex-grow-1">{filters.name}</div>
|
|
17
|
+
<span class="flex-shrink-0 text-xs" title="{./count}">{humanReadableNumber(./count)}</span>
|
|
18
|
+
</a>
|
|
19
|
+
{{{ end }}}
|
|
20
|
+
{{{ end }}}
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="flex-grow-1 ps-md-2 ps-lg-5">
|
|
24
|
+
<ul component="notifications/list" class="notifications-list list-unstyled" data-nextstart="{nextStart}">
|
|
25
|
+
<!-- IMPORT partials/notifications_list.tpl -->
|
|
26
|
+
</ul>
|
|
27
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
<div class="btn-group bottom-sheet">
|
|
2
|
-
<button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
3
|
-
<i class="fa fa-gear fa-fw"></i>
|
|
4
|
-
</button>
|
|
5
|
-
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm account-sub-links" role="menu">
|
|
6
|
-
<li>
|
|
7
|
-
<a class="dropdown-item rounded-1" href="{config.relative_path}/user/{userslug}/info" role="menuitem">[[user:account-info]]</a>
|
|
8
|
-
</li>
|
|
9
|
-
{{{ if (canBan || canMute) }}}
|
|
10
|
-
<li role="separator" class="dropdown-divider"></li>
|
|
11
|
-
{{{ end }}}
|
|
12
|
-
{{{ if canBan }}}
|
|
13
|
-
<li class="{{{ if banned }}}hide{{{ end }}}">
|
|
14
|
-
<a class="dropdown-item rounded-1" component="account/ban" href="#" role="menuitem">[[user:ban-account]]</a>
|
|
15
|
-
</li>
|
|
16
|
-
<li class="{{{ if !banned }}}hide{{{ end }}}">
|
|
17
|
-
<a class="dropdown-item rounded-1" component="account/unban" href="#" role="menuitem">[[user:unban-account]]</a>
|
|
18
|
-
</li>
|
|
19
|
-
{{{ end }}}
|
|
20
|
-
{{{ if canMute }}}
|
|
21
|
-
<li class="{{{ if muted }}}hide{{{ end }}}">
|
|
22
|
-
<a class="dropdown-item rounded-1" component="account/mute" href="#" role="menuitem">[[user:mute-account]]</a>
|
|
23
|
-
</li>
|
|
24
|
-
<li class="{{{ if !muted }}}hide{{{ end }}}">
|
|
25
|
-
<a class="dropdown-item rounded-1" component="account/unmute" href="#" role="menuitem">[[user:unmute-account]]</a>
|
|
26
|
-
</li>
|
|
27
|
-
{{{ end }}}
|
|
28
|
-
{{{ if isAdmin }}}
|
|
29
|
-
<li>
|
|
30
|
-
<a component="account/delete-account" href="#" class="dropdown-item rounded-1" role="menuitem">[[user:delete-account-as-admin]]</a>
|
|
31
|
-
<a component="account/delete-content" href="#" class="dropdown-item rounded-1" role="menuitem">[[user:delete-content]]</a>
|
|
32
|
-
<a component="account/delete-all" href="#" class="dropdown-item rounded-1" role="menuitem">[[user:delete-all]]</a>
|
|
33
|
-
</li>
|
|
34
|
-
{{{ end }}}
|
|
35
|
-
</ul>
|
|
36
|
-
</div>
|
|
1
|
+
<div class="btn-group bottom-sheet">
|
|
2
|
+
<button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
3
|
+
<i class="fa fa-gear fa-fw"></i>
|
|
4
|
+
</button>
|
|
5
|
+
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm account-sub-links" role="menu">
|
|
6
|
+
<li>
|
|
7
|
+
<a class="dropdown-item rounded-1" href="{config.relative_path}/user/{userslug}/info" role="menuitem">[[user:account-info]]</a>
|
|
8
|
+
</li>
|
|
9
|
+
{{{ if (canBan || canMute) }}}
|
|
10
|
+
<li role="separator" class="dropdown-divider"></li>
|
|
11
|
+
{{{ end }}}
|
|
12
|
+
{{{ if canBan }}}
|
|
13
|
+
<li class="{{{ if banned }}}hide{{{ end }}}">
|
|
14
|
+
<a class="dropdown-item rounded-1" component="account/ban" href="#" role="menuitem">[[user:ban-account]]</a>
|
|
15
|
+
</li>
|
|
16
|
+
<li class="{{{ if !banned }}}hide{{{ end }}}">
|
|
17
|
+
<a class="dropdown-item rounded-1" component="account/unban" href="#" role="menuitem">[[user:unban-account]]</a>
|
|
18
|
+
</li>
|
|
19
|
+
{{{ end }}}
|
|
20
|
+
{{{ if canMute }}}
|
|
21
|
+
<li class="{{{ if muted }}}hide{{{ end }}}">
|
|
22
|
+
<a class="dropdown-item rounded-1" component="account/mute" href="#" role="menuitem">[[user:mute-account]]</a>
|
|
23
|
+
</li>
|
|
24
|
+
<li class="{{{ if !muted }}}hide{{{ end }}}">
|
|
25
|
+
<a class="dropdown-item rounded-1" component="account/unmute" href="#" role="menuitem">[[user:unmute-account]]</a>
|
|
26
|
+
</li>
|
|
27
|
+
{{{ end }}}
|
|
28
|
+
{{{ if isAdmin }}}
|
|
29
|
+
<li>
|
|
30
|
+
<a component="account/delete-account" href="#" class="dropdown-item rounded-1" role="menuitem">[[user:delete-account-as-admin]]</a>
|
|
31
|
+
<a component="account/delete-content" href="#" class="dropdown-item rounded-1" role="menuitem">[[user:delete-content]]</a>
|
|
32
|
+
<a component="account/delete-all" href="#" class="dropdown-item rounded-1" role="menuitem">[[user:delete-all]]</a>
|
|
33
|
+
</li>
|
|
34
|
+
{{{ end }}}
|
|
35
|
+
</ul>
|
|
36
|
+
</div>
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
<li component="categories/category" data-cid="{./cid}" data-parent-cid="{../parentCid}" class="category-{./cid}">
|
|
2
|
-
<meta itemprop="name" content="{./name}">
|
|
3
|
-
<div class="content depth-{./depth} d-flex gap-2">
|
|
4
|
-
<div class="flex-grow-1 align-items-start d-flex gap-2">
|
|
5
|
-
<div>
|
|
6
|
-
{buildCategoryIcon(@value, "24px", "rounded-1")}
|
|
7
|
-
</div>
|
|
8
|
-
<div class="d-grid gap-0">
|
|
9
|
-
<div class="title fw-semibold">
|
|
10
|
-
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
|
-
</div>
|
|
12
|
-
{{{ if ./descriptionParsed }}}
|
|
13
|
-
<div class="description text-muted text-xs w-100">{./descriptionParsed}</div>
|
|
14
|
-
{{{ end }}}
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
<div class="flex-shrink-0">
|
|
18
|
-
<!-- IMPORT partials/category/watch.tpl -->
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<hr />
|
|
22
|
-
</li>
|
|
1
|
+
<li component="categories/category" data-cid="{./cid}" data-parent-cid="{../parentCid}" class="category-{./cid}">
|
|
2
|
+
<meta itemprop="name" content="{./name}">
|
|
3
|
+
<div class="content depth-{./depth} d-flex gap-2">
|
|
4
|
+
<div class="flex-grow-1 align-items-start d-flex gap-2">
|
|
5
|
+
<div>
|
|
6
|
+
{buildCategoryIcon(@value, "24px", "rounded-1")}
|
|
7
|
+
</div>
|
|
8
|
+
<div class="d-grid gap-0">
|
|
9
|
+
<div class="title fw-semibold">
|
|
10
|
+
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
|
+
</div>
|
|
12
|
+
{{{ if ./descriptionParsed }}}
|
|
13
|
+
<div class="description text-muted text-xs w-100">{./descriptionParsed}</div>
|
|
14
|
+
{{{ end }}}
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="flex-shrink-0">
|
|
18
|
+
<!-- IMPORT partials/category/watch.tpl -->
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<hr />
|
|
22
|
+
</li>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
</div>
|
|
2
|
-
</div>
|
|
1
|
+
</div>
|
|
2
|
+
</div>
|
|
3
3
|
</div>
|