discourse/app/assets/stylesheets/desktop/topic-post.scss
Robin Ward e503c3859a Allow plugins to change the header to show two rows
This allows the discourse-tagging plugin to correctly use two rows in
the header if it needs to display tags, or one row if there are no tags.
This works in tandem with the same logic for when there is a category
badge to display or not.
2015-02-19 14:56:45 -05:00

1052 lines
19 KiB
SCSS

.container {
@extend .clearfix;
max-width: $large-width;
margin-right: auto;
margin-left: auto;
}
.full-width {
margin-left: 0;
}
h1 .topic-statuses .topic-status i {
font-size: 0.8em;
vertical-align: middle;
}
.logo-small {
margin-right: 8px;
width: auto;
max-width: 80px;
height: auto;
max-height: 40px;
}
.post-cloak {
padding: 0;
&:first-of-type {
border-top: none;
}
.reply-to-tab {
z-index: 400;
font-size: 0.929em;
float: right;
margin: 1px 25px 0 0;
color: scale-color($primary, $lightness: 50%);
}
.gutter {
.reply-new {
.discourse-no-touch & {
opacity:0;
transition: opacity 0.7s ease-in-out;
}
.discourse-touch & {opacity: 1;}
}
}
div.actions, .post-actions {
.discourse-no-touch & {
opacity: 0.2;
transition: opacity 0.7s ease-in-out;
}
.discourse-touch & {opacity: 1;}
}
&:hover div.actions, &:hover .post-actions {
opacity: 1;
}
&:hover .gutter {
.reply-new,
.track-link {
opacity:1;
}
}
}
section.post-menu-area {
position: relative;
}
nav.post-controls {
padding: 0;
button {
color: scale-color($primary, $lightness: 60%);
margin-right: 2px;
}
span.badge-posts {
margin-right: 5px;
transition: all linear 0.15s;
}
.actions {
text-align: right;
float: right;
display: inline-block;
.more-actions {
display: none;
overflow: hidden;
}
}
.show-replies {
background: dark-light-diff($primary, $secondary, 90%, -65%);
padding: 8px 15px;
margin-left: 0;
span.badge-posts {color: scale-color($primary, $lightness: 60%);}
&:hover {
background: dark-light-diff($primary, $secondary, 90%, -65%);
span.badge-posts {color: $primary;}
}
i {
margin-left: 5px;
}
}
button.create {
margin-right: 0;
color: $tertiary;
background: dark-light-diff($tertiary, $secondary, 90%, -65%);
padding: 8px 20px;
margin-left: 10px;
&:hover { color: $secondary;
background: dark-light-diff($tertiary, $secondary, 0%, -20%)
}
&:active {
background: dark-light-diff($tertiary, $secondary, 50%, -35%);
box-shadow: inset 0 1px 3px rgba(0,0,0, .3);
}
}
.create i {
margin-right: 5px;
}
button {
font-size: 1.143em;
padding: 8px 10px;
vertical-align: top;
background: transparent;
border: none;
margin-left: 3px;
transition: all linear 0.15s;
&:hover {
background: scale-color-diff();
color: $primary;
}
&:active {
box-shadow: inset 0 1px 3px rgba(0,0,0, .4);
}
&.hidden {
display: none;
}
&.admin {
position: relative;
}
&.delete:hover {
background: $danger;
color: $secondary;
}
&.like:hover {
color: $love;
background: dark-light-diff($love, $secondary, 85%, -60%)
}
&.has-like {color: $love;}
&.has-like[disabled]:hover {
background: transparent;
}
&.bookmark {padding: 8px 11px; }
.read-icon {
&:before {
font-family: "FontAwesome";
content: "\f02e";
}
&.unseen {
&:before {
content: "\f097";
}
}
&.bookmarked {
&:before {
color: $tertiary;
}
}
}
}
.post-admin-menu {
background-color: $secondary;
width: 205px;
padding: 10px;
border: 1px solid scale-color-diff();
position: absolute;
text-align: left;
bottom: -2px;
right: 15px;
z-index: 1000;
display: none;
h3 {
margin-top: 0;
color: $primary;
font-size: 1em;
}
ul {
list-style: none;
margin: 10px 0 0 0;
}
li {
width: 176px;
margin-bottom: 5px;
i.fa {
width: 14px;
margin-right: 14px;
}
}
}
}
.embedded-posts {
background: dark-light-diff($primary, $secondary, 90%, -65%) !important;
h1, h2, h3 { margin: 10px 0; }
a.mention { background: darken(scale-color-diff(), 10%); }
.topic-body {
background: dark-light-diff($primary, $secondary, 90%, -65%) !important;
box-sizing: border-box;
width: calc(100% - 60px); // [100% - .topic-avatar width]
// WARNING: overflow hide is required for quoted / embedded images
// which expect "normal" post width, but expansions are narrower
overflow: hidden;
padding: 10px 15px 15px 15px;
}
.topic-avatar {
padding-left: 15px;
padding-top: 0;
}
// bottom means "reply expansion" below a post
&.bottom {
&.hidden {
display: block;
opacity: 0;
}
}
&.bottom {
margin-top: -11px;
.row {
padding-top: 7px;
}
}
// top means "in reply to expansion" above a post
&.top {
margin-left: 56px;
width: 701px;
}
&.top.topic-body {
padding-left: 0;
padding-right: 0;
}
.post-date { color: scale-color($primary, $lightness: 50%); }
.fa-arrow-up, .fa-arrow-down { margin-left: 5px; }
.row {
border-top: 1px solid darken(scale-color-diff(), 10%);
}
.reply:first-of-type .row { border-top: none; }
.quote .title, blockquote, .onebox, .onebox-result {
background: darken(scale-color-diff(), 5%);
border-left: 5px solid darken(scale-color-diff(), 12%);
}
.topic-meta-data {
position: relative;
}
.topic-meta-data h5 {
position: absolute;
z-index: 1;
font-size: 0.929em;
a {
font-weight: bold;
color: scale-color($primary, $lightness: 30%);
}
}
.arrow {color: scale-color($primary, $lightness: 50%);}
}
.post-action {
.relative-date {
margin-left: 5px;
}
.avatar { margin-right: 2px; }
}
a.star {
display: inline-block;
float: left;
}
.topic-map {
margin: 20px 0 0 0;
background: dark-light-diff($primary, $secondary, 90%, -65%);
.buttons .btn {
&:hover {border: 1px solid $primary !important;}
}
h3 {
margin-bottom: 4px;
color: $primary;
line-height: 23px;
}
h4 {
margin: 1px 0 2px 0;
color: scale-color($primary, $lightness: 50%);
font-weight: normal;
font-size: 0.857em;
line-height: 15px;
}
ul {
margin: 0;
list-style: none;
}
span.domain {
font-size: 0.714em;
color: scale-color($primary, $lightness: 50%);
}
.avatars {
> div {
float: left;
position: relative;
margin: 3px 0;
}
.post-count {
position: absolute;
top: 2px;
right: 6px;
padding: 0 4px;
font-weight: normal;
font-size: 11px;
line-height: 14px;
}
}
/* in expanded avatar view, limit to one line for now */
.avatars.clearfix {
height: 25px;
overflow: hidden;
}
.avatar {
float: left;
margin-right: 4px;
}
.map {
.secondary {text-align: center;}
li {
float: left;
padding: 7px 10px;
&:last-of-type {
border-right: 0;
}
&:nth-child(3) { text-align:center; }
}
a, .number {
line-height: 20px;
}
.number, i {
color: $primary;
}
.avatar a {
float: left;
}
}
.avatars,
.links,
.information {
padding: 7px 10px 15px 10px;
color: $primary;
}
.information {
border-top: 2px solid scale-color-diff();
}
.participants { // PMs //
.user {float: left; margin: 7px 20px 7px 0;}
}
.topic-links {
.badge-notification {
margin: 1px 5px 5px 0;
}
}
td {
vertical-align: top;
padding:1px;
}
.buttons {
float: right;
.btn {
border: 0;
border-bottom: 1px solid dark-light-diff($primary, $secondary, 80%, -75%);
padding: 0 23px;
color: $primary;
background: dark-light-diff($primary, $secondary, 80%, -75%);
&:hover {
background: dark-light-diff($primary, $secondary, 65%, -85%);
color: $primary;
border: none !important;
border-bottom: 1px solid dark-light-diff($primary, $secondary, 65%, -85%) !important;
span.badge-posts {color: $primary;}
}
&.collapsed {
border-bottom: 0;
padding-bottom: 1px;
}
.fa {
margin: 0;
font-size: 1.286em;
line-height: 52px;
}
}
}
}
#topic-footer-buttons {
padding: 10px 10px 0 0;
p {
line-height: 32px;
color: $primary;
}
.btn {
outline: 0;
margin-bottom: 5px;
margin-right: 10px;
.fa-bookmark.bookmarked { color: $tertiary; }
}
}
#suggested-topics {
clear: left;
padding: 20px 0 15px 0;
.topic-list {
> tbody > tr {
&:nth-child(odd) {
background-color: darken($secondary, 3%);
}
&:nth-child(even) {
background-color: $secondary;
}
}
}
table {
table-layout: fixed;
margin-top: 10px;
}
.topics {
padding-bottom: 15px;
}
// this forces category to take less space in suggested topics
// as the poster list is not present at all there.
th.category {
width: 150px;
}
}
#suggested-topics .topic-statuses .topic-status {
padding: 0;
i {
font-size:15px;
}
}
span.post-count {
background: $primary;
color: $secondary;
opacity: .8;
}
button.expand-post {
margin-top: 10px;
}
.quote-button.visible {
display: block;
}
iframe {
max-width: 100%;
}
video {
max-height: 500px;
}
@-webkit-keyframes fadein {
from {opacity: 0;}
to {opacity: 1;}
}
@keyframes fadein {
from {opacity: 0;}
to {opacity: 1;}
}
.extra-info-wrapper {
overflow: hidden;
.star, .badge-wrapper, i, .topic-link:not(.loading) {
-webkit-animation: fadein .7s;
animation: fadein .7s;
}
.topic-statuses {
i { color: $header_primary; }
i.fa-envelope { color: $danger; }
.unpinned { color: $header_primary; }
}
.topic-link {
color: $header_primary;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
/* default docked header CSS for all topics, including those without categories */
.extra-info {
h1 {
margin: 5px 0 0 0;
font-size: 1.6em;
line-height: 1.3em;
}
.topic-statuses {
margin-top: -2px;
}
.badge-wrapper {
margin: 0 0 0 2px;
padding: 0;
.badge-category {
color: $header_primary;
margin-right: 5px;
}
.badge-category-parent {
margin: 0;
padding: 0px 1px;
}
}
}
/* override docked header CSS for topics with categories */
.extra-info.two-rows {
h1 {
line-height: 1.1em;
margin: 0;
}
}
.open >.dropdown-menu {
display: block;
}
.btn-group {
position: relative;
}
.dropdown-toggle {
float: left;
position: relative;
}
a.mention {
padding: 2px 4px;
color: $primary;
background: scale-color-diff();
}
.moderator {
.topic-body {
background-color: dark-light-diff($highlight, $secondary, 70%, -80%);
}
}
.deleted {
.topic-body {
background-color: dark-light-diff(rgba($danger,.7), $secondary, 50%, -60%);
}
}
#share-link {
width: 365px;
margin-left: -4px;
}
.post-select {
float: right;
margin-right: 20px;
margin-top: -20px;
}
#show-topic-admin {
right: 20px;
padding: 5px 8px;
margin-top: 5px;
}
.topic-admin-menu {
h3 {margin-top: 0;}
}
.deleted-user-avatar {
font-size: 2.571em;
}
.info-line {
margin: 10px 0;
color: $primary;
}
/* solo quotes */
blockquote {
/* leave browser defaults for top and bottom here */
margin-left: 0;
margin-right: 0;
padding: 12px;
a.mention {background: darken(scale-color-diff(), 10%);}
}
/* quotes with attribution */
.quote {
&>blockquote {
.onebox-result {
background-color: scale-color-diff();
}
}
aside {
.quote, .title, blockquote, .onebox, .onebox-result {
background: darken(scale-color-diff(), 5%);
border-left: 5px solid darken(scale-color-diff(), 12%);
}
aside.quote>blockquote, aside.quote>.title {
border-left: 0;
}
}
}
.gutter {
margin-top: 13px;
width: 100%;
box-sizing: border-box;
z-index: 1;
padding-left: 757px;
ul {margin: 0;}
li {margin-bottom: 10px;}
i {font-size: 0.857em;}
.reply-new {
padding-left: 27px;
display:block;
overflow:hidden;
}
.track-link {
padding-left: 10px;
display: block;
overflow: hidden;
}
.post-links {
list-style-type: none;
position: relative;
line-height: 18px;
word-wrap: break-word;
a i {
position: relative;
margin-right: 7px;
margin-top: -2px;
margin-left: -17px;
}
a.toggle-more {
display: block;
text-align: right;
}
}
}
// variables are used to calculate the width of .gap
$topic-body-width: 690px;
$topic-body-width-padding: 11px;
$topic-avatar-width: 45px;
.topic-body {
width: $topic-body-width;
float: left;
position: relative;
z-index: 2;
border-top: 1px solid dark-light-diff($primary, $secondary, 90%, -75%);
padding: 12px $topic-body-width-padding 15px $topic-body-width-padding;
&.highlighted {
background-color: dark-light-diff($tertiary, $secondary, 90%, -40%);
}
}
.topic-avatar {
border-top: 1px solid dark-light-diff($primary, $secondary, 90%, -75%);
padding-top: 15px;
width: $topic-avatar-width;
float: left;
position: relative;
z-index: 2;
}
.gap {
background-color: scale-color-diff();
padding: 5px 0;
color: lighten($primary, 30%);
cursor: pointer;
text-align: center;
width: calc(#{$topic-avatar-width} + #{$topic-body-width} + 2 * #{$topic-body-width-padding});
}
.posts-wrapper {
position: relative;
}
.dropdown {
position: relative;
}
.caret {
display: inline-block;
width: 0;
height: 0;
vertical-align: middle;
border-top: 4px solid $primary;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
content: "";
margin-left: 5px;
}
.dropdown-menu {
position: absolute;
bottom: 115%;
left: 0;
z-index: 1000;
display: none;
float: left;
width: 550px;
margin: 1px 0 0;
list-style: none;
background-color: $secondary;
border: 1px solid scale-color-diff();
box-shadow: 0 1px 5px rgba(0,0,0, .4);
background-clip: padding-box;
span {font-size: 0.857em;}
.title {font-weight: bold; display: block; font-size: 1em;}
}
.dropdown-menu a {
display: block;
padding: 9px;
clear: both;
font-weight: normal;
line-height: 18px;
color: $primary;
transition: all linear .15s;
& > div {
margin-left: 26px;
}
}
.dropdown-menu li > a:hover,
.dropdown-menu .active > a,
.dropdown-menu .active > a:hover {
color: $primary;
text-decoration: none;
background-color: dark-light-diff($highlight, $secondary, 50%, -70%);
}
.dropdown-menu .disabled > a,
.dropdown-menu .disabled > a:hover {
text-decoration: none;
color: $primary;
background-color: dark-light-diff($tertiary, $secondary, 90%, -60%);
cursor: default;
}
.dropdown-menu .icon {
margin-top: 3px;
float: left;
font-size: 1.286em;
}
.open > .dropdown-menu {
display: block;
clear: both;
}
#selected-posts {
padding-left: 20px;
margin-left: 330px;
width: 200px;
position: fixed;
z-index: 1000;
left: 50%;
background-color: dark-light-diff($tertiary, $secondary, 90%, -40%);
border: 1px solid $tertiary;
padding: 5px;
margin-bottom: 5px;
button {
width: 180px;
margin: 4px auto;
display: inline-block;
text-align: left;
}
&.hidden {
display: none;
}
.controls {
margin-top: 10px;
}
p {
font-size: 0.929em;
margin: 0 0 10px 0;
}
p.cancel {
margin: 10px 0 0 0;
}
h3 {
font-size: 1.786em;
color: $primary;
margin-bottom: 5px;
i {
margin-right: 7px;
}
}
.btn {
border: none;
color: $secondary;
font-weight: normal;
margin-bottom: 10px;
background: scale-color($tertiary, $lightness: 50%);
&[href] {
color: $secondary;
}
&:hover
{
color: $secondary;
background: scale-color($tertiary, $lightness: 20%);
}
&:active {
@include linear-gradient(darken($tertiary, 18%), darken($tertiary, 12%));
box-shadow: inset 0 1px 3px rgba(0,0,0, 0.2);
color: $secondary;
}
&[disabled] {
text-shadow: 0 1px 0 rgba($primary, 0.2);
@include linear-gradient($tertiary, darken($tertiary, 20%));
@include box-shadow((inset 0 1px 0 rgba(0,0,0, 0.33), inset 0 -1px 2px rgba($primary, 0.2)));
}
}
}
.topic-post {
&.selected {
article.boxed {
.select-posts {
button.select-post {
background-color: scale-color($tertiary, $lightness: 50%);
color: $secondary;
}
}
.topic-body {
.contents:after {
display: none;
}
}
}
}
article.boxed {
position: relative;
.select-posts {
position: absolute;
left: 100%;
z-index: 490;
top: 8px;
width: 800px;
height: 100px;
background-color: $secondary;
button {
margin-left: 8px;
background-color: scale-color($primary, $lightness: 70%);
border: 1px solid scale-color($primary, $lightness: 60%);
color: $primary;
}
}
}
}
a.attachment:before {
display: inline-block;
margin-right: 4px;
font-family: "FontAwesome";
content: "\f019";
}
.private_message .gutter, .deleted-topic .gutter,.read_restricted .gutter {
position: relative;
}
.deleted-topic .gutter:before {
display: block;
position: absolute;
left: 767px;
color: rgba(dark-light-diff($primary, $secondary, 90%, -65%) , .8);
font: 6.429em/1 FontAwesome;
content: "\f014";
z-index: -5;
}
.topic-meta-data {
&:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.post-info {
display: inline-block;
float: right;
font-size: 0.929em;
margin-top: 1px;
a {color: scale-color($primary, $lightness: 50%);}
}
}
span.highlighted {
background-color: dark-light-diff($tertiary, $secondary, 90%, -40%);
}
.username.new-user a {
color: scale-color($primary, $lightness: 70%);
}
.read-state {
color: scale-color($tertiary, $lightness: 50%);
position: absolute;
right: -2px;
top: 13px;
font-size: 0.571em;
}
.read-state.read {
opacity: 0;
transition: opacity ease-out 1s;
}
/* Tablet (portrait) ----------- */
@media all
and (max-width : 870px) {
.gutter {
display: none;
}
.topic-avatar {
width: 45px;
}
.post-cloak .reply-to-tab {
right: 15%;
}
.topic-body {
box-sizing: border-box;
width: calc(100% - 47px); //100% - [width of .topic-avatar + 2px]
padding-left: 2%;
}
.embedded-posts {
// top means "in reply to expansion" above a post
&.top {
width: calc(100% - 56px); // [100% - margin-left]
}
}
}
/* below standard tablet portrait ----------- */
@media all
and (max-width : 767px) {
.reply-to-tab {
span {display: none;}
}
.names {
span {display: block;}
}
}