1
0
mirror of https://github.com/flarum/core.git synced 2025-08-16 05:14:20 +02:00

Major CSS revamp

- Get rid of Bootstrap (except we still rely on some JS)
- Use BEM class names
- Rework variables/theme config
- Fix various bugs, including some on mobile

The CSS is still not ideal – it needs to be cleaned up some more. But
that can be a focus for after beta.
This commit is contained in:
Toby Zerner
2015-07-17 14:47:49 +09:30
parent 76678f72f2
commit a9ded36b57
206 changed files with 4337 additions and 8830 deletions

View File

@@ -0,0 +1,76 @@
.ActivityPage-loadMore .LoadingIndicator {
height: 46px;
}
.ActivityPage-list {
border-left: 3px solid @control-bg;
list-style: none;
margin: 0 0 0 16px;
padding: 0;
> li {
margin-bottom: 30px;
padding-left: 32px;
@media @phone {
padding-left: 24px;
}
}
}
.Activity-avatar {
.Avatar--size(32px);
float: left;
margin-left: -50px;
.box-shadow(0 0 0 3px @body-bg);
margin-top: -5px;
@media @phone {
margin-left: -42px;
}
}
.Activity-header {
color: @muted-color;
margin-bottom: 10px;
}
.Activity-description {
margin-right: 5px;
}
.Activity-content {
display: block;
padding: 15px;
background: @control-bg;
border-radius: @border-radius;
color: @muted-color;
&, &:hover {
text-decoration: none;
}
}
.PostedActivity-header {
margin: 0 0 5px;
padding: 0;
list-style: none;
> li {
display: inline-block;
margin-right: 5px;
}
h3 {
font-size: 14px;
font-weight: bold;
margin: 0;
&, & a {
color: @heading-color;
}
.Activity-content:hover & {
text-decoration: underline;
}
}
}
.PostedActivity-body {
color: @muted-color;
& :last-child {
margin-bottom: 0;
}
}

View File

@@ -0,0 +1,34 @@
.AvatarEditor {
position: relative;
.Dropdown-toggle {
opacity: 0;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
border-radius: 100%;
background: rgba(0, 0, 0, 0.6);
text-align: center;
text-decoration: none;
border: 0;
}
&:hover .Dropdown-toggle, &.open .Dropdown-toggle, &.loading .Dropdown-toggle {
opacity: 1;
}
.LoadingIndicator {
color: #fff;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
@media @tablet-up {
.Dropdown-menu {
left: 35%;
top: 65%;
}
}
}

View File

@@ -1,28 +1,28 @@
// ------------------------------------
// Composer
.composer {
.Composer {
pointer-events: auto;
.box-shadow(0 2px 6px @fl-shadow-color);
.box-shadow(0 2px 6px @shadow-color);
&.minimized {
height: 50px;
cursor: pointer;
}
}
.composer-controls {
.Composer-controls {
list-style: none;
padding: 0;
margin: 0;
}
.composer-content {
.ComposerBody-content {
.minimized & {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.composer-header {
.ComposerBody-header {
list-style: none;
padding: 1px 0;
margin: 0 0 10px;
@@ -31,20 +31,20 @@
pointer-events: none;
}
& > li {
> li {
display: inline-block;
margin-right: -4px;
}
& h3 {
h3 {
margin: 0;
line-height: 1.5em;
&, & input, & a {
color: @fl-secondary-color;
&, input, a {
color: @secondary-color;
font-size: 14px;
font-weight: normal;
}
& input {
input {
font-size: 16px;
&, &[disabled], &:focus {
@@ -54,7 +54,7 @@
height: auto;
}
}
& .fa {
.icon {
font-size: 14px;
}
}
@@ -62,7 +62,7 @@
.fa-minus.minimize {
vertical-align: -5px;
}
.composer-controls {
.Composer-controls {
position: absolute;
right: 10px;
top: 10px;
@@ -75,16 +75,16 @@
top: 7px;
}
}
.composer-loading {
.ComposerBody-loading {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.9);
background: fade(@body-bg, 90%);
opacity: 0;
pointer-events: none;
border-radius: @border-radius-base @border-radius-base 0 0;
border-radius: @border-radius @border-radius 0 0;
.transition(opacity 0.2s);
&.active {
@@ -92,7 +92,7 @@
pointer-events: auto;
}
}
.composer-editor {
.ComposerBody-editor {
.minimized & {
visibility: hidden;
}
@@ -102,22 +102,22 @@
// screen. The controls are hidden (except for the 'x', which is the back-
// control), and the avatar hidden.
@media @phone {
.composer {
.Composer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: @zindex-composer;
background: @fl-body-bg;
background: @body-bg;
&:not(.minimized) {
top: 0;
height: 100vh !important;
padding-top: @mobile-header-height;
padding-top: @header-height-phone;
&:before {
content: " ";
.toolbar();
.header-background();
opacity: 0;
.visible& {
@@ -125,29 +125,29 @@
}
}
& .composer-controls {
z-index: @zindex-navbar-fixed + 1;
& .Composer-controls {
z-index: @zindex-header + 1;
& li:not(.back-control) {
li:not(.App-backControl) {
display: none;
}
}
}
}
.composer-content {
.ComposerBody-content {
.minimized & {
margin-right: 50px;
}
}
.composer-avatar {
.ComposerBody-avatar {
display: none;
}
.composer-header {
.ComposerBody-header {
margin-bottom: 0;
& > li {
> li {
display: block;
border-bottom: 1px solid @fl-body-secondary-color;
border-bottom: 1px solid @control-bg;
padding: 10px 15px;
.minimized & {
@@ -155,19 +155,19 @@
padding: 15px;
}
}
& h3 {
&, & a, & input {
h3 {
&, a, input {
font-size: 14px;
}
& input {
input {
width: 100% !important;
}
}
}
.composer-editor {
.ComposerBody-editor {
padding: 15px;
& textarea {
textarea {
height: 50vh !important;
}
}
@@ -175,8 +175,8 @@
// On larger screens, show the composer as a window at the bottom of the
// content area. We hide a lot of the content when the composer is minimized.
@media @tablet, @desktop, @desktop-hd {
.composer-container {
@media @tablet-up {
.App-composer {
position: fixed;
bottom: 0;
left: 0;
@@ -185,21 +185,21 @@
pointer-events: none;
.transition(left 0.2s);
}
.composer {
border-radius: @border-radius-base @border-radius-base 0 0;
background: fade(@fl-body-bg, 95%);
.Composer {
border-radius: @border-radius @border-radius 0 0;
background: fade(@body-bg, 95%);
transform: translateZ(0); // Fix for Chrome bug where a transparent white background is actually gray
position: relative;
height: 300px;
.transition(~"background 0.2s, box-shadow 0.2s");
&.active, &.full-screen {
background: @fl-body-bg;
&.active, &.fullScreen {
background: @body-bg;
}
&.active:not(.full-screen) {
box-shadow: 0 0 0 2px @fl-body-primary-color, 0 2px 6px @fl-shadow-color;
&.active:not(.fullScreen) {
box-shadow: 0 0 0 2px @primary-color, 0 2px 6px @shadow-color;
}
&.full-screen {
&.fullScreen {
position: fixed;
left: 0;
top: 0;
@@ -209,69 +209,70 @@
height: auto;
}
}
.composer-controls {
.full-screen & .btn {
.Composer-controls {
.fullScreen & .Button {
padding: 13px;
width: auto;
& .fa {
.Button-icon {
font-size: 20px;
}
}
}
.composer-header {
.full-screen & {
.ComposerBody-header {
.fullScreen & {
margin-bottom: 20px;
}
}
.composer-content {
.Composer-content {
padding: 20px 20px 0;
.minimized & {
padding: 12px 20px;
}
.full-screen & {
.fullScreen & {
max-width: 900px;
margin: 0 auto;
padding: 30px;
}
}
.composer-handle {
.Composer-handle {
height: 15px;
margin-bottom: -17px;
position: relative;
.minimized &, .full-screen & {
.minimized &, .fullScreen & {
display: none;
}
}
.composer-avatar {
.ComposerBody-avatar {
float: left;
.avatar-size(64px);
.Avatar--size(64px);
.minimized &, .full-screen & {
.minimized &, .fullScreen & {
display: none;
}
}
.composer-body {
.ComposerBody-content {
margin-left: 90px;
.minimized &, .full-screen & {
.minimized &, .fullScreen & {
margin-left: 0;
}
}
.composer-editor {
.full-screen & textarea {
.ComposerBody-editor {
.fullScreen & textarea {
font-size: 16px;
}
}
}
@media @desktop, @desktop-hd {
.composer:not(.full-screen) {
@media @desktop-up {
.Composer:not(.fullScreen) {
margin-left: -20px;
margin-right: 180px;
.index-page & {
.App--index & {
margin-left: 205px;
margin-right: -20px;
}
@@ -279,21 +280,21 @@
}
@media @desktop-hd {
.has-pane.pane-pinned .composer-container {
left: @index-pane-width;
.hasPane.panePinned .App-composer {
left: @pane-width;
}
}
// ------------------------------------
// Text Editor
.text-editor {
.TextEditor {
& textarea {
border-radius: 0;
padding: 0 0 10px;
border: 0;
resize: none;
color: @fl-body-color;
color: @text-color;
font-size: 14px;
line-height: 1.7;
@@ -303,7 +304,7 @@
}
}
}
.text-editor-controls {
.TextEditor-controls {
margin: 0;
padding: 15px 0;
list-style-type: none;
@@ -313,19 +314,19 @@
}
}
@media @tablet, @desktop, @desktop-hd {
.text-editor-controls {
@media @tablet-up {
.TextEditor-controls {
margin: 0 -20px 0 -110px;
padding: 15px 20px;
border-top: 1px solid @fl-body-secondary-color;
border-top: 1px solid @control-bg;
.full-screen & {
.fullScreen & {
margin: 0;
border-top: 0;
padding: 20px 0;
}
& .btn-primary {
& .Button--primary {
padding-left: 20px;
padding-right: 20px;
}

View File

@@ -0,0 +1,19 @@
.DiscussionHero {
.badges {
margin-right: 5px;
margin-bottom: -2px;
}
}
.DiscussionHero-items {
padding: 0;
margin: 0;
list-style: none;
& > li {
display: inline-block;
}
}
.DiscussionHero-title {
display: inline;
vertical-align: middle;
}

View File

@@ -0,0 +1,22 @@
// ------------------------------------
// Discussions List
.DiscussionList-discussions {
margin: 0;
padding: 0;
list-style-type: none;
position: relative;
}
.DiscussionList-loadMore {
text-align: center;
margin-top: 10px;
}
.DiscussionList-loadMore .LoadingIndicator {
height: 46px;
}
@media @phone {
.DiscussionList {
margin: 0 -15px;
}
}

View File

@@ -0,0 +1,253 @@
.DiscussionListItem {
.tooltip .tooltip-inner {
max-width: none;
}
}
.DiscussionListItem a {
text-decoration: none;
}
.DiscussionListItem-content {
position: relative;
color: @muted-color;
}
.DiscussionListItem-main {
color: inherit;
text-decoration: none;
}
.DiscussionListItem-author {
float: left;
margin-top: 15px;
}
.DiscussionListItem-badges {
float: left;
margin-top: 10px;
text-align: right;
white-space: nowrap;
pointer-events: none;
.badge {
margin-left: -15px;
position: relative;
pointer-events: auto;
}
}
.DiscussionListItem-main {
display: inline-block;
width: 100%;
padding: 12px 0;
}
.DiscussionListItem-title {
margin: 0 0 5px;
line-height: 1.3;
color: @heading-color;
font-weight: normal;
.unread & {
font-weight: bold;
}
}
.DiscussionListItem-info {
list-style-type: none;
padding: 0;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 12px;
> li {
display: inline;
}
.username {
font-weight: bold;
}
}
.DiscussionListItem-count {
float: right;
margin-top: 12px;
text-decoration: none;
.unread & {
cursor: pointer;
}
}
.DiscussionListItem-relevantPosts {
padding-bottom: 15px;
@media @phone {
margin-left: -45px;
margin-right: -35px;
}
.PostPreview {
background: @control-bg;
display: block;
padding: 10px 15px;
border-bottom: 2px dotted @body-bg;
color: @muted-color;
transition: border-color 0.2s;
.DiscussionListItem:hover & {
border-color: lighten(@control-bg, 3%);
}
.Avatar, time {
display: none;
}
.PostPreview-content {
padding-left: 0;
}
&:first-child {
border-radius: @border-radius @border-radius 0 0;
}
&:hover {
background: darken(@control-bg, 3%);
text-decoration: none;
}
}
}
@media @phone {
.DiscussionListItem-controls {
display: none;
}
.DiscussionListItem-content {
padding-left: 15px + 45px;
padding-right: 15px + 35px;
&:active {
background: @control-bg;
}
}
.DiscussionListItem-author {
margin-left: -45px;
.Avatar {
.Avatar--size(32px);
}
}
.DiscussionListItem-badges {
margin-left: -45px;
width: 38px;
.badge {
.Badge--size(20px);
margin-left: -13px;
}
}
.DiscussionListItem-main {
margin-right: -45px;
}
.DiscussionListItem-title {
font-size: 14px;
text-decoration: none !important;
}
.DiscussionListItem-count {
margin-right: -35px;
background: @control-bg;
color: @control-color;
border-radius: @border-radius;
font-size: 12px;
padding: 2px 6px;
.unread& {
background: @primary-color;
color: #fff;
font-weight: bold;
&:active {
opacity: 0.5;
}
}
}
}
@media @tablet-up {
.DiscussionListItem {
position: relative;
margin-right: -15px;
padding-right: 15px;
padding-left: 15px;
margin-left: -15px;
border-radius: @border-radius;
transition: background 0.2s;
&:hover {
background: @control-bg;
}
&:hover .DiscussionListItem-controls,
.DiscussionListItem-controls.open {
opacity: 1;
}
.DiscussionListItem-controls.open {
z-index: 3;
}
}
.DiscussionListItem-controls {
position: absolute;
right: 0;
top: 15px;
z-index: 1;
opacity: 0;
transition: opacity 0.2s;
.Dropdown-toggle {
display: block;
}
.Dropdown-menu {
right: 0;
left: auto;
}
}
.DiscussionListItem-content {
padding-left: 52px;
padding-right: 75px;
}
.DiscussionListItem-author {
margin-left: -52px;
.Avatar {
.Avatar--size(36px);
}
}
.DiscussionListItem-badges {
margin-left: -55px;
width: 48px;
}
.DiscussionListItem-main {
margin-right: -65px;
}
.DiscussionListItem-title {
font-size: 16px;
}
.DiscussionListItem-count {
margin-top: 21px;
margin-right: -65px;
width: 55px;
color: @muted-color;
font-size: 14px;
padding-left: 21px;
&:before {
.fa();
content: @fa-var-comment-o;
float: left;
margin-left: -21px;
margin-top: 3px;
}
.unread & {
color: @heading-color;
font-weight: bold;
&:before {
content: @fa-var-comment;
}
&:hover:before {
content: @fa-var-check;
}
}
}
}

View File

@@ -0,0 +1,145 @@
.DiscussionPage-nav {
> ul {
padding: 0;
margin: 0;
list-style: none;
}
}
@media @phone {
.DiscussionPage-nav {
margin: 0 -15px;
border-bottom: 1px solid @control-bg;
> ul > li {
margin: 15px;
display: inline-block;
&.item-controls, &.item-scrubber {
margin: 0;
display: block;
}
}
}
}
@media @tablet-up {
.DiscussionPage-nav {
float: right;
&, > ul {
width: 150px;
}
> ul {
position: fixed;
margin-top: 30px;
z-index: 1;
> li {
margin-bottom: 10px;
}
}
.ButtonGroup, .Button {
width: 100%;
}
.ButtonGroup:not(.itemCount1) {
.SplitDropdown-button {
width: 77%;
}
.Dropdown-toggle {
width: 22%;
}
}
}
}
@media @tablet-up {
.DiscussionPage-stream {
margin-right: 200px;
}
}
// ------------------------------------
// Discussions Pane
@media @phone {
.DiscussionPage-list {
display: none;
}
}
@media @tablet-up {
.DiscussionPage-list {
left: -@pane-width;
width: 100%;
position: fixed;
z-index: @zindex-pane;
overflow: auto;
top: @header-height;
bottom: 0;
width: @pane-width;
background: @body-bg;
padding-bottom: 40px;
border-top: 1px solid @control-bg;
.box-shadow(2px 2px 6px -2px @shadow-color);
.transition(left 0.2s);
.paneShowing & {
left: 0;
}
.DiscussionListItem {
margin: 0;
padding: 0;
border-radius: 0;
&.active {
background: @control-bg;
}
}
.DiscussionListItem-controls {
top: 5px;
}
.DiscussionListItem-content {
padding-left: 52px + 15px;
padding-right: 65px + 15px;
}
.DiscussionListItem-title {
font-size: 14px;
}
.DiscussionListItem-relevantPosts {
margin-left: -52px;
margin-right: -65px;
}
.DiscussionListItem-count {
margin-top: 11px;
}
}
}
@media @desktop-hd {
.DiscussionPage-list {
.panePinned & {
left: 0;
z-index: @zindex-composer - 1;
.transition(none);
}
}
// When the pane is pinned, move the other page content inwards
.App-content, .App-footer {
.hasPane.panePinned & {
margin-left: @pane-width;
.container {
max-width: 100%;
padding-left: 30px;
padding-right: 30px;
}
}
}
.App-header .container {
transition: width 0.2s;
.hasPane.panePinned & {
width: 100%;
}
}
}

47
less/forum/Hero.less Normal file
View File

@@ -0,0 +1,47 @@
.Hero {
margin-top: -1px;
background: @hero-bg;
text-align: center;
color: @hero-color;
h2 {
margin: 0;
font-size: 16px;
font-weight: normal;
line-height: 1.5em;
}
.container {
padding-top: 20px;
padding-bottom: 20px;
}
}
.Hero-close {
float: right;
margin-top: -10px;
color: inherit;
}
.Hero-subtitle {
margin: 8px 0 0;
line-height: 1.5em;
}
@media @phone {
.Hero-close {
margin-right: -10px;
}
}
@media @tablet-up {
.Hero {
h2 {
font-size: 22px;
}
.container {
padding-top: 40px;
padding-bottom: 30px;
}
}
.Hero-subtitle {
font-size: 15px;
}
}

37
less/forum/IndexPage.less Normal file
View File

@@ -0,0 +1,37 @@
// ------------------------------------
// Sidebar
@media @desktop-up {
.IndexPage-nav .item-newDiscussion .Button {
display: block;
width: 100%;
margin-bottom: 20px;
}
}
// ------------------------------------
// Results
.IndexPage-toolbar {
margin-bottom: 15px;
}
.IndexPage-toolbar-view, .IndexPage-toolbar-action {
display: inline-block;
margin: 0;
list-style: none;
padding: 0;
> li {
display: inline-block;
}
}
.IndexPage-toolbar-view > li {
margin-right: 5px;
}
.IndexPage-toolbar-action {
float: right;
> li {
margin-left: 5px;
}
}

View File

@@ -0,0 +1,49 @@
.NotificationGrid {
background: @control-bg;
border-radius: @border-radius;
td, th {
border-bottom: 1px solid @body-bg;
color: @control-color;
}
td, th, .Checkbox {
padding: 10px 15px;
}
.NotificationGrid-checkbox {
padding: 0;
}
thead {
th {
text-align: center;
padding: 15px 25px;
}
.icon {
display: block;
font-size: 14px;
width: auto;
margin-bottom: 5px;
}
}
}
.NotificationGrid-groupToggle {
cursor: pointer;
.icon {
font-size: 14px;
margin-right: 2px;
}
}
.NotificationGrid-checkbox {
.Checkbox {
display: block;
}
.Checkbox-display {
text-align: center;
cursor: pointer;
}
&.highlighted .Checkbox, .Checkbox:hover {
&:not(.disabled) {
background: darken(@control-bg, 4%);
}
}
}

View File

@@ -0,0 +1,121 @@
.NotificationList {
& .loading-indicator {
height: 100px;
}
}
.NotificationList-header {
@media @tablet-up {
padding: 12px 15px;
border-bottom: 1px solid @control-bg;
h4 {
font-size: 12px;
text-transform: uppercase;
font-weight: bold;
margin: 0;
color: @muted-color;
}
.Button {
float: right;
margin-top: -11px;
margin-right: -11px;
}
}
}
.NotificationList-empty {
color: @muted-color;
text-align: center;
padding: 50px 0;
font-size: 16px;
}
.NotificationGroup {
border-top: 1px solid @control-bg;
margin-top: -1px;
&:not(:last-child) {
margin-bottom: 20px;
}
}
.NotificationGroup-header {
font-weight: bold;
color: @heading-color !important;
padding: 6px 15px;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.NotificationGroup-badges {
margin-left: -2px;
margin-right: 18px;
vertical-align: 1px;
.badge {
margin-right: -13px;
position: relative;
.Badge--size(21px);
}
}
.NotificationGroup-content {
list-style: none;
margin: 0;
padding: 0;
}
.Notification {
> a {
display: block;
padding: 8px 15px 8px 70px;
color: @muted-color;
overflow: hidden;
.unread& {
background: @control-bg;
}
&:hover {
text-decoration: none;
background: @control-bg;
}
}
.Avatar {
.Avatar--size(24px);
float: left;
margin: -2px 0 -2px -55px;
}
time {
font-size: 11px;
font-weight: bold;
text-transform: uppercase;
}
}
.Notification-icon {
float: left;
margin-left: -23px;
font-size: 14px;
margin-top: 2px;
}
.Notification-content {
margin-right: 5px;
.username {
font-weight: bold;
}
}
.drawerToggle.unreadNotifications {
position: relative;
&:after {
content: ' ';
display: block;
position: absolute;
background: @primary-color;
top: 8px;
right: 6px;
width: 14px;
height: 14px;
border-radius: 7px;
border: 2px solid @body-bg;
}
}

View File

@@ -0,0 +1,39 @@
.NotificationsDropdown {
.Dropdown-menu {
padding: 0;
overflow: hidden;
.NotificationList-content {
max-height: 70vh;
overflow: auto;
padding-bottom: 10px;
}
}
& .Dropdown-toggle .Button-label {
margin-left: 10px;
}
}
@media @tablet-up {
.NotificationsDropdown {
.Dropdown-menu {
width: 400px;
}
.Dropdown-toggle {
.Button--icon();
}
}
}
.NotificationsDropdown-button.unread .Button-icon {
display: inline-block;
border-radius: 12px;
height: 24px;
width: 24px;
text-align: center;
padding: 2px 0;
font-weight: bold;
margin: -2px 0;
background: @primary-color;
color: #fff;
font-size: 13px;
}

398
less/forum/Post.less Normal file
View File

@@ -0,0 +1,398 @@
// ------------------------------------
// Posts
.Post {
padding: 30px 0;
transition: 0.2s box-shadow, top 0.2s, opacity 0.2s;
position: relative;
top: 0;
&.editing {
top: 5px;
opacity: 0.2;
}
}
.Post-controls {
float: right;
margin-top: -8px;
margin-left: 10px;
}
.Post-header {
margin-bottom: 10px;
color: @muted-color;
&, a {
color: @muted-color;
}
> ul {
list-style-type: none;
padding: 0;
margin: 0;
> li {
display: inline;
margin-right: 10px;
}
}
}
.PostUser {
margin: 0;
display: inline;
font-weight: normal;
position: relative;
h3 {
display: inline;
}
h3, h3 a {
color: @heading-color;
font-weight: bold;
font-size: 15px;
}
.UserCard {
position: absolute;
top: -10px;
left: -100px;
z-index: @zindex-dropdown;
.transition(~"opacity 0.2s, transform 0.2s");
transform: scale(0.95);
transform-origin: left top;
opacity: 0;
&.in {
transform: scale(1);
opacity: 1;
}
}
}
.PostUser-badges {
text-align: right;
white-space: nowrap;
pointer-events: none;
.Badge {
margin-left: -15px;
position: relative;
pointer-events: auto;
}
}
.Post-body {
font-size: 14px;
line-height: 1.7;
position: relative;
p, ul, ol, blockquote {
margin-bottom: 1em;
}
a {
border-bottom: 1px solid @control-bg;
font-weight: 600;
&:hover, &:focus, &:active {
text-decoration: none;
border-color: @link-color;
}
}
blockquote {
font-size: inherit;
border: 0;
background: @control-bg;
color: @control-color;
border-radius: @border-radius;
padding: 10px 15px;
border-top: 2px dotted @body-bg;
border-bottom: 2px dotted @body-bg;
margin: 1em 0;
}
pre {
border: 0;
padding: 15px;
background: darken(@body-bg, 3%);
color: #666;
font-size: 90%;
border-radius: @border-radius;
}
h1 {
font-size: 160%;
}
h2 {
font-size: 120%;
font-weight: bold;
}
h3 {
font-size: 100%;
font-weight: bold;
text-transform: uppercase;
}
h4, h5, h6 {
font-size: 100%;
font-weight: bold;
}
img {
max-width: 100%;
}
}
.Post.hidden {
.Post-header, .Post-header a, .Post-user h3, .Post-user h3 a {
color: @muted-more-color;
}
.Post-body, .Post-footer, h3 .Avatar, .PostUser-badges {
position: absolute;
visibility: hidden;
opacity: 0;
margin-top: -5px;
.transition(~"margin-top 0.2s, opacity 0.2s");
}
&.revealContent {
.Post-body, .Post-footer, h3 .Avatar, .PostUser-badges {
position: static;
visibility: visible;
opacity: 0.5;
margin-top: 0;
}
}
.Post-header .Button--more {
background: fade(@muted-more-color, 30%);
color: @muted-more-color;
}
}
.PostMeta {
display: inline;
}
.PostMeta .Dropdown-menu {
width: 400px;
padding: 10px;
color: @muted-color;
@media @phone {
padding: 15px !important;
}
}
.PostMeta-number {
color: @text-color;
font-weight: bold;
}
.PostMeta-time {
margin-left: 5px;
}
.PostMeta-permalink {
margin-top: 10px;
a& {
display: block;
overflow: hidden;
text-overflow: ellipsis;
}
}
.EventPost-icon {
float: left;
}
.EventPost {
&, a {
color: @muted-color;
}
a {
font-weight: bold;
}
}
.EventPost-info {
font-size: 15px;
}
.DiscussionRenamedPost-old, .DiscussionRenamedPost-new {
font-weight: normal;
font-style: italic;
}
.Post-footer, .Post-actions {
> ul {
list-style-type: none;
padding: 0;
margin: 0;
}
&, a {
color: @muted-color;
}
a {
display: inline-block;
.icon {
display: none;
}
}
}
.Post-footer {
> ul {
> li {
margin-bottom: 5px;
}
}
.icon {
font-size: 14px;
margin-right: 5px;
}
}
.Post-actions {
margin-top: 10px;
.transition(opacity 0.2s);
@media @tablet-up {
margin-bottom: -10px;
opacity: 0;
}
> ul {
> li {
margin-right: 10px;
display: inline-block;
}
}
.Post:hover & {
opacity: 1;
}
}
.PostStream-timeGap {
text-transform: uppercase;
font-weight: bold;
color: @muted-color;
padding: 20px 20px 20px 90px;
background: @control-bg;
font-size: 12px;
@media @phone {
margin: 0 -15px;
padding: 20px 15px;
}
}
.PostPreview {
color: @muted-color;
padding-left: 50px;
line-height: 1.7em;
.Avatar {
float: left;
margin-left: -50px;
.Avatar--size(32px);
}
.username {
color: @text-color;
font-weight: bold;
margin-right: 5px;
}
time {
margin-right: 5px;
text-transform: uppercase;
font-size: 11px;
font-weight: 600;
}
}
@media @phone {
.Post-controls {
margin-top: -6px;
margin-right: -8px;
.Dropdown-toggle {
opacity: 0.5;
}
}
.Post-header {
.Avatar {
.Avatar--size(32px);
vertical-align: middle;
margin-right: 5px;
}
}
.PostUser-badges {
position: absolute;
top: -12px;
left: 6px;
width: 32px;
.Badge {
.Badge--size(20px);
margin-left: -13px;
}
}
.EventPost {
padding-left: 30px;
}
.EventPost-icon {
font-size: 18px;
margin-left: -30px;
margin-top: 2px;
}
}
@media @tablet-up {
.Post {
padding-left: 90px;
.Post-controls {
opacity: 0;
transition: opacity 0.2s;
}
&:hover .Post-controls, .Post-controls.open {
opacity: 1;
}
}
.PostUser-avatar {
margin-left: -90px;
float: left;
.Avatar--size(64px);
}
.PostUser-badges {
float: left;
position: relative;
margin-left: -85px;
margin-top: -3px;
width: 64px;
}
.EventPost-icon {
text-align: right;
margin-left: -90px;
width: 64px;
font-size: 22px;
}
}
.ReplyPlaceholder {
font-size: 15px;
cursor: text;
overflow: hidden;
margin-top: 50px;
border: 2px dashed @control-bg;
color: @muted-color;
border-radius: 10px;
padding: 20px;
.Post-header {
margin: 0;
color: inherit;
}
}
@media @tablet-up {
.ReplyPlaceholder {
margin-left: -20px;
margin-right: -20px;
padding-left: 110px;
border-color: transparent;
transition: border-color 0.2s;
.Post-header {
padding-top: 18px;
}
.Avatar {
margin-top: -18px;
}
&:hover {
border-color: @control-bg;
}
}
}

View File

@@ -0,0 +1,83 @@
// ------------------------------------
// Stream
.PostStream {
@media @tablet-up {
margin-top: 10px;
}
}
.PostStream-item {
&:not(:last-child) {
border-bottom: 1px solid @control-bg;
@media @phone {
margin: 0 -15px;
padding: 0 15px;
}
}
}
@keyframes blink {
0% {opacity: 0.5}
50% {opacity: 1}
100% {opacity: 0.5}
}
@-webkit-keyframes blink {
0% {opacity: 0.5}
50% {opacity: 1}
100% {opacity: 0.5}
}
.LoadingPost {
.animation(blink 1s linear);
.animation-iteration-count(infinite);
}
.fakeText {
display: inline-block;
vertical-align: middle;
background: @control-bg;
height: 12px;
width: 100%;
margin-bottom: 20px;
border-radius: @border-radius;
.Post-header & {
height: 16px;
width: 150px;
@media @phone {
margin-bottom: 0;
}
}
}
// .item.highlight .post {
// &:before {
// content: "";
// position: absolute;
// left: -30px;
// top: -5px;
// bottom: -5px;
// width: 5px;
// border-radius: @border-radius;
// background: @fl-primary-color;
// }
// }
@-webkit-keyframes pulsate {
0% {-webkit-transform: scale(1)}
50% {-webkit-transform: scale(1.02)}
100% {-webkit-transform: scale(1)}
}
@keyframes pulsate {
0% {transform: scale(1)}
50% {transform: scale(1.02)}
100% {transform: scale(1)}
}
.pulsate {
.animation(pulsate 1s ease-in-out);
.animation-iteration-count(infinite);
}
.flash {
.animation(pulsate 0.2s ease-in-out);
.animation-iteration-count(1);
}

95
less/forum/Scrubber.less Normal file
View File

@@ -0,0 +1,95 @@
.Scrubber {
& a {
margin-left: -5px;
color: @muted-color;
& .fa {
font-size: 14px;
margin-right: 2px;
}
&:hover, &:focus {
text-decoration: none;
color: @link-color;
}
}
}
.Scrubber-scrollbar {
margin: 8px 0 8px 3px;
height: 300px;
min-height: 50px; // JavaScript sets a max-height
position: relative;
}
.Scrubber-before, .Scrubber-after {
border-left: 1px solid @control-bg;
}
.Scrubber-unread {
position: absolute;
border-left: 1px solid lighten(@muted-color, 10%);
width: 100%;
background-image: linear-gradient(to right, @control-bg, fade(@control-bg, 0) 10px, fade(@control-bg, 0));
display: flex;
align-items: center;
color: @muted-color;
text-transform: uppercase;
font-size: 11px;
font-weight: bold;
padding-left: 13px;
overflow: hidden;
}
.Scrubber-handle {
position: relative;
z-index: 1;
background: @body-bg;
width: 100%;
padding: 5px 0;
}
.Scrubber-bar {
height: 100%;
width: 5px;
background: @primary-color;
border-radius: 4px;
float: left;
margin-left: -2px;
transition: background 0.2s;
.disabled & {
background: @control-bg;
}
}
.Scrubber-info {
margin-top: -1.5em;
position: absolute;
top: 50%;
width: 100%;
left: 15px;
& strong {
display: block;
}
}
.Scrubber-description {
color: @muted-color;
}
@media @phone {
.PostStreamScrubber {
.Dropdown-toggle {
font-size: 14px;
}
.Dropdown-menu {
padding: 30px;
font-size: 13px;
}
}
.Scrubber-scrollbar {
height: 40vh !important;
max-height: none !important;
}
}
@media @tablet-up {
.PostStreamScrubber {
margin: 30px 0 0 0;
.Dropdown--expanded();
}
}

View File

@@ -0,0 +1,25 @@
.SettingsPage {
margin-top: 5px;
> ul {
list-style: none;
margin: 0;
padding: 0;
> li {
margin-bottom: 40px;
}
}
fieldset > ul {
list-style: none;
margin: 0;
padding: 0;
}
}
.Settings-account {
li {
display: inline-block;
margin-right: 5px;
}
}

View File

@@ -4,18 +4,18 @@
left: 0;
right: 0;
bottom: 0;
border-radius: @border-radius-base;
border-radius: @border-radius;
padding: 50px 30px;
text-align: center;
color: #fff;
font-size: 14px;
.inverted-components();
.light-contents();
& .avatar {
.avatar-size(96px);
border: 4px solid @fl-body-bg;
.box-shadow(0 2px 6px @fl-shadow-color);
.Avatar--size(96px);
border: 4px solid @body-bg;
.box-shadow(0 2px 6px @shadow-color);
}
& h3, & p {
margin-bottom: 25px;

49
less/forum/Slidable.less Normal file
View File

@@ -0,0 +1,49 @@
.Slidable-underneath {
display: none;
}
.Slidable {
position: relative;
.DiscussionListItem-controls {
display: block;
position: static;
}
.Slidable-underneath {
display: none;
background: @secondary-color !important;
position: absolute;
right: 0;
top: 0;
bottom: 0;
left: 0;
width: auto;
height: auto;
z-index: 0;
color: #fff !important;
border: 0;
border-radius: 0;
.box-shadow(none);
padding: 20px 0;
text-align: right;
.icon {
width: 50px;
text-align: center;
font-size: 20px;
}
}
.Slideable-underneath--left {
text-align: left;
}
.Slidable-content {
.transition(~"box-shadow 0.2s, border-radius 0.2s");
.sliding& {
position: relative;
background: #fff;
z-index: 2;
border-radius: 2px;
.box-shadow(0 2px 6px @shadow-color);
}
}
}

131
less/forum/UserCard.less Normal file
View File

@@ -0,0 +1,131 @@
.UserCard {
background: @control-bg;
.light-contents();
background-size: 100% 100%;
}
.UserCard-controls {
float: right;
.Dropdown-menu {
left: auto;
right: 0;
}
}
.UserCard--popover {
width: 500px;
.box-shadow(0 2px 6px @shadow-color);
&, .darkenBackground {
border-radius: @border-radius;
}
.container {
width: auto !important;
padding: 20px !important;
}
.UserCard-identity {
font-size: 22px;
}
}
.UserCard-profile {
text-align: left;
padding-left: 130px;
max-width: 800px;
@media @phone {
padding-left: 0;
text-align: center;
}
}
.UserCard-identity {
font-weight: normal;
display: inline;
vertical-align: middle;
}
.UserCard-avatar {
float: left;
margin-left: -130px;
@media @phone {
float: none;
margin: 0 auto 20px;
width: 64px + 8px;
}
.Dropdown-toggle {
margin: 4px;
line-height: 96px;
font-size: 26px;
@media @phone {
line-height: 64px;
}
}
.Avatar {
.Avatar--size(96px);
border: 4px solid #fff;
.box-shadow(0 2px 6px @shadow-color);
@media @phone {
.Avatar--size(64px);
}
}
}
.UserCard-badges {
list-style: none;
margin: 0 0 0 15px;
padding: 0;
&, > li {
display: inline-block;
}
}
.UserCard-info {
margin: 15px 0 0;
padding: 0;
list-style: none;
font-size: 12px;
> li {
display: inline-block;
margin-right: 15px;
}
.item-bio {
display: block;
margin: 0;
}
}
.UserBio {
margin: -10px -10px 10px;
border: 1px dashed transparent;
border-radius: @border-radius;
&.editable:not(.editing) {
cursor: text;
&:hover {
border-color: rgba(255, 255, 255, 0.2);
}
}
&, textarea {
font-size: 14px;
}
textarea {
padding: 10px;
font-size: 14px;
resize: none;
}
}
.UserBio-content {
padding: 10px 10px 1px;
}
.UserBio-placeholder {
opacity: 0.3;
}
.UserCard-lastSeen {
& .icon {
font-size: 14px;
}
&.online .icon {
font-size: 12px;
}
}

11
less/forum/UserPage.less Normal file
View File

@@ -0,0 +1,11 @@
.UserPage {
.UserCard-controls {
float: right;
.Dropdown-toggle .Button-icon {
display: none;
}
}
}

View File

@@ -1,34 +1,23 @@
@lib-path: "../lib";
@import "../lib/lib.less";
@import "@{lib-path}/bootstrap.less";
// We want to specify the @fa-font-path variable AFTER we import font awesome
// so that it overrides the default definition.
@import "@{lib-path}/font-awesome/font-awesome.less";
@fa-font-path: "/assets/fonts";
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700,600,300);
// Finally, with our vendor CSS loaded, we can import Flarum-specific stuff.
@import "@{lib-path}/components.less";
@import "@{lib-path}/buttons.less";
@import "@{lib-path}/badges.less";
@import "@{lib-path}/dropdowns.less";
@import "@{lib-path}/avatars.less";
@import "@{lib-path}/forms.less";
@import "@{lib-path}/alerts.less";
@import "@{lib-path}/modals.less";
@import "@{lib-path}/layout.less";
@import "@{lib-path}/side-nav.less";
@import "@{lib-path}/search.less";
@import "composer.less";
@import "notifications.less";
@import "hero.less";
@import "index.less";
@import "discussion.less";
@import "user.less";
@import "settings.less";
@import "login.less";
@import "signup.less";
@import "ActivityPage.less";
@import "AvatarEditor.less";
@import "Composer.less";
@import "DiscussionHero.less";
@import "DiscussionList.less";
@import "DiscussionListItem.less";
@import "DiscussionPage.less";
@import "Hero.less";
@import "IndexPage.less";
@import "LogInModal.less";
@import "NotificationGrid.less";
@import "NotificationList.less";
@import "NotificationsDropdown.less";
@import "Post.less";
@import "PostStream.less";
@import "Scrubber.less";
@import "SettingsPage.less";
@import "SignUpModal.less";
@import "Slidable.less";
@import "UserCard.less";
@import "UserPage.less";

View File

@@ -1,690 +0,0 @@
// ------------------------------------
// Hero
.discussion-hero {
& .badges {
margin-right: 5px;
margin-bottom: -2px;
}
& .discussion-hero-items {
padding: 0;
margin: 0;
list-style: none;
& > li {
display: inline-block;
}
& .block-item {
display: block;
}
}
}
.discussion-title {
display: inline;
vertical-align: middle;
}
// ------------------------------------
// Sidebar
.discussion-nav {
& > ul {
padding: 0;
margin: 0;
list-style: none;
}
}
@media @phone {
.discussion-nav {
margin: 0 -15px;
border-bottom: 1px solid @fl-body-secondary-color;
& > ul > li {
margin: 15px;
display: inline-block;
&.item-controls, &.item-scrubber {
margin: 0;
display: block;
}
}
}
}
@media @tablet, @desktop, @desktop-hd {
.discussion-nav {
float: right;
&, & > ul {
width: 150px;
}
& > ul {
position: fixed;
margin-top: 30px;
z-index: 1;
& > li {
margin-bottom: 10px;
}
}
& .btn-group, & .btn {
width: 100%;
}
& .btn-group:not(.item-count-1) {
& .btn {
width: 77%;
}
& .dropdown-toggle {
width: 22%;
}
}
}
}
// ------------------------------------
// Stream
.discussion-posts {
@media @tablet, @desktop, @desktop-hd {
margin-top: 10px;
}
& .item {
&:not(:last-child) {
border-bottom: 1px solid @fl-body-secondary-color;
@media @phone {
margin: 0 -15px;
padding: 0 15px;
}
}
}
}
@keyframes blink {
0% {opacity: 0.5}
50% {opacity: 1}
100% {opacity: 0.5}
}
@-webkit-keyframes blink {
0% {opacity: 0.5}
50% {opacity: 1}
100% {opacity: 0.5}
}
.loading-post {
.animation(blink 1s linear);
.animation-iteration-count(infinite);
}
.fake-text {
display: inline-block;
vertical-align: middle;
background: @fl-body-secondary-color;
height: 12px;
width: 100%;
margin-bottom: 20px;
border-radius: @border-radius-base;
.post-header & {
height: 16px;
width: 150px;
@media @phone {
margin-bottom: 0;
}
}
}
@media @tablet, @desktop, @desktop-hd {
.discussion-posts {
margin-right: 200px;
}
}
// ------------------------------------
// Posts
.post {
padding: 30px 0;
transition: 0.2s box-shadow, top 0.2s, opacity 0.2s;
position: relative;
top: 0;
&.editing {
top: 5px;
opacity: 0.2;
}
& .contextual-controls {
float: right;
margin-top: -8px;
margin-left: 10px;
}
}
.item.highlight .post {
&:before {
content: "";
position: absolute;
left: -30px;
top: -5px;
bottom: -5px;
width: 5px;
border-radius: @border-radius-base;
background: @fl-primary-color;
}
}
@-webkit-keyframes pulsate {
0% {-webkit-transform: scale(1)}
50% {-webkit-transform: scale(1.02)}
100% {-webkit-transform: scale(1)}
}
@keyframes pulsate {
0% {transform: scale(1)}
50% {transform: scale(1.02)}
100% {transform: scale(1)}
}
.item.pulsate {
.animation(pulsate 1s ease-in-out);
.animation-iteration-count(infinite);
}
.item.flash {
.animation(pulsate 0.2s ease-in-out);
.animation-iteration-count(1);
}
.post-header {
margin-bottom: 10px;
color: @fl-body-muted-color;
&, & a {
color: @fl-body-muted-color;
}
& > ul {
list-style-type: none;
padding: 0;
margin: 0;
& > li {
display: inline;
margin-right: 10px;
}
}
& .post-user {
margin: 0;
display: inline;
font-weight: normal;
position: relative;
& h3 {
display: inline;
}
& h3, & h3 a {
color: @fl-body-heading-color;
font-weight: bold;
font-size: 15px;
}
& h3 .badges {
text-align: right;
white-space: nowrap;
pointer-events: none;
& .badge {
margin-left: -15px;
position: relative;
pointer-events: auto;
}
}
& .user-card {
position: absolute;
top: -10px;
left: -100px;
z-index: @zindex-popover;
.transition(~"opacity 0.2s, transform 0.2s");
transform: scale(0.95);
transform-origin: left top;
&.in {
transform: scale(1);
}
}
}
}
.post-body {
font-size: 14px;
line-height: 1.7;
position: relative;
& p, & ul, & ol, & blockquote {
margin-bottom: 1em;
}
& a {
border-bottom: 1px solid @fl-body-secondary-color;
font-weight: 600;
&:hover, &:focus, &:active {
text-decoration: none;
border-color: @link-hover-color;
}
}
& blockquote {
font-size: inherit;
border: 0;
background: @fl-body-control-bg;
color: @fl-body-control-color;
border-radius: @border-radius-base;
padding: 10px 20px;
border-top: 2px dotted @fl-body-bg;
border-bottom: 2px dotted @fl-body-bg;
}
& pre {
border: 0;
padding: 15px;
background: #f3f3f3;
color: #666;
font-size: 90%;
}
& h1 {
font-size: 160%;
}
& h2 {
font-size: 120%;
font-weight: bold;
}
& h3 {
font-size: 100%;
font-weight: bold;
text-transform: uppercase;
}
& h4, & h5, & h6 {
font-size: 100%;
font-weight: bold;
}
& img {
max-width: 100%;
}
}
.post.is-hidden {
& .post-header, & .post-header a, & .post-user h3, & .post-user h3 a {
color: @fl-body-muted-more-color;
}
& .post-body, & .post-footer, & h3 .avatar, & .post-header .badges {
position: absolute;
visibility: hidden;
opacity: 0;
margin-top: -5px;
.transition(~"margin-top 0.2s, opacity 0.2s");
}
&.reveal-content {
& .post-body, & .post-footer, & h3 .avatar, & .post-header .badges {
position: static;
visibility: visible;
opacity: 0.5;
margin-top: 0;
}
}
& .post-header .btn-more {
background: #eee;
color: @fl-body-muted-more-color;
}
}
.post-meta {
width: 400px;
padding: 10px;
color: @fl-body-muted-color;
& .number {
color: @fl-body-color;
font-weight: bold;
}
& .time {
margin-left: 5px;
}
& .permalink {
margin-top: 10px;
}
& a.permalink {
display: block;
overflow: hidden;
text-overflow: ellipsis;
}
@media @phone {
padding: 15px !important;
}
}
.post-icon {
float: left;
}
.event-post {
&, & a {
color: @fl-body-muted-color;
}
& a {
font-weight: bold;
}
}
.event-post-info {
font-size: 15px;
}
.discussion-renamed-post {
& .old-title, & .new-title {
font-weight: normal;
font-style: italic;
}
}
.post-footer, .post-actions {
& > ul {
list-style-type: none;
padding: 0;
margin: 0;
}
&, & a {
color: @fl-body-muted-color;
}
& a {
display: inline-block;
& .icon {
display: none;
}
}
}
.post-footer {
& > ul {
& > li {
margin-bottom: 5px;
}
}
& .fa {
font-size: 14px;
margin-right: 5px;
}
}
.post-actions {
margin-top: 10px;
.transition(opacity 0.2s);
@media @tablet, @desktop, @desktop-hd {
margin-bottom: -10px;
opacity: 0;
}
& > ul {
& > li {
margin-right: 10px;
display: inline-block;
}
}
.post:hover & {
opacity: 1;
}
}
.time-gap {
text-transform: uppercase;
font-weight: bold;
color: @fl-body-muted-color;
padding: 20px 20px 20px 90px;
background: @fl-body-secondary-color;
font-size: 12px;
@media @phone {
margin: 0 -15px;
padding: 20px 15px;
}
}
.post-preview {
color: @fl-body-muted-color;
padding-left: 50px;
line-height: 1.7em;
& .avatar {
float: left;
margin-left: -50px;
.avatar-size(32px);
}
& .username {
color: @fl-body-color;
font-weight: bold;
margin-right: 5px;
}
& time {
margin-right: 5px;
text-transform: uppercase;
font-size: 11px;
font-weight: 600;
}
}
@media @phone {
.post {
& .contextual-controls {
margin-top: -6px;
margin-right: -8px;
& .dropdown-toggle {
opacity: 0.5;
}
}
}
.post-header {
& .avatar {
.avatar-size(32px);
vertical-align: middle;
margin-right: 5px;
}
}
.post-user {
position: relative;
& h3 .badges {
position: absolute;
top: -12px;
left: 6px;
width: 32px;
& .badge {
.badge-size(20px);
margin-left: -13px;
}
}
}
.event-post {
padding-left: 30px;
}
.post-icon {
font-size: 18px;
margin-left: -30px;
margin-top: 2px;
}
}
@media @tablet, @desktop, @desktop-hd {
.post {
padding-left: 90px;
& .contextual-controls {
opacity: 0;
transition: opacity 0.2s;
}
&:hover .contextual-controls, & .contextual-controls.open {
opacity: 1;
}
}
.post-header {
& .avatar {
margin-left: -90px;
float: left;
.avatar-size(64px);
}
}
.post-user {
& h3 .badges {
float: left;
margin-left: -85px;
margin-top: -3px;
width: 64px;
}
}
.post-icon {
text-align: right;
margin-left: -90px;
width: 64px;
font-size: 22px;
}
}
.reply-post {
font-size: 15px;
cursor: text;
overflow: hidden;
margin-top: 50px;
border: 2px dashed @fl-body-secondary-color;
color: @fl-body-muted-color;
border-radius: 10px;
padding: 20px;
& .post-header {
margin: 0;
color: inherit;
}
}
@media @tablet, @desktop, @desktop-hd {
.reply-post {
margin-left: -20px;
margin-right: -20px;
padding-left: 110px;
border-color: transparent;
transition: border-color 0.2s;
& .post-header {
padding-top: 18px;
}
& .avatar {
margin-top: -18px;
}
&:hover {
border-color: @fl-body-secondary-color;
}
}
}
// ------------------------------------
// Scrubber
.scrubber {
& a {
margin-left: -5px;
color: @fl-body-muted-color;
& .fa {
font-size: 14px;
margin-right: 2px;
}
&:hover, &:focus {
text-decoration: none;
color: @link-hover-color;
}
}
}
.scrubber-scrollbar {
margin: 8px 0 8px 3px;
height: 300px;
min-height: 50px; // JavaScript sets a max-height
position: relative;
}
.scrubber-before, .scrubber-after {
border-left: 1px solid @fl-body-secondary-color;
}
.scrubber-unread {
position: absolute;
border-left: 1px solid lighten(@fl-body-muted-color, 10%);
width: 100%;
background-image: linear-gradient(to right, @fl-body-secondary-color, fade(@fl-body-secondary-color, 0) 10px, fade(@fl-body-secondary-color, 0));
display: flex;
align-items: center;
color: @fl-body-muted-color;
text-transform: uppercase;
font-size: 11px;
font-weight: bold;
padding-left: 13px;
}
.scrubber-slider {
position: relative;
z-index: 1;
background: @fl-body-bg;
width: 100%;
padding: 5px 0;
}
.scrubber-handle {
height: 100%;
width: 5px;
background: @fl-body-primary-color;
border-radius: 4px;
float: left;
margin-left: -2px;
transition: background 0.2s;
.disabled & {
background: @fl-body-secondary-color;
}
}
.scrubber-info {
height: (2em * @line-height-base);
margin-top: (-1em * @line-height-base);
position: absolute;
top: 50%;
width: 100%;
left: 15px;
& strong {
display: block;
}
& .description {
color: @fl-body-muted-color;
}
}
.scrubber-highlights {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
list-style-type: none;
pointer-events: none;
}
.scrubber-highlights li {
position: absolute;
right: -6px;
background: #fc0;
height: 8px;
width: 13px;
border-radius: 4px;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), inset 0 0 0 1px rgba(255, 255, 255, 0.5);
opacity: 0.99;
}
@media @phone {
.stream-scrubber {
& .dropdown-toggle {
font-size: 14px;
}
& .dropdown-menu {
padding: 30px;
font-size: 14px;
}
}
.scrubber-scrollbar {
height: 40vh !important;
max-height: none !important;
}
}
@media @tablet, @desktop, @desktop-hd {
.stream-scrubber {
margin: 30px 0 0 0;
.expand-dropdown();
}
}

View File

@@ -1,40 +0,0 @@
.hero {
margin-top: -1px;
background: @fl-body-hero-bg;
text-align: center;
padding: 20px 0;
color: @fl-body-hero-color;
& .close {
float: right;
margin-top: -10px;
color: inherit;
}
& h2 {
margin: 0;
font-size: 16px;
font-weight: normal;
line-height: 1.5em;
}
& .subtitle {
margin: 8px 0 0;
line-height: 1.5em;
}
}
@media @phone {
.hero {
& .close {
margin-right: -10px;
}
}
}
@media @tablet, @desktop, @desktop-hd {
.hero {
padding: 40px 0 30px;
font-size: 15px;
& h2 {
font-size: 22px;
}
}
}

View File

@@ -1,470 +0,0 @@
// ------------------------------------
// Sidebar
@media @desktop, @desktop-hd {
.index-nav {
& .new-discussion {
display: block;
margin-bottom: 20px;
}
}
}
// ------------------------------------
// Results
.index-toolbar {
margin-bottom: 15px;
}
.index-toolbar-view, .index-toolbar-action {
display: inline-block;
margin: 0;
list-style: none;
padding: 0;
& > li {
display: inline-block;
}
}
.index-toolbar-view {
& > li {
margin-right: 5px;
}
}
.index-toolbar-action {
float: right;
& > li {
margin-left: 5px;
}
}
@media @phone, @tablet {
.offset-content {
margin-top: 15px;
}
}
@media @desktop, @desktop-hd {
.offset-content {
margin-top: 30px;
margin-left: 225px;
}
}
// ------------------------------------
// Discussions Pane
@media @phone {
.index-area.paned {
display: none;
}
}
@media @tablet, @desktop, @desktop-hd {
.index-area {
left: -@index-pane-width;
width: 100%;
&.paned {
position: fixed;
z-index: @zindex-pane;
overflow: auto;
top: @header-height;
bottom: 0;
width: @index-pane-width;
background: @fl-body-bg;
padding-bottom: 40px;
border-top: 1px solid @fl-body-control-bg;
.box-shadow(2px 2px 6px -2px @fl-shadow-color);
.transition(left 0.2s);
.pane-showing & {
left: 0;
}
& .container {
width: auto;
margin: 0;
padding: 0 !important;
}
& .index-results {
margin: 0;
}
& .hero, & .index-nav, & .index-toolbar {
display: none;
}
& .discussion-list-item {
margin: 0;
padding: 0;
border-radius: 0;
&.active {
background: @fl-body-control-bg;
}
& .contextual-controls {
top: 5px;
}
}
& .discussion-summary {
padding-left: 52px + 15px;
padding-right: 65px + 15px;
& .title {
font-size: 14px;
}
& .relevant-posts {
margin-left: -52px;
margin-right: -65px;
}
& .count {
margin-top: 11px;
}
}
}
}
}
@media @desktop-hd {
.index-area.paned {
.pane-pinned & {
left: 0;
z-index: @zindex-composer - 1;
.transition(none);
}
}
// When the pane is pinned, move the other page content inwards
.global-content, .global-footer {
.has-pane.pane-pinned & {
margin-left: @index-pane-width;
& .container {
max-width: 100%;
padding: 0 30px;
}
}
}
.global-header .container {
transition: width 0.2s;
.has-pane.pane-pinned & {
width: 100%;
}
}
}
// ------------------------------------
// Discussions List
.discussion-list {
& .loading-indicator {
height: 46px;
}
& > ul {
margin: 0;
padding: 0;
list-style-type: none;
position: relative;
}
}
@media @phone {
.discussion-list {
margin: 0 -15px;
}
}
.discussion-summary {
position: relative;
&, & .main {
color: @fl-body-muted-color;
text-decoration: none;
}
& .author {
float: left;
margin-top: 15px;
}
& .tooltip .tooltip-inner {
max-width: none;
}
& .badges {
float: left;
margin-top: 10px;
text-align: right;
white-space: nowrap;
pointer-events: none;
& .badge {
margin-left: -15px;
position: relative;
pointer-events: auto;
}
}
& .main {
display: inline-block;
width: 100%;
padding: 12px 0;
}
&:hover .title {
// text-decoration: underline;
}
& .title {
margin: 0 0 5px;
line-height: 1.3;
color: @fl-body-heading-color;
}
&.unread .title {
font-weight: bold;
}
& .info {
list-style-type: none;
padding: 0;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 12px;
& > li {
display: inline;
}
}
& .username {
font-weight: bold;
}
& .count {
float: right;
margin-top: 12px;
text-decoration: none;
.unread& {
cursor: pointer;
}
}
& .relevant-posts {
padding-bottom: 15px;
@media @phone {
margin-left: -45px;
margin-right: -35px;
}
& .post-preview {
background: @fl-body-secondary-color;
display: block;
padding: 10px 15px;
border-bottom: 2px dotted @fl-body-bg;
color: @fl-body-muted-color;
transition: border-color 0.2s;
.discussion-list-item:hover & {
border-color: lighten(@fl-body-secondary-color, 3%);
}
& .avatar, & time {
display: none;
}
& .post-preview-content {
padding-left: 0;
}
&:first-child {
border-radius: @border-radius-base @border-radius-base 0 0;
}
&:hover {
background: darken(@fl-body-secondary-color, 3%);
text-decoration: none;
}
}
}
}
.load-more {
text-align: center;
margin-top: 10px;
}
@media @phone {
.discussion-summary {
padding-left: 15px + 45px;
padding-right: 15px + 35px;
&:active {
background: @fl-body-secondary-color;
}
& .author {
margin-left: -45px;
}
& .badges {
margin-left: -45px;
width: 38px;
& .badge {
.badge-size(20px);
margin-left: -13px;
}
}
& .avatar {
.avatar-size(32px);
}
& .main {
margin-right: -45px;
}
& .title {
font-size: 14px;
text-decoration: none !important;
}
& .count {
margin-right: -35px;
background: @fl-body-control-bg;
color: @fl-body-control-color;
border-radius: @border-radius-base;
font-size: 12px;
padding: 2px 6px;
.unread& {
background: @fl-body-primary-color;
color: #fff;
font-weight: bold;
&:active {
opacity: 0.5;
}
}
& .label {
display: none;
}
}
}
}
.slidable-underneath {
display: none;
}
.discussion-list-item .contextual-controls {
display: block;
position: static;
}
.slidable {
position: relative;
& .slidable-underneath {
display: none;
background: @fl-secondary-color !important;
position: absolute;
right: 0;
top: 0;
bottom: 0;
left: 0;
width: auto;
height: auto;
z-index: 0;
color: #fff !important;
border: 0;
border-radius: 0;
.box-shadow(none);
padding: 20px 0;
text-align: right;
&.slidable-underneath-left {
text-align: left;
}
& .icon {
width: 50px;
text-align: center;
font-size: 20px;
}
}
& .slidable-slider {
.transition(~"box-shadow 0.2s, border-radius 0.2s");
.sliding& {
position: relative;
background: #fff;
z-index: 2;
border-radius: 2px;
.box-shadow(0 2px 6px @fl-shadow-color);
}
}
}
@media @tablet, @desktop, @desktop-hd {
.discussion-list-item {
position: relative;
margin-right: -15px;
padding-right: 15px;
padding-left: 15px;
margin-left: -15px;
border-radius: @border-radius-base;
transition: background 0.2s;
& .contextual-controls {
position: absolute;
right: 0;
top: 15px;
z-index: 1;
opacity: 0;
transition: opacity 0.2s;
& .dropdown-toggle {
display: block;
}
}
&:hover {
background: lighten(@fl-body-secondary-color, 3%);
}
&:hover .contextual-controls, & .contextual-controls.open {
opacity: 1;
}
}
.discussion-summary {
padding-left: 52px;
padding-right: 75px;
& .author {
margin-left: -52px;
}
& .badges {
margin-left: -55px;
width: 48px;
}
& .avatar {
.avatar-size(36px);
}
& .main {
margin-right: -65px;
}
& .title {
font-size: 16px;
}
& .count {
margin-top: 21px;
margin-right: -65px;
width: 55px;
color: @fl-body-muted-color;
font-size: 14px;
padding-left: 21px;
&:before {
.fa();
content: @fa-var-comment-o;
float: left;
margin-left: -21px;
margin-top: 3px;
}
.unread& {
color: @fl-body-heading-color;
font-weight: bold;
&:before {
content: @fa-var-comment;
}
&:hover:before {
content: @fa-var-check;
}
}
}
}
}

View File

@@ -1,159 +0,0 @@
.notifications {
& .dropdown-menu {
padding: 0;
overflow: hidden;
& .notifications-content {
max-height: 70vh;
overflow: auto;
padding-bottom: 10px;
}
}
& .dropdown-toggle .label {
margin-left: 5px;
}
}
.notification-list {
& .loading-indicator {
height: 100px;
}
}
@media @tablet, @desktop, @desktop-hd {
.notifications {
& .dropdown-menu {
width: 400px;
}
& .dropdown-toggle .label {
display: none;
}
}
}
.notifications-icon {
display: inline-block;
border-radius: 12px;
height: 24px;
width: 24px;
text-align: center;
padding: 2px 0;
font-weight: bold;
margin: -2px -3px;
}
&.unread .notifications-icon {
background: @fl-body-primary-color;
color: #fff;
}
.notifications-header {
@media @tablet, @desktop, @desktop-hd {
padding: 12px 15px;
border-bottom: 1px solid @fl-body-secondary-color;
& h4 {
font-size: 12px;
text-transform: uppercase;
font-weight: bold;
margin: 0;
color: @fl-body-muted-color;
}
& .btn {
float: right;
margin-top: -5px;
margin-right: -5px;
}
}
}
.no-notifications {
color: @fl-body-muted-color;
text-align: center;
padding: 50px 0;
font-size: 16px;
}
.notification-group {
border-top: 1px solid @fl-body-secondary-color;
margin-top: -1px;
&:not(:last-child) {
margin-bottom: 20px;
}
}
.notification-group-header {
font-weight: bold;
color: @fl-body-heading-color !important;
padding: 6px 15px;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
& .badges {
margin-left: -2px;
margin-right: 18px;
vertical-align: 1px;
& .badge {
margin-right: -13px;
position: relative;
.badge-size(21px);
}
}
}
.notification-group-list {
list-style: none;
margin: 0;
padding: 0;
}
.notification {
& > a {
display: block;
padding: 8px 15px 8px 70px;
color: @fl-body-muted-color;
overflow: hidden;
.unread& {
background: @fl-body-secondary-color;
}
&:hover {
text-decoration: none;
background: @fl-body-secondary-color;
}
}
& .avatar {
.avatar-size(24px);
float: left;
margin: -2px 0 -2px -55px;
}
& .icon {
float: left;
margin-left: -23px;
font-size: 14px;
margin-top: 2px;
}
& .username {
font-weight: bold;
}
& .content {
margin-right: 5px;
}
& time {
font-size: 11px;
font-weight: bold;
text-transform: uppercase;
}
}
.drawer-toggle.unread-notifications {
position: relative;
&:after {
content: ' ';
display: block;
position: absolute;
background: @fl-body-primary-color;
top: 4px;
right: 2px;
width: 14px;
height: 14px;
border-radius: 7px;
border: 2px solid @fl-body-bg;
}
}

View File

@@ -1,73 +0,0 @@
.settings {
margin-top: 5px;
& > ul {
list-style: none;
margin: 0;
padding: 0;
& > li {
margin-bottom: 40px;
}
}
& fieldset > ul {
list-style: none;
margin: 0;
padding: 0;
}
}
.settings-account {
& li {
display: inline-block;
margin-right: 5px;
}
}
.notification-grid {
& table {
background: @fl-body-control-bg;
border-radius: @border-radius-base;
}
& table td, & table th {
border-bottom: 1px solid @fl-body-bg;
color: @fl-body-control-color;
}
& td, & th, & .yesno {
padding: 10px 15px;
}
& thead {
& th {
text-align: center;
padding: 15px 25px;
}
& .fa {
display: block;
font-size: 14px;
width: auto;
margin-bottom: 5px;
}
}
& .toggle-group {
& .fa {
font-size: 14px;
margin-right: 2px;
}
}
& .yesno-cell {
padding: 0;
}
& .yesno-control {
display: block;
}
& .yesno {
text-align: center;
cursor: pointer;
}
& .yesno-cell.highlighted .yesno, & .yesno:hover {
&:not(.disabled) {
background: darken(@fl-body-control-bg, 4%);
}
}
& .toggle-group {
cursor: pointer;
}
}

View File

@@ -1,253 +0,0 @@
.user-card {
.inverted-components();
background-size: 100% 100%;
&, & .container {
position: relative;
}
}
.darken-overlay {
background: rgba(0, 0, 0, 0.2);
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.user-hero {
& .contextual-controls {
float: right;
& .dropdown-toggle .icon-glyph {
display: none;
}
}
}
.user-card-popover {
width: 500px;
padding: 20px;
.box-shadow(0 2px 6px @fl-shadow-color);
&, & .darken-overlay {
border-radius: @border-radius-base;
}
& .container {
width: auto !important;
padding: 0 !important;
}
& .user-identity {
font-size: 22px;
}
}
.user-profile {
text-align: left;
padding-left: 130px;
max-width: 800px;
@media @phone {
padding-left: 0;
text-align: center;
}
& .user-identity {
display: inline;
vertical-align: middle;
}
& .user-avatar {
float: left;
margin-left: -130px;
@media @phone {
float: none;
margin: 0 auto 20px;
width: 64px + 8px;
}
}
& .avatar-editor .dropdown-toggle {
margin: 4px;
line-height: 96px;
font-size: 26px;
@media @phone {
line-height: 64px;
}
}
& .avatar {
.avatar-size(96px);
border: 4px solid @fl-body-bg;
.box-shadow(0 2px 6px @fl-shadow-color);
@media @phone {
.avatar-size(64px);
}
}
& .badges {
margin-left: 10px;
}
& .user-info {
margin: 15px 0 0;
padding: 0;
list-style: none;
font-size: 12px;
& > li {
display: inline-block;
margin-right: 15px;
}
& .block-item {
display: block;
}
}
& .user-bio {
margin: -10px -10px 10px;
border: 1px dashed transparent;
border-radius: @border-radius-base;
&.editable:not(.editing) {
cursor: text;
&:hover {
border-color: rgba(255, 255, 255, 0.2);
}
}
.bio-content {
padding: 10px 10px 1px;
}
&, & textarea {
font-size: 14px;
}
& textarea {
padding: 10px;
font-size: 14px;
resize: none;
}
& .placeholder {
opacity: 0.3;
}
}
& .user-last-seen {
& .fa {
font-size: 14px;
}
&.online .fa {
font-size: 12px;
}
}
}
.user-activity .loading-indicator {
height: 46px;
}
.activity-list {
border-left: 3px solid @fl-body-secondary-color;
list-style: none;
margin: 0 0 0 16px;
padding: 0;
& > li {
margin-bottom: 30px;
padding-left: 32px;
@media @phone {
padding-left: 24px;
}
}
& .activity-icon {
.avatar-size(32px);
float: left;
margin-left: -50px;
.box-shadow(0 0 0 3px #fff);
margin-top: -5px;
@media @phone {
margin-left: -42px;
}
}
}
.activity-info {
color: @fl-body-muted-color;
margin-bottom: 10px;
& strong {
margin-right: 5px;
}
}
.activity-content {
display: block;
padding: 15px;
background: @fl-body-secondary-color;
border-radius: @border-radius-base;
color: @fl-body-muted-color;
&, &:hover {
text-decoration: none;
}
& .discussion-summary {
margin: -20px 0;
padding-left: 0;
& .author {
display: none;
}
}
}
.post-activity {
overflow: hidden;
& .title {
margin: 0 0 5px;
font-size: 14px;
font-weight: bold;
&, & a {
color: @fl-body-heading-color;
}
}
&:hover .title {
text-decoration: underline;
}
& .body {
color: @fl-body-muted-color;
line-height: 1.7em;
& :last-child {
margin-bottom: 0;
}
}
}
.avatar-editor {
position: relative;
& .dropdown-toggle {
opacity: 0;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
border-radius: 100%;
background: rgba(0, 0, 0, 0.6);
text-align: center;
text-decoration: none;
}
&:hover .dropdown-toggle, &.open .dropdown-toggle, &.loading .dropdown-toggle {
opacity: 1;
}
& .loading-indicator {
color: #fff;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
@media @tablet, @desktop, @desktop-hd {
& .dropdown-menu {
left: 35%;
top: 65%;
}
}
}