├── 1
├── less
├── helpers.less
├── topics_list.less
├── bootstrap
│ ├── mixins
│ │ ├── center-block.less
│ │ ├── text-emphasis.less
│ │ ├── size.less
│ │ ├── background-variant.less
│ │ ├── opacity.less
│ │ ├── text-overflow.less
│ │ ├── tab-focus.less
│ │ ├── resize.less
│ │ ├── labels.less
│ │ ├── progress-bar.less
│ │ ├── nav-divider.less
│ │ ├── reset-filter.less
│ │ ├── alerts.less
│ │ ├── nav-vertical-align.less
│ │ ├── responsive-visibility.less
│ │ ├── pagination.less
│ │ ├── border-radius.less
│ │ ├── panels.less
│ │ ├── list-group.less
│ │ ├── hide-text.less
│ │ ├── clearfix.less
│ │ ├── table-row.less
│ │ ├── image.less
│ │ └── buttons.less
│ ├── .csslintrc
│ ├── wells.less
│ ├── breadcrumbs.less
│ ├── responsive-embed.less
│ ├── component-animations.less
│ ├── close.less
│ ├── thumbnails.less
│ ├── utilities.less
│ ├── media.less
│ ├── pager.less
│ ├── jumbotron.less
│ ├── mixins.less
│ ├── bootstrap.less
│ ├── labels.less
│ ├── badges.less
│ ├── code.less
│ ├── grid.less
│ ├── alerts.less
│ ├── progress-bars.less
│ ├── pagination.less
│ └── print.less
├── outgoing.less
├── modules
│ ├── composer-default.less
│ ├── cookie-consent.less
│ ├── fab.less
│ ├── usercard.less
│ ├── bottom-sheet.less
│ ├── nprogress.less
│ └── alerts.less
├── footer.less
├── tags.less
├── notifications.less
├── flags.less
├── mixins.less
├── persona.less
├── noscript.less
├── users.less
├── search.less
├── register.less
└── posts_list.less
├── templates
├── account
│ ├── best.tpl
│ ├── ignored.tpl
│ ├── upvoted.tpl
│ ├── watched.tpl
│ ├── bookmarks.tpl
│ ├── downvoted.tpl
│ ├── posts.tpl
│ ├── followers.tpl
│ ├── following.tpl
│ ├── groups.tpl
│ ├── topics.tpl
│ ├── sessions.tpl
│ ├── edit
│ │ ├── email.tpl
│ │ ├── username.tpl
│ │ └── password.tpl
│ ├── blocks.tpl
│ ├── categories.tpl
│ ├── uploads.tpl
│ └── consent.tpl
├── tos.tpl
├── partials
│ ├── topic
│ │ ├── necro-post.tpl
│ │ ├── post-editor.tpl
│ │ ├── post-menu.tpl
│ │ ├── stats.tpl
│ │ ├── tags.tpl
│ │ ├── deleted-message.tpl
│ │ ├── badge.tpl
│ │ ├── browsing-users.tpl
│ │ ├── sort.tpl
│ │ ├── quickreply.tpl
│ │ ├── reply-button.tpl
│ │ ├── watch.tpl
│ │ └── topic-menu-list.tpl
│ ├── chats
│ │ ├── user.tpl
│ │ ├── messages.tpl
│ │ ├── system-message.tpl
│ │ ├── recent_room.tpl
│ │ ├── dropdown.tpl
│ │ ├── message.tpl
│ │ └── message-window.tpl
│ ├── cookie-consent.tpl
│ ├── modals
│ │ ├── rename_room.tpl
│ │ ├── manage_room.tpl
│ │ ├── manage_room_users.tpl
│ │ ├── votes_modal.tpl
│ │ ├── upload_picture_from_url_modal.tpl
│ │ ├── post_history.tpl
│ │ ├── flag_modal.tpl
│ │ ├── upload_file_modal.tpl
│ │ └── change_picture_modal.tpl
│ ├── posts_list.tpl
│ ├── acceptTos.tpl
│ ├── categories
│ │ ├── link.tpl
│ │ ├── lastpost.tpl
│ │ └── item.tpl
│ ├── category
│ │ ├── subcategory.tpl
│ │ ├── tags.tpl
│ │ ├── sort.tpl
│ │ ├── watch.tpl
│ │ └── tools.tpl
│ ├── noscript
│ │ └── warning.tpl
│ ├── chats-menu.tpl
│ ├── tags_list.tpl
│ ├── thread_tools.tpl
│ ├── users_list_menu.tpl
│ ├── account
│ │ ├── category-item.tpl
│ │ └── header.tpl
│ ├── delete_posts_modal.tpl
│ ├── move_thread_modal.tpl
│ ├── change_owner_modal.tpl
│ ├── move_post_modal.tpl
│ ├── fork_thread_modal.tpl
│ ├── groups
│ │ ├── list.tpl
│ │ └── memberlist.tpl
│ ├── buttons
│ │ └── newTopic.tpl
│ ├── breadcrumbs.tpl
│ ├── post_bar.tpl
│ ├── quick-search-results.tpl
│ ├── posts_list_item.tpl
│ ├── slideout-menu.tpl
│ ├── notifications_list.tpl
│ ├── users_list.tpl
│ ├── category-selector.tpl
│ ├── merge_topics_modal.tpl
│ ├── category-filter.tpl
│ └── paginator.tpl
├── modules
│ ├── taskbar.tpl
│ └── usercard.tpl
├── groups
│ ├── members.tpl
│ └── list.tpl
├── unsubscribe.tpl
├── alert.tpl
├── confirm.tpl
├── outgoing.tpl
├── chats.tpl
├── reset.tpl
├── tag.tpl
├── categories.tpl
├── tags.tpl
├── registerComplete.tpl
├── footer.tpl
├── admin
│ └── plugins
│ │ └── persona.tpl
├── users.tpl
├── header.tpl
├── reset_code.tpl
├── recent.tpl
├── flags
│ └── list.tpl
├── category.tpl
├── top.tpl
├── popular.tpl
├── chat.tpl
└── notifications.tpl
├── theme.less
├── languages
├── pl
│ └── persona.json
├── de
│ └── persona.json
├── en-US
│ └── persona.json
├── fr
│ └── persona.json
├── pt-PT
│ └── persona.json
├── zh-CN
│ └── persona.json
├── en-GB
│ └── persona.json
└── tr
│ └── persona.json
├── screenshot.png
├── .npmignore
├── .gitignore
├── theme.json
├── public
└── images
│ ├── arrow.svg
│ ├── users.svg
│ ├── visits.svg
│ ├── votes.svg
│ ├── popular.svg
│ ├── groups.svg
│ ├── topics.svg
│ ├── categories.svg
│ ├── posts.svg
│ ├── replies.svg
│ ├── tags.svg
│ └── recent.svg
├── yarn.lock
├── lib
├── admin.js
└── modules
│ └── quickreply.js
├── plugin.json
├── README.md
└── package.json
/1:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/less/helpers.less:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/templates/account/best.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/templates/account/ignored.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/templates/account/upvoted.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/templates/account/watched.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/templates/account/bookmarks.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/templates/account/downvoted.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme.less:
--------------------------------------------------------------------------------
1 | @import "./less/bootstrap/bootstrap";
2 | @import "./less/persona";
--------------------------------------------------------------------------------
/templates/tos.tpl:
--------------------------------------------------------------------------------
1 |
3 |
[[notifications:email-confirmed]]
4 |
[[notifications:email-confirmed-message]]
5 |
6 |
14 |
--------------------------------------------------------------------------------
/less/tags.less:
--------------------------------------------------------------------------------
1 | .tags {
2 |
3 | }
4 |
5 | .tag-container {
6 | margin-right: 1em;
7 | }
8 |
9 | .tag-item {
10 | color: lighten(@gray-light, 20%);
11 | padding: .2em .4em .3em;
12 | font-size: 85%;
13 | text-transform: uppercase;
14 | color: #999;
15 | font-weight: 700;
16 | white-space: nowrap;
17 | }
18 |
19 | .tag-topic-count {
20 | color: lighten(@brand-primary, 20%);
21 | padding: 0em 0.4em 0.1em;
22 | font-size: 85%;
23 | font-weight: 700;
24 | white-space: nowrap;
25 | border-left: none;
26 | }
--------------------------------------------------------------------------------
/templates/partials/modals/votes_modal.tpl:
--------------------------------------------------------------------------------
1 |
[[global:upvoters]] ({upvoteCount})
2 | {{{each upvoters}}}
3 |
{buildAvatar(upvoters, "sm", false)}
4 | {{{end}}}
5 |
6 |
[[global:downvoters]] ({downvoteCount})
7 | {{{each downvoters}}}
8 |
{buildAvatar(downvoters, "sm", false)}
9 | {{{end}}}
10 |
11 |
--------------------------------------------------------------------------------
/templates/partials/chats-menu.tpl:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/templates/partials/tags_list.tpl:
--------------------------------------------------------------------------------
1 | {{{each tags}}}
2 |
5 | {{{end}}}
--------------------------------------------------------------------------------
/public/images/visits.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | pulling@^2.0.0:
6 | version "2.0.0"
7 | resolved "https://registry.yarnpkg.com/pulling/-/pulling-2.0.0.tgz#5793d3b0ff8511a07465fd95a32498e4c2790c5f"
8 | integrity sha512-FTbrWBDFPZBP75bbeB3+5gXBFO3SCp+LKcUS7wE9Nn3x/RZoIjYzgH5RXT1vSBuyW+5sdguXqBsQjQeRYIKn1A==
9 |
10 | striptags@^3.1.1:
11 | version "3.1.1"
12 | resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd"
13 |
--------------------------------------------------------------------------------
/templates/account/posts.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{title}
6 |
7 |
8 |
{noItemsFoundKey}
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/less/bootstrap/.csslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "adjoining-classes": false,
3 | "box-sizing": false,
4 | "box-model": false,
5 | "compatible-vendor-prefixes": false,
6 | "floats": false,
7 | "font-sizes": false,
8 | "gradients": false,
9 | "important": false,
10 | "known-properties": false,
11 | "outline-none": false,
12 | "qualified-headings": false,
13 | "regex-selectors": false,
14 | "shorthand": false,
15 | "text-indent": false,
16 | "unique-headings": false,
17 | "universal-selector": false,
18 | "unqualified-attributes": false
19 | }
20 |
--------------------------------------------------------------------------------
/templates/account/followers.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
[[pages:{template.name}, {username}]]
6 |
7 |
10 |
11 |
12 |
[[user:has_no_follower]]
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/templates/account/following.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
[[pages:{template.name}, {username}]]
6 |
7 |
10 |
11 |
12 |
[[user:follows_no_one]]
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/templates/partials/thread_tools.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/templates/account/groups.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
[[pages:{template.name}, {username}]]
6 |
7 |
8 |
9 |
10 |
[[groups:no_groups_found]]
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/templates/partials/topic/deleted-message.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/pagination.less:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {
4 | > li {
5 | > a,
6 | > span {
7 | padding: @padding-vertical @padding-horizontal;
8 | font-size: @font-size;
9 | }
10 | &:first-child {
11 | > a,
12 | > span {
13 | .border-left-radius(@border-radius);
14 | }
15 | }
16 | &:last-child {
17 | > a,
18 | > span {
19 | .border-right-radius(@border-radius);
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/templates/partials/category/tags.tpl:
--------------------------------------------------------------------------------
1 |
2 | {{{each tags}}}
3 |
{topics.tags.value}{topics.tags.score}
4 | {{{end}}}
5 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/border-radius.less:
--------------------------------------------------------------------------------
1 | // Single side border-radius
2 |
3 | .border-top-radius(@radius) {
4 | border-top-right-radius: @radius;
5 | border-top-left-radius: @radius;
6 | }
7 | .border-right-radius(@radius) {
8 | border-bottom-right-radius: @radius;
9 | border-top-right-radius: @radius;
10 | }
11 | .border-bottom-radius(@radius) {
12 | border-bottom-right-radius: @radius;
13 | border-bottom-left-radius: @radius;
14 | }
15 | .border-left-radius(@radius) {
16 | border-bottom-left-radius: @radius;
17 | border-top-left-radius: @radius;
18 | }
19 |
--------------------------------------------------------------------------------
/templates/partials/topic/badge.tpl:
--------------------------------------------------------------------------------
1 | {{{each posts.user.selectedGroups}}}
2 |
3 |
{posts.user.selectedGroups.userTitle}
4 |
5 | {{{end}}}
--------------------------------------------------------------------------------
/lib/admin.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | /* globals $, app */
3 |
4 | define('admin/plugins/persona', ['settings'], function(Settings) {
5 |
6 | var ACP = {};
7 |
8 | ACP.init = function() {
9 | Settings.load('persona', $('.persona-settings'));
10 |
11 | $('#save').on('click', function() {
12 | Settings.save('persona', $('.persona-settings'), function() {
13 | app.alert({
14 | type: 'success',
15 | alert_id: 'persona-saved',
16 | title: 'Settings Saved',
17 | message: 'Persona settings saved'
18 | });
19 | });
20 | });
21 | };
22 |
23 | return ACP;
24 | });
--------------------------------------------------------------------------------
/less/notifications.less:
--------------------------------------------------------------------------------
1 | .notifications-list {
2 | margin-top: 1em;
3 | padding: 0;
4 |
5 | li {
6 | clear: both;
7 | list-style-type: none;
8 | padding: 1em;
9 | margin-bottom: 0.5em;
10 | .zebra;
11 | .pointer;
12 |
13 | &:last-child {
14 | margin-bottom: 0;
15 | }
16 |
17 | &.unread {
18 | background: #fefbed;
19 | }
20 |
21 | .timestamp {
22 | font-size: 0.8em;
23 | }
24 |
25 | a {
26 | display: block;
27 | .text-ellipsis;
28 | }
29 |
30 | p {
31 | margin: 0 0 0 30px;
32 | }
33 |
34 | .user-img {
35 | .user-icon-style(24px, 1rem, 50%);
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/public/images/votes.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/templates/outgoing.tpl:
--------------------------------------------------------------------------------
1 |
15 |
16 |
22 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/panels.less:
--------------------------------------------------------------------------------
1 | // Panels
2 |
3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
4 | border-color: @border;
5 |
6 | & > .panel-heading {
7 | color: @heading-text-color;
8 | background-color: @heading-bg-color;
9 | border-color: @heading-border;
10 |
11 | + .panel-collapse > .panel-body {
12 | border-top-color: @border;
13 | }
14 | .badge {
15 | color: @heading-bg-color;
16 | background-color: @heading-text-color;
17 | }
18 | }
19 | & > .panel-footer {
20 | + .panel-collapse > .panel-body {
21 | border-bottom-color: @border;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/less/bootstrap/wells.less:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: @well-bg;
12 | border: 1px solid @well-border;
13 | border-radius: @border-radius-base;
14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-lg {
23 | padding: 24px;
24 | border-radius: @border-radius-large;
25 | }
26 | .well-sm {
27 | padding: 9px;
28 | border-radius: @border-radius-small;
29 | }
30 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/list-group.less:
--------------------------------------------------------------------------------
1 | // List Groups
2 |
3 | .list-group-item-variant(@state; @background; @color) {
4 | .list-group-item-@{state} {
5 | color: @color;
6 | background-color: @background;
7 |
8 | a& {
9 | color: @color;
10 |
11 | .list-group-item-heading {
12 | color: inherit;
13 | }
14 |
15 | &:hover,
16 | &:focus {
17 | color: @color;
18 | background-color: darken(@background, 5%);
19 | }
20 | &.active,
21 | &.active:hover,
22 | &.active:focus {
23 | color: #fff;
24 | background-color: @color;
25 | border-color: @color;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/templates/partials/users_list_menu.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/hide-text.less:
--------------------------------------------------------------------------------
1 | // CSS image replacement
2 | //
3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for
4 | // mixins being reused as classes with the same name, this doesn't hold up. As
5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
6 | //
7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
8 |
9 | // Deprecated as of v3.0.1 (will be removed in v4)
10 | .hide-text() {
11 | font: ~"0/0" a;
12 | color: transparent;
13 | text-shadow: none;
14 | background-color: transparent;
15 | border: 0;
16 | }
17 |
18 | // New mixin to use as of v3.0.1
19 | .text-hide() {
20 | .hide-text();
21 | }
22 |
--------------------------------------------------------------------------------
/templates/chats.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{{each rooms}}}
9 |
10 | {{{end}}}
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/public/images/popular.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/clearfix.less:
--------------------------------------------------------------------------------
1 | // Clearfix
2 | //
3 | // For modern browsers
4 | // 1. The space content is one way to avoid an Opera bug when the
5 | // contenteditable attribute is included anywhere else in the document.
6 | // Otherwise it causes space to appear at the top and bottom of elements
7 | // that are clearfixed.
8 | // 2. The use of `table` rather than `block` is only necessary if using
9 | // `:before` to contain the top-margins of child elements.
10 | //
11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/
12 |
13 | .clearfix() {
14 | &:before,
15 | &:after {
16 | content: " "; // 1
17 | display: table; // 2
18 | }
19 | &:after {
20 | clear: both;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/less/bootstrap/breadcrumbs.less:
--------------------------------------------------------------------------------
1 | //
2 | // Breadcrumbs
3 | // --------------------------------------------------
4 |
5 |
6 | .breadcrumb {
7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;
8 | margin-bottom: @line-height-computed;
9 | list-style: none;
10 | background-color: @breadcrumb-bg;
11 | border-radius: @border-radius-base;
12 |
13 | > li {
14 | display: inline-block;
15 |
16 | + li:before {
17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
18 | padding: 0 5px;
19 | color: @breadcrumb-color;
20 | }
21 | }
22 |
23 | > .active {
24 | color: @breadcrumb-active-color;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/less/bootstrap/responsive-embed.less:
--------------------------------------------------------------------------------
1 | // Embeds responsive
2 | //
3 | // Credit: Nicolas Gallagher and SUIT CSS.
4 |
5 | .embed-responsive {
6 | position: relative;
7 | display: block;
8 | height: 0;
9 | padding: 0;
10 | overflow: hidden;
11 |
12 | .embed-responsive-item,
13 | iframe,
14 | embed,
15 | object,
16 | video {
17 | position: absolute;
18 | top: 0;
19 | left: 0;
20 | bottom: 0;
21 | height: 100%;
22 | width: 100%;
23 | border: 0;
24 | }
25 | }
26 |
27 | // Modifier class for 16:9 aspect ratio
28 | .embed-responsive-16by9 {
29 | padding-bottom: 56.25%;
30 | }
31 |
32 | // Modifier class for 4:3 aspect ratio
33 | .embed-responsive-4by3 {
34 | padding-bottom: 75%;
35 | }
36 |
--------------------------------------------------------------------------------
/public/images/groups.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/less/modules/fab.less:
--------------------------------------------------------------------------------
1 | .fab {
2 | box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.156863), 0px 2px 10px 0px rgba(0, 0, 0, 0.117647);
3 |
4 | background-color: @brand-primary;
5 | border: none;
6 | border-radius: 50%;
7 | cursor: pointer;
8 | line-height: 55.5px;
9 | vertical-align: middle;
10 | height: 55.5px;
11 | width: 55.5px;
12 | }
13 |
14 | .btn-group.open .dropdown-toggle.fab {
15 | box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.156863), 0px 2px 10px 0px rgba(0, 0, 0, 0.117647);
16 | }
17 |
18 | .fab.btn-morph {
19 | padding: 0;
20 |
21 | &.heart {
22 | > span > span {
23 | background-color: #E91E63;
24 | }
25 | }
26 |
27 | &.plus {
28 | background-color: @material-success;
29 | > span > span {
30 | background-color: white;
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/templates/partials/account/category-item.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | {../descriptionParsed}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/public/images/topics.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/templates/partials/delete_posts_modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
[[topic:thread_tools.delete-posts]]
4 |
5 |
6 |
7 | [[topic:delete_posts_instruction]]
8 |
9 |
10 |
11 |
19 |
--------------------------------------------------------------------------------
/public/images/categories.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/templates/partials/move_thread_modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/less/bootstrap/component-animations.less:
--------------------------------------------------------------------------------
1 | //
2 | // Component animations
3 | // --------------------------------------------------
4 |
5 | // Heads up!
6 | //
7 | // We don't use the `.opacity()` mixin here since it causes a bug with text
8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
9 |
10 | .fade {
11 | opacity: 0;
12 | .transition(opacity .15s linear);
13 | &.in {
14 | opacity: 1;
15 | }
16 | }
17 |
18 | .collapse {
19 | display: none;
20 |
21 | &.in { display: block; }
22 | tr&.in { display: table-row; }
23 | tbody&.in { display: table-row-group; }
24 | }
25 |
26 | .collapsing {
27 | position: relative;
28 | height: 0;
29 | overflow: hidden;
30 | .transition-property(~"height, visibility");
31 | .transition-duration(.35s);
32 | .transition-timing-function(ease);
33 | }
34 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/table-row.less:
--------------------------------------------------------------------------------
1 | // Tables
2 |
3 | .table-row-variant(@state; @background) {
4 | // Exact selectors below required to override `.table-striped` and prevent
5 | // inheritance to nested tables.
6 | .table > thead > tr,
7 | .table > tbody > tr,
8 | .table > tfoot > tr {
9 | > td.@{state},
10 | > th.@{state},
11 | &.@{state} > td,
12 | &.@{state} > th {
13 | background-color: @background;
14 | }
15 | }
16 |
17 | // Hover states for `.table-hover`
18 | // Note: this is not available for cells or rows within `thead` or `tfoot`.
19 | .table-hover > tbody > tr {
20 | > td.@{state}:hover,
21 | > th.@{state}:hover,
22 | &.@{state}:hover > td,
23 | &:hover > .@{state},
24 | &.@{state}:hover > th {
25 | background-color: darken(@background, 5%);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/templates/partials/change_owner_modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
[[topic:thread_tools.change_owner]]
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | [[topic:change_owner_instruction]]
12 |
13 |
14 |
15 |
22 |
23 |
--------------------------------------------------------------------------------
/templates/partials/modals/upload_picture_from_url_modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/templates/partials/categories/lastpost.tpl:
--------------------------------------------------------------------------------
1 |
2 | {{{each ./posts}}}
3 |
4 |
15 |
16 | {{{end}}}
17 |
18 |
19 |
20 |
21 | [[category:no_new_posts]]
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/templates/partials/topic/browsing-users.tpl:
--------------------------------------------------------------------------------
1 |
2 | {{{each browsingUsers}}}
3 |
12 | {{{end}}}
13 |
--------------------------------------------------------------------------------
/templates/partials/move_post_modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
[[topic:thread_tools.move-posts]]
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | [[topic:move_posts_instruction]]
12 |
13 |
14 |
15 |
22 |
23 |
--------------------------------------------------------------------------------
/templates/reset.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | [[reset_password:enter_email]]
6 |
7 |
8 |
9 |
10 |
11 | [[reset_password:password_reset_sent]]
12 |
13 |
14 |
15 | [[reset_password:invalid_email]]
16 |
17 |
23 |
24 |
--------------------------------------------------------------------------------
/templates/partials/chats/recent_room.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | [[modules:chat.no-users-in-room]]
5 |
6 | {rooms.roomName}{rooms.usernames}
7 |
8 |
9 |
10 | {{{each rooms.users}}}
11 |
12 |
13 |
14 |
15 |
16 | {{{end}}}
17 |
18 |
19 | {{{each rooms.users}}}
20 | -
21 |
22 |
23 | {{{end}}}
24 |
25 |
--------------------------------------------------------------------------------
/templates/partials/fork_thread_modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
[[topic:fork_topic]]
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | [[topic:fork_topic_instruction]]
12 |
13 |
14 |
15 |
22 |
--------------------------------------------------------------------------------
/templates/partials/topic/sort.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/less/bootstrap/close.less:
--------------------------------------------------------------------------------
1 | //
2 | // Close icons
3 | // --------------------------------------------------
4 |
5 |
6 | .close {
7 | float: right;
8 | font-size: (@font-size-base * 1.5);
9 | font-weight: @close-font-weight;
10 | line-height: 1;
11 | color: @close-color;
12 | text-shadow: @close-text-shadow;
13 | .opacity(.2);
14 |
15 | &:hover,
16 | &:focus {
17 | color: @close-color;
18 | text-decoration: none;
19 | cursor: pointer;
20 | .opacity(.5);
21 | }
22 |
23 | // Additional properties for button version
24 | // iOS requires the button element instead of an anchor tag.
25 | // If you want the anchor version, it requires `href="#"`.
26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
27 | button& {
28 | padding: 0;
29 | cursor: pointer;
30 | background: transparent;
31 | border: 0;
32 | -webkit-appearance: none;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/templates/partials/modals/post_history.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | [[topic:diffs.description, {numDiffs}]]
4 |
5 | [[topic:diffs.no-revisions-description, {numDiffs}]]
6 |
7 |
8 |
9 |
30 |
--------------------------------------------------------------------------------
/less/bootstrap/thumbnails.less:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Mixin and adjust the regular image class
7 | .thumbnail {
8 | display: block;
9 | padding: @thumbnail-padding;
10 | margin-bottom: @line-height-computed;
11 | line-height: @line-height-base;
12 | background-color: @thumbnail-bg;
13 | border: 1px solid @thumbnail-border;
14 | border-radius: @thumbnail-border-radius;
15 | .transition(border .2s ease-in-out);
16 |
17 | > img,
18 | a > img {
19 | &:extend(.img-responsive);
20 | margin-left: auto;
21 | margin-right: auto;
22 | }
23 |
24 | // Add a hover state for linked versions only
25 | a&:hover,
26 | a&:focus,
27 | a&.active {
28 | border-color: @link-color;
29 | }
30 |
31 | // Image captions
32 | .caption {
33 | padding: @thumbnail-caption-padding;
34 | color: @thumbnail-caption-color;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/templates/tag.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
[[tags:no_tag_topics]]
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/templates/categories.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{{each widgets.header}}}
4 | {{widgets.header.html}}
5 | {{{end}}}
6 |
7 |
8 |
16 |
21 |
22 |
23 | {{{each widgets.footer}}}
24 | {{widgets.footer.html}}
25 | {{{end}}}
26 |
27 |
--------------------------------------------------------------------------------
/templates/tags.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{{each widgets.header}}}
4 | {{widgets.header.html}}
5 | {{{end}}}
6 |
7 |
31 |
--------------------------------------------------------------------------------
/templates/partials/groups/list.tpl:
--------------------------------------------------------------------------------
1 | {{{each groups}}}
2 |
21 | {{{end}}}
--------------------------------------------------------------------------------
/less/flags.less:
--------------------------------------------------------------------------------
1 | .page-flags {
2 | [component="flags/list"] {
3 | td {
4 | max-width: 300px;
5 | text-overflow: ellipsis;
6 | overflow: hidden;
7 | white-space: nowrap;
8 | }
9 |
10 | [component="flags/list/description"] {
11 | font-style: italic;
12 | color: @gray-light;
13 | }
14 | }
15 |
16 | #flags-daily-wrapper + .panel-footer {
17 | .pointer;
18 | }
19 |
20 | [component="flag/notes"] {
21 | .media {
22 | padding: 1rem;
23 | }
24 |
25 | .media-right {
26 | visibility: hidden;
27 |
28 | i {
29 | padding: 1rem;
30 | }
31 | }
32 |
33 | &:hover {
34 | .media-right {
35 | visibility: visible;
36 | }
37 | }
38 |
39 | .editing {
40 | background-color: @state-info-bg;
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/public/images/posts.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/templates/partials/buttons/newTopic.tpl:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/less/bootstrap/utilities.less:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Floats
7 | // -------------------------
8 |
9 | .clearfix {
10 | .clearfix();
11 | }
12 | .center-block {
13 | .center-block();
14 | }
15 | .pull-right {
16 | float: right !important;
17 | }
18 | .pull-left {
19 | float: left !important;
20 | }
21 |
22 |
23 | // Toggling content
24 | // -------------------------
25 |
26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
27 | .hide {
28 | display: none !important;
29 | }
30 | .show {
31 | display: block !important;
32 | }
33 | .invisible {
34 | visibility: hidden;
35 | }
36 | .text-hide {
37 | .text-hide();
38 | }
39 |
40 |
41 | // Hide from screenreaders and browsers
42 | //
43 | // Credit: HTML5 Boilerplate
44 |
45 | .hidden {
46 | display: none !important;
47 | }
48 |
49 |
50 | // For Affix plugin
51 | // -------------------------
52 |
53 | .affix {
54 | position: fixed;
55 | }
56 |
--------------------------------------------------------------------------------
/templates/partials/breadcrumbs.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{{each breadcrumbs}}}
4 | - component="breadcrumb/current" itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="active">
5 |
6 |
7 |
8 | {breadcrumbs.text}
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {{{end}}}
17 |
18 |
19 |
--------------------------------------------------------------------------------
/templates/partials/category/sort.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
15 |
16 |
--------------------------------------------------------------------------------
/less/mixins.less:
--------------------------------------------------------------------------------
1 | .no-select {
2 | .user-select(none);
3 | }
4 |
5 | .pointer {
6 | cursor: pointer;
7 | *cursor: hand;
8 | }
9 |
10 | .inline-block {
11 | display: inline-block;
12 | *display: inline;
13 | zoom: 1;
14 | }
15 |
16 | .clear {
17 | clear: both;
18 | }
19 |
20 | .zebra {
21 | &:nth-child(even) {
22 | background: rgba(191,191,191,0.2);
23 | }
24 |
25 | &:nth-child(odd) {
26 | background: rgba(223,223,223,0.2);
27 | }
28 | }
29 |
30 | .opacity(@opacity: 1) {
31 | -moz-opacity: @opacity;
32 | opacity: @opacity;
33 | -ms-filter: ~`"progid:DXImageTransform.Microsoft.Alpha(opacity=(" + "@{opacity}" * 100 + "))"`;
34 | filter: ~`"alpha(opacity = (" + "@{opacity}" * 100 + "))"`;
35 | }
36 |
37 | .border-radius (@radius: 5px) {
38 | -webkit-border-radius: @radius;
39 | -moz-border-radius: @radius;
40 | -ms-border-radius: @radius;
41 | -o-border-radius: @radius;
42 | border-radius: @radius;
43 | }
44 |
45 | .text-ellipsis {
46 | overflow: hidden;
47 | text-overflow: ellipsis;
48 | white-space: nowrap;
49 | }
--------------------------------------------------------------------------------
/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "nodebb-theme-persona-netdata",
3 | "library": "library.js",
4 | "hooks": [
5 | {
6 | "hook": "filter:teasers.get",
7 | "method": "getTeasers"
8 | },
9 | {
10 | "hook": "filter:widgets.getAreas",
11 | "method": "defineWidgetAreas"
12 | },
13 | {
14 | "hook": "filter:config.get",
15 | "method": "getThemeConfig"
16 | },
17 | {
18 | "hook": "static:app.load",
19 | "method": "init"
20 | },
21 | {
22 | "hook": "filter:admin.header.build",
23 | "method": "addAdminNavigation"
24 | },
25 | {
26 | "hook": "filter:topic.build",
27 | "method": "addUserToTopic"
28 | }
29 | ],
30 | "scripts": [
31 | "lib/persona.js",
32 | "lib/modules/nprogress.js",
33 | "lib/modules/autohidingnavbar.min.js",
34 | "lib/modules/quickreply.js"
35 | ],
36 | "modules": {
37 | "pulling.js": "node_modules/pulling/build/pulling-drawer.js"
38 | },
39 | "acpScripts": [
40 | "lib/admin.js"
41 | ],
42 | "languages": "languages",
43 | "staticDirs": {
44 | "images": "public/images"
45 | }
46 | }
--------------------------------------------------------------------------------
/templates/partials/post_bar.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | [[topic:loading_more_posts]]
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/less/bootstrap/media.less:
--------------------------------------------------------------------------------
1 | .media {
2 | // Proper spacing between instances of .media
3 | margin-top: 15px;
4 |
5 | &:first-child {
6 | margin-top: 0;
7 | }
8 | }
9 |
10 | .media,
11 | .media-body {
12 | zoom: 1;
13 | overflow: hidden;
14 | }
15 |
16 | .media-body {
17 | width: 10000px;
18 | }
19 |
20 | .media-object {
21 | display: block;
22 | }
23 |
24 | .media-right,
25 | .media > .pull-right {
26 | padding-left: 10px;
27 | }
28 |
29 | .media-left,
30 | .media > .pull-left {
31 | padding-right: 10px;
32 | }
33 |
34 | .media-left,
35 | .media-right,
36 | .media-body {
37 | display: table-cell;
38 | vertical-align: top;
39 | }
40 |
41 | .media-middle {
42 | vertical-align: middle;
43 | }
44 |
45 | .media-bottom {
46 | vertical-align: bottom;
47 | }
48 |
49 | // Reset margins on headings for tighter default spacing
50 | .media-heading {
51 | margin-top: 0;
52 | margin-bottom: 5px;
53 | }
54 |
55 | // Media list variation
56 | //
57 | // Undo default ul/ol styles
58 | .media-list {
59 | padding-left: 0;
60 | list-style: none;
61 | }
62 |
--------------------------------------------------------------------------------
/less/persona.less:
--------------------------------------------------------------------------------
1 | @import "style";
2 |
3 | @import "topic";
4 | @import "category";
5 | @import "tags";
6 | @import "noscript";
7 | @import "categories";
8 | @import "header";
9 | @import "account";
10 | @import "groups";
11 | @import "chats";
12 | @import "notifications";
13 | @import "search";
14 | @import "topics_list";
15 | @import "users";
16 | @import "outgoing";
17 | @import "footer";
18 | @import "posts_list";
19 | @import "register";
20 | @import "flags";
21 |
22 | @import "mobile";
23 |
24 | @import "helpers";
25 | @import "keyframes";
26 | @import "rtl";
27 |
28 | @import "modules/nprogress";
29 | @import "modules/usercard";
30 | @import "modules/taskbar";
31 | @import "modules/alerts";
32 | @import "modules/fab";
33 | @import "modules/morph";
34 | @import "modules/composer-default";
35 | @import "modules/cookie-consent";
36 | @import "modules/bottom-sheet";
37 |
38 |
39 | @material-primary: #00AB44;
40 | @material-success: #4CAF50;
41 | @material-info: #717484;
42 | @material-warning: #ff6d00;
43 | @material-danger: #F44336;
--------------------------------------------------------------------------------
/less/bootstrap/pager.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pager pagination
3 | // --------------------------------------------------
4 |
5 |
6 | .pager {
7 | padding-left: 0;
8 | margin: @line-height-computed 0;
9 | list-style: none;
10 | text-align: center;
11 | &:extend(.clearfix all);
12 | li {
13 | display: inline;
14 | > a,
15 | > span {
16 | display: inline-block;
17 | padding: 5px 14px;
18 | background-color: @pager-bg;
19 | border: 1px solid @pager-border;
20 | border-radius: @pager-border-radius;
21 | }
22 |
23 | > a:hover,
24 | > a:focus {
25 | text-decoration: none;
26 | background-color: @pager-hover-bg;
27 | }
28 | }
29 |
30 | .next {
31 | > a,
32 | > span {
33 | float: right;
34 | }
35 | }
36 |
37 | .previous {
38 | > a,
39 | > span {
40 | float: left;
41 | }
42 | }
43 |
44 | .disabled {
45 | > a,
46 | > a:hover,
47 | > a:focus,
48 | > span {
49 | color: @pager-disabled-color;
50 | background-color: @pager-bg;
51 | cursor: @cursor-disabled;
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/templates/partials/topic/quickreply.tpl:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
--------------------------------------------------------------------------------
/templates/account/topics.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{title}
6 |
7 |
8 |
9 |
10 |
15 |
16 |
17 |
18 |
19 |
20 |
{noItemsFoundKey}
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/templates/partials/chats/dropdown.tpl:
--------------------------------------------------------------------------------
1 |
2 | {{{each rooms}}}
3 |
4 |
5 |
6 | [[modules:chat.no-users-in-room]]
7 |
8 | {rooms.roomName}{rooms.usernames}
9 |
10 |
11 |
12 | {{{each rooms.users}}}
13 |
14 |
15 |
16 |
17 |
18 | {{{end}}}
19 |
20 |
21 | {{{each rooms.users}}}
22 | -
23 |
24 |
25 | {{{end}}}
26 |
27 |
28 | {rooms.teaser.content}
29 |
30 |
31 | {{{end}}}
32 |
33 |
[[modules:chat.no_active]]
34 |
--------------------------------------------------------------------------------
/templates/partials/quick-search-results.tpl:
--------------------------------------------------------------------------------
1 |
22 |
23 |
28 |
29 | {{{if !posts.length}}}
30 |
[[search:no-matches]]
31 | {{{end}}}
--------------------------------------------------------------------------------
/templates/partials/posts_list_item.tpl:
--------------------------------------------------------------------------------
1 |
2 |
22 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins/image.less:
--------------------------------------------------------------------------------
1 | // Image Mixins
2 | // - Responsive image
3 | // - Retina image
4 |
5 |
6 | // Responsive image
7 | //
8 | // Keep images from scaling beyond the width of their parents.
9 | .img-responsive(@display: block) {
10 | display: @display;
11 | max-width: 100%; // Part 1: Set a maximum relative to the parent
12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
13 | }
14 |
15 |
16 | // Retina image
17 | //
18 | // Short retina mixin for setting background-image and -size. Note that the
19 | // spelling of `min--moz-device-pixel-ratio` is intentional.
20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
21 | background-image: url("@{file-1x}");
22 |
23 | @media
24 | only screen and (-webkit-min-device-pixel-ratio: 2),
25 | only screen and ( min--moz-device-pixel-ratio: 2),
26 | only screen and ( -o-min-device-pixel-ratio: 2/1),
27 | only screen and ( min-device-pixel-ratio: 2),
28 | only screen and ( min-resolution: 192dpi),
29 | only screen and ( min-resolution: 2dppx) {
30 | background-image: url("@{file-2x}");
31 | background-size: @width-1x @height-1x;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/templates/partials/slideout-menu.tpl:
--------------------------------------------------------------------------------
1 |
7 |
8 |
12 |
13 |
14 |
18 |
19 |
27 |
--------------------------------------------------------------------------------
/less/bootstrap/jumbotron.less:
--------------------------------------------------------------------------------
1 | //
2 | // Jumbotron
3 | // --------------------------------------------------
4 |
5 |
6 | .jumbotron {
7 | padding: @jumbotron-padding (@jumbotron-padding / 2);
8 | margin-bottom: @jumbotron-padding;
9 | color: @jumbotron-color;
10 | background-color: @jumbotron-bg;
11 |
12 | h1,
13 | .h1 {
14 | color: @jumbotron-heading-color;
15 | }
16 |
17 | p {
18 | margin-bottom: (@jumbotron-padding / 2);
19 | font-size: @jumbotron-font-size;
20 | font-weight: 200;
21 | }
22 |
23 | > hr {
24 | border-top-color: darken(@jumbotron-bg, 10%);
25 | }
26 |
27 | .container &,
28 | .container-fluid & {
29 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
30 | }
31 |
32 | .container {
33 | max-width: 100%;
34 | }
35 |
36 | @media screen and (min-width: @screen-sm-min) {
37 | padding: (@jumbotron-padding * 1.6) 0;
38 |
39 | .container &,
40 | .container-fluid & {
41 | padding-left: (@jumbotron-padding * 2);
42 | padding-right: (@jumbotron-padding * 2);
43 | }
44 |
45 | h1,
46 | .h1 {
47 | font-size: (@font-size-base * 4.5);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/templates/account/sessions.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
[[user:sessions.description]]
8 |
9 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/templates/account/edit/email.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
30 |
31 |
--------------------------------------------------------------------------------
/less/bootstrap/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------------------------------
3 |
4 | // Utilities
5 | @import "mixins/hide-text.less";
6 | @import "mixins/opacity.less";
7 | @import "mixins/image.less";
8 | @import "mixins/labels.less";
9 | @import "mixins/reset-filter.less";
10 | @import "mixins/resize.less";
11 | @import "mixins/responsive-visibility.less";
12 | @import "mixins/size.less";
13 | @import "mixins/tab-focus.less";
14 | @import "mixins/text-emphasis.less";
15 | @import "mixins/text-overflow.less";
16 | @import "mixins/vendor-prefixes.less";
17 |
18 | // Components
19 | @import "mixins/alerts.less";
20 | @import "mixins/buttons.less";
21 | @import "mixins/panels.less";
22 | @import "mixins/pagination.less";
23 | @import "mixins/list-group.less";
24 | @import "mixins/nav-divider.less";
25 | @import "mixins/forms.less";
26 | @import "mixins/progress-bar.less";
27 | @import "mixins/table-row.less";
28 |
29 | // Skins
30 | @import "mixins/background-variant.less";
31 | @import "mixins/border-radius.less";
32 | @import "mixins/gradients.less";
33 |
34 | // Layout
35 | @import "mixins/clearfix.less";
36 | @import "mixins/center-block.less";
37 | @import "mixins/nav-vertical-align.less";
38 | @import "mixins/grid-framework.less";
39 | @import "mixins/grid.less";
40 |
--------------------------------------------------------------------------------
/templates/account/edit/username.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
30 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Persona theme for NodeBB
2 | ====================
3 |
4 | Note: This fork is for Netdata's community.
5 |
6 | Before installing this theme on Netdata's community, make sure to test (and develop) locally.
7 |
8 | Install mongodb, using your system's preferred method.
9 | Install nodebb (i.e. https://docs.nodebb.org/installing/os/arch/)
10 | Copy-paste the entire nodebb-theme-persona-netdata in nodebb/node_modules
11 | Start nodebb with
12 | ```
13 | cd nodebb
14 | ./nodebb start
15 | ```
16 | Go to localhost:4567
17 | Login as the administrator user you created
18 | Go to themes
19 | Activate Persona for Netdata
20 | Change categories to match community settings
21 | Change footer to match community settings
22 | Change logos to match community settings
23 |
24 | ---
25 |
26 | Persona is the new default theme for NodeBB as of v0.7.1
27 |
28 | ## Addons
29 |
30 | [Recent Cards](https://github.com/psychobunny/nodebb-plugin-recent-cards)
31 |
32 | ## Screenshots
33 |
34 | 
35 |
36 | 
37 |
--------------------------------------------------------------------------------
/less/modules/usercard.less:
--------------------------------------------------------------------------------
1 | .persona-usercard {
2 | position: absolute;
3 | background: #333;
4 | top: -50%;
5 | left: 0px;
6 | box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.25), 0px 2px 10px 0px rgba(0, 0, 0, 0.25);
7 | height: 150px;
8 | width: 450px;
9 | z-index: 1;
10 | display: block;
11 |
12 | a, a:hover, a:visited, a:active {
13 | text-decoration: none;
14 | color: white;
15 | }
16 |
17 | .usercard-picture {
18 | width: 150px;
19 | height: 150px;
20 | float: left;
21 | background-size: cover;
22 | background-repeat: no-repeat;
23 | font-size: 75px;
24 | line-height: 140px;
25 | text-align: center;
26 | }
27 |
28 | .usercard-body {
29 | padding: 5px 15px;
30 | float: left;
31 |
32 | height: 150px;
33 | width: 300px;
34 | color: white;
35 | }
36 |
37 | .usercard-name {
38 | font-size: 28px;
39 | }
40 |
41 | .usercard-username {
42 | text-transform: uppercase;
43 | font-size: 13px;
44 | }
45 |
46 | .usercard-info {
47 | text-align: center;
48 | font-size: 30px;
49 | font-weight: 300;
50 |
51 | small {
52 | text-transform: uppercase;
53 | font-size: 10px;
54 | display: block;
55 | margin-top: 15px;
56 | font-weight: 400;
57 | }
58 | }
59 |
60 | .fab.btn-morph {
61 | top: 75px;
62 | right: 15px;
63 | position: absolute;
64 | }
65 | }
--------------------------------------------------------------------------------
/less/bootstrap/mixins/buttons.less:
--------------------------------------------------------------------------------
1 | // Button variants
2 | //
3 | // Easily pump out default styles, as well as :hover, :focus, :active,
4 | // and disabled options for all buttons
5 |
6 | .button-variant(@color; @background; @border) {
7 | color: @color;
8 | background-color: @background;
9 | border-color: @border;
10 |
11 | &:hover,
12 | &:focus,
13 | &.focus,
14 | &:active,
15 | &.active,
16 | .open > .dropdown-toggle& {
17 | color: @color;
18 | background-color: darken(@background, 10%);
19 | border-color: darken(@border, 12%);
20 | }
21 | &:active,
22 | &.active,
23 | .open > .dropdown-toggle& {
24 | background-image: none;
25 | }
26 | &.disabled,
27 | &[disabled],
28 | fieldset[disabled] & {
29 | &,
30 | &:hover,
31 | &:focus,
32 | &.focus,
33 | &:active,
34 | &.active {
35 | background-color: @background;
36 | border-color: @border;
37 | }
38 | }
39 |
40 | .badge {
41 | color: @background;
42 | background-color: @color;
43 | }
44 | }
45 |
46 | // Button sizes
47 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
48 | padding: @padding-vertical @padding-horizontal;
49 | font-size: @font-size;
50 | line-height: @line-height;
51 | border-radius: @border-radius;
52 | }
53 |
--------------------------------------------------------------------------------
/less/noscript.less:
--------------------------------------------------------------------------------
1 | @import "mixins";
2 |
3 | noscript {
4 | .default {
5 | list-style-type: none;
6 | padding: 1em;
7 | margin-bottom: 1em;
8 | .zebra;
9 | }
10 |
11 | .categories {
12 | li {
13 | .default;
14 |
15 | .icon {
16 | float: left;
17 | width: auto;
18 | height: auto;
19 | padding: 0;
20 | margin: 0;
21 | margin-right: 1em;
22 | }
23 |
24 | a {
25 | font-size: 20px;
26 | }
27 | }
28 | }
29 |
30 | .topics {
31 | li {
32 | .default;
33 | }
34 |
35 | .timestamp {
36 | float: right;
37 | color: #999;
38 | font-style: italic;
39 | font-size: 12px;
40 | }
41 |
42 | .teaser {
43 | margin-left: 16px;
44 | margin-top: 8px;
45 |
46 | img {
47 | float: left;
48 | width: 64px;
49 | margin-right: 1em;
50 | }
51 |
52 | p {
53 | color: #666;
54 | font-size: 13px;
55 | text-overflow: ellipsis;
56 | overflow: hidden;
57 | white-space: nowrap;
58 | margin-left: 64px;
59 | padding-top: 10px;
60 | }
61 | }
62 | }
63 |
64 | .posts {
65 | li {
66 | .default;
67 |
68 | .profile {
69 | text-align: center;
70 |
71 | img {
72 | width: 64px;
73 | }
74 |
75 | span {
76 | font-weight: bold;
77 | display: inline-block;
78 | margin-top: 1em;
79 | }
80 | }
81 | }
82 | }
83 | }
--------------------------------------------------------------------------------
/less/bootstrap/bootstrap.less:
--------------------------------------------------------------------------------
1 | // Core variables and mixins
2 | @import "variables.less";
3 | @import "mixins.less";
4 |
5 | // Reset and dependencies
6 | @import "normalize.less";
7 | @import "print.less";
8 | @import "glyphicons.less";
9 |
10 | // Core CSS
11 | @import "scaffolding.less";
12 | @import "type.less";
13 | @import "code.less";
14 | @import "grid.less";
15 | @import "tables.less";
16 | @import "forms.less";
17 | @import "buttons.less";
18 |
19 | // Components
20 | @import "component-animations.less";
21 | @import "dropdowns.less";
22 | @import "button-groups.less";
23 | @import "input-groups.less";
24 | @import "navs.less";
25 | @import "navbar.less";
26 | @import "breadcrumbs.less";
27 | @import "pagination.less";
28 | @import "pager.less";
29 | @import "labels.less";
30 | @import "badges.less";
31 | @import "jumbotron.less";
32 | @import "thumbnails.less";
33 | @import "alerts.less";
34 | @import "progress-bars.less";
35 | @import "media.less";
36 | @import "list-group.less";
37 | @import "panels.less";
38 | @import "responsive-embed.less";
39 | @import "wells.less";
40 | @import "close.less";
41 |
42 | // Components w/ JavaScript
43 | @import "modals.less";
44 | @import "tooltip.less";
45 | @import "popovers.less";
46 | @import "carousel.less";
47 |
48 | // Utility classes
49 | @import "utilities.less";
50 | @import "responsive-utilities.less";
51 |
--------------------------------------------------------------------------------
/templates/registerComplete.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | [[register:interstitial.intro]]
7 |
8 |
9 |
10 |
11 |
12 | [[register:interstitial.errors-found]]
13 |
14 |
15 | {{{each errors}}}
16 | - @value
17 | {{{end}}}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
43 |
--------------------------------------------------------------------------------
/less/bootstrap/labels.less:
--------------------------------------------------------------------------------
1 | //
2 | // Labels
3 | // --------------------------------------------------
4 |
5 | .label {
6 | display: inline;
7 | padding: .2em .6em .3em;
8 | font-size: 75%;
9 | font-weight: bold;
10 | line-height: 1;
11 | color: @label-color;
12 | text-align: center;
13 | white-space: nowrap;
14 | vertical-align: baseline;
15 | border-radius: .25em;
16 |
17 | // Add hover effects, but only for links
18 | a& {
19 | &:hover,
20 | &:focus {
21 | color: @label-link-hover-color;
22 | text-decoration: none;
23 | cursor: pointer;
24 | }
25 | }
26 |
27 | // Empty labels collapse automatically (not available in IE8)
28 | &:empty {
29 | display: none;
30 | }
31 |
32 | // Quick fix for labels in buttons
33 | .btn & {
34 | position: relative;
35 | top: -1px;
36 | }
37 | }
38 |
39 | // Colors
40 | // Contextual variations (linked labels get darker on :hover)
41 |
42 | .label-default {
43 | .label-variant(@label-default-bg);
44 | }
45 |
46 | .label-primary {
47 | .label-variant(@label-primary-bg);
48 | }
49 |
50 | .label-success {
51 | .label-variant(@label-success-bg);
52 | }
53 |
54 | .label-info {
55 | .label-variant(@label-info-bg);
56 | }
57 |
58 | .label-warning {
59 | .label-variant(@label-warning-bg);
60 | }
61 |
62 | .label-danger {
63 | .label-variant(@label-danger-bg);
64 | }
65 |
--------------------------------------------------------------------------------
/templates/account/blocks.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
[[pages:account/blocks, {username}]]
6 |
7 |
8 |
11 |
style="display: none;">[[user:has_no_blocks]]
12 |
13 |
14 |
33 |
34 |
--------------------------------------------------------------------------------
/templates/partials/notifications_list.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
[[notifications:no_notifs]]
4 |
5 |
6 | {{{each notifications}}}
7 |
data-pid="{notifications.pid}" data-tid="{notifications.tid}">
8 |
9 |
10 |
11 |
12 |
13 | {notifications.user.icon:text}
14 |
15 |
16 |
17 |
18 | {notifications.timeago}
19 | {notifications.bodyShort}
20 |
21 |
22 |
23 | {{{end}}}
24 |
--------------------------------------------------------------------------------
/less/users.less:
--------------------------------------------------------------------------------
1 | .users {
2 |
3 | &.admin {
4 | #users-container {
5 | padding: 0;
6 | }
7 |
8 | .users-box{
9 | display: inline-block;
10 | margin-top: 20px;
11 | text-align: center;
12 | vertical-align: top;
13 | white-space: nowrap;
14 | text-overflow: ellipsis;
15 | overflow: hidden;
16 | height: auto;
17 | max-width: 125px;
18 |
19 | img {
20 | width:80px;
21 | height:80px;
22 | }
23 |
24 | a {
25 | margin-bottom:5px;
26 | }
27 | }
28 | }
29 | }
30 |
31 | .users-container {
32 | padding: 0;
33 | list-style-type: none;
34 |
35 | li {
36 | padding-bottom: 10px;
37 | }
38 |
39 | .users-box{
40 | display: inline-block;
41 | margin-top: 20px;
42 | text-align: center;
43 | vertical-align: top;
44 | width: 104px;
45 |
46 | a {
47 | max-width: 94px;
48 | text-overflow: ellipsis;
49 | overflow: hidden;
50 | white-space: nowrap;
51 | }
52 | }
53 |
54 | .user-info {
55 | >span {
56 | max-width: 94px;
57 | text-overflow: ellipsis;
58 | overflow: hidden;
59 | white-space: nowrap;
60 | display: inline-block;
61 | }
62 | }
63 |
64 | .user-img {
65 | .user-icon-style(20px, 1rem, 50%);
66 | vertical-align: middle;
67 | }
68 |
69 | .anon-user .avatar {
70 | background: @gray-lighter;
71 | color: white;
72 | width: 80px;
73 | height: 80px;
74 | line-height: 80px;
75 | }
76 | }
--------------------------------------------------------------------------------
/templates/footer.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
14 |
15 |
[[global:reconnecting-message, {config.siteTitle}]]
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | {{{each scripts}}}
24 |
25 | {{{end}}}
26 |
27 |
36 |
37 |
38 |
39 |
40 |