discourse/app/assets/stylesheets/common/base/user.scss
Penar Musaraj c937afc75e
FEATURE: automatic dark mode (#10341)
A first step to adding automatic dark mode color scheme switching. Adds a new SCSS file at `color_definitions.scss` that serves to output all SCSS color variables as CSS custom properties. And replaces all SCSS color variables with the new CSS custom properties throughout the stylesheets. 

This is an alpha feature at this point, can only be enabled via console using the `default_dark_mode_color_scheme_id` site setting.
2020-08-03 22:57:10 -04:00

745 lines
12 KiB
SCSS

// Common styles for "/user" section
// These styles are also used for "/groups" — test those pages if making significant changes
.user-content-wrapper {
// Grid layout
width: 100%;
display: grid;
grid-template-columns: 1fr 5fr;
grid-template-rows: auto auto 1fr auto;
grid-row-gap: 20px;
.user-primary-navigation {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 2;
}
.user-secondary-navigation {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 2;
grid-row-end: 3;
}
.solo-preference,
.user-content,
.spinner {
grid-row-start: 2;
grid-row-end: 4;
grid-column-start: 1;
grid-column-end: 3;
}
.user-content {
min-width: 100%;
}
.user-additional-controls + .user-content,
.user-secondary-navigation + .user-content {
grid-column-start: 2;
grid-column-end: 3;
}
.user-additional-controls {
grid-row-start: 3;
align-self: start;
justify-self: start;
}
}
.user-content {
.list-actions {
display: flex;
margin-bottom: 12px;
.btn {
margin-right: 12px;
}
}
.paginated-topics-list {
position: relative;
}
.show-mores {
width: 100%;
}
.d-icon-heart {
color: var(--love);
}
.user-notifications-filter-select-kit {
display: block;
width: 100%;
border-bottom: 0.5px solid var(--primary-low);
}
}
.user-main {
.about {
width: 100%;
margin-bottom: 15px;
&.has-background {
.user-profile-image {
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
}
.staff-counters {
margin-bottom: 0;
}
}
.secondary {
display: inline-block;
width: 100%;
border-top: 1px solid var(--primary-low);
.btn {
padding: 4px 12px;
}
dl {
margin: 0;
padding: 5px 10px;
div {
display: inline-flex;
align-items: baseline;
margin-right: 15px;
margin: 4px 0;
}
}
dt,
dd {
display: inline-flex;
align-items: center;
}
dd {
padding: 0;
margin: 0 15px 0 0;
color: var(--primary);
&.groups {
span:not(:last-of-type) {
margin-right: 0.25em;
}
span:after {
content: ",";
}
span:last-of-type:after {
content: "";
}
}
}
dt {
color: var(--secondary-medium);
margin-right: 5px;
display: inline-block;
}
}
.details {
background: rgba(var(--secondary-rgb), 0.8);
border-bottom: 1px solid var(--primary-low);
h1 {
font-size: $font-up-5;
font-weight: normal;
.d-icon {
font-size: 0.8em;
}
}
h2 {
font-weight: normal;
max-width: 100%;
@include ellipsis;
}
h3 {
font-weight: normal;
margin-bottom: 0.5em;
.d-icon:not(:first-of-type) {
margin-left: 10px;
}
}
.groups {
margin-left: 10px;
display: inline;
}
img.avatar {
float: left;
}
.suspended {
color: var(--danger);
}
.primary {
width: 100%;
position: relative;
h1 {
font-weight: bold;
}
.bio {
max-height: 300px;
overflow: auto;
a[href] {
text-decoration: underline;
}
img {
max-width: 100%;
}
}
}
.user-profile-avatar {
position: relative;
float: left;
.avatar-flair {
bottom: 8px;
right: 16px;
}
}
}
.controls {
ul {
list-style-type: none;
}
.btn {
margin-bottom: 10px;
line-height: $line-height-medium;
}
}
&.collapsed-info {
.details {
margin-top: 0;
background: rgba(var(--secondary-rgb), 0.8);
.bio {
display: none;
}
.primary {
width: 100%;
.avatar {
margin-right: 10px;
width: 45px;
height: 45px;
}
h1 {
font-size: $font-up-3;
}
h2 {
font-size: $font-up-1;
}
h3,
h3.location-and-website {
display: none;
}
}
}
.user-profile-avatar {
.avatar-flair {
bottom: 8px;
right: 2px;
.d-icon {
font-size: $font-0;
}
}
}
}
}
.staff-counters {
background: var(--primary);
color: var(--secondary);
display: flex;
padding: 10px;
margin-bottom: 16px;
> div,
> div a {
display: flex;
align-items: baseline;
flex: 0 1 auto;
margin: 0 10px 0 0;
color: var(--secondary);
span {
padding: 0 7px 1px;
border-radius: 10px;
margin-right: 5px;
}
}
.active {
font-weight: bold;
}
}
.helpful-flags {
background-color: var(--success);
}
.flagged-posts {
background-color: #e49735;
}
.warnings-received {
background-color: var(--danger-medium);
}
.deleted-posts {
background-color: var(--danger-medium);
}
.suspensions {
background-color: var(--danger);
}
.user-field {
margin-bottom: 10px;
.controls {
label {
width: auto;
text-align: left;
font-weight: normal;
}
.instructions {
color: var(--primary-medium);
margin-top: 5px;
margin-bottom: 10px;
font-size: $font-down-1;
}
}
}
.user-content {
.admin-controls nav {
margin: 0;
.nav-pills {
overflow-x: auto;
}
}
}
}
.user-field {
.required {
vertical-align: top;
color: var(--danger);
font-weight: bold;
margin-left: 0.25em;
}
}
.public-user-fields {
margin-top: 8px;
margin-bottom: 8px;
.user-field-name {
font-weight: bold;
}
.collapsed-info & {
display: none;
}
}
.avatar-selector {
.avatar-choice {
display: grid;
grid-template-columns: 2em 1fr auto;
grid-template-rows: auto auto;
align-items: center;
&:not(:last-of-type) {
margin-bottom: 0.75em;
}
span {
word-break: break-word; // Prevents long emails from breaking the modal width
}
input[type="radio"] {
margin-top: 0;
}
button {
margin-left: auto;
}
}
$label-max-width: 300px;
label.radio {
display: flex;
align-items: center;
max-width: $label-max-width;
margin: 0 0.5em 0 0;
padding: 0;
.avatar {
flex: 0 0 auto;
margin: 0 0.75em 0 0;
}
}
.error {
color: var(--danger);
margin: 0;
max-width: calc(#{$label-max-width} - 20px);
grid-column-start: 2;
grid-column-end: 3;
}
}
.top-section {
@include clearfix();
ul {
list-style: none;
margin: 0;
}
}
.top-section,
.top-sub-section {
margin-bottom: 20px;
&.badges-section {
display: flex;
flex-wrap: wrap;
}
}
.stats-title {
text-transform: uppercase;
margin-bottom: 10px;
width: 100%;
}
.stats-section {
ul {
margin: 10px 0;
}
li {
display: inline-block;
padding: 10px 14px 10px 0;
margin: 0 10px 10px 0;
&.linked-stat {
// This makes the entire "box" (the li) clickable instead of a narrow area.
padding: 0;
a {
padding: 10px 14px 10px 0;
width: 100%;
height: 100%;
display: block;
color: var(--primary);
}
}
}
.value {
font-weight: bold;
font-size: $font-up-2;
}
.label {
color: var(--primary-medium);
}
}
.top-sub-section {
width: 50%;
ul {
max-width: 95%;
}
li {
border-left: var(--primary-low) solid 2px;
padding: 5px 8px;
margin: 10px 0;
}
.topic-info {
color: var(--primary-medium);
}
@media all and (max-width: 600px) {
float: none;
width: 100%;
}
}
.replies-section,
.topics-section,
.links-section {
li {
word-wrap: break-word;
}
}
.links-section {
.domain {
font-size: $font-down-1;
color: var(--primary-medium);
}
}
.top-categories-section {
table {
max-width: 95%;
tr {
border: none;
}
td,
th {
padding: 0.5em;
&.topic-count,
&.reply-count {
text-align: center;
}
}
}
}
.summary-user-list {
li {
height: 45px;
}
}
.groups {
.group-link {
color: var(--tertiary);
}
}
.user-preferences {
textarea {
height: 100px;
}
.tracking-controls {
label {
align-items: center;
display: inline-block;
.d-icon {
margin-right: 3px;
}
}
.select-kit.multi-select {
@include breakpoint(mobile-extra-large) {
width: 100%;
}
}
.show-tracking {
float: right;
}
}
.static {
color: var(--primary);
display: inline-block;
}
.instructions {
color: var(--primary-medium);
margin-bottom: 10px;
font-size: $font-down-1;
line-height: $line-height-large;
a[href] {
color: var(--tertiary);
}
}
.avatar {
margin-left: 3px;
}
.warning {
background-color: var(--danger-medium);
padding: 5px 8px;
color: var(--secondary);
width: 520px;
}
.warning-wrap {
height: 30px;
margin-bottom: 10px;
}
.tracking-controls {
margin-top: 24px;
}
&.second-factor-backup-preferences {
padding-left: 0;
.second-factor-token-input {
margin-right: 10px;
}
.form-horizontal {
.instructions {
margin-left: 0;
}
.actions {
margin-top: 5px;
}
}
.backup-codes {
margin: 2em 0;
.wrapper {
display: inline-block;
position: relative;
border-radius: 3px;
border: 1px solid var(--primary-low);
width: 100%;
}
.backup-codes-area {
resize: none;
padding: 0;
height: auto;
text-align: center;
width: 100%;
background: white;
border: 0;
cursor: auto;
outline: none;
font-family: monospace;
&:focus {
box-shadow: none;
border-color: var(--primary-low);
}
}
.backup-codes-copy-btn,
.backup-codes-download-btn {
right: 5px;
position: absolute;
}
.backup-codes-copy-btn {
top: 5px;
}
.backup-codes-download-btn {
top: 40px;
}
}
}
.pref-associated-accounts table {
td {
padding: 8px;
}
}
.featured-topic-link {
padding: 5px 0;
font-weight: bold;
}
.save-theme-alert {
font-size: $font-down-1;
}
}
.paginated-topics-list {
.user-content {
width: 100%;
margin-top: 0;
}
}
.large-notification {
display: flex;
align-items: center;
a {
display: flex;
align-items: center;
.d-icon {
margin-right: 0.5em;
}
span:first-child {
color: var(--primary);
}
// Can remove this once other languages have removed html from i18n values
div {
.fa {
display: none;
}
p {
margin: 0;
}
}
}
}
.qr-code-container {
display: flex;
.qr-code {
padding: 5px 5px 0 5px;
background-color: white;
}
}
.second-factor {
&.instructions {
color: var(--primary-medium);
margin-top: 5px;
margin-bottom: 10px;
font-size: $font-down-1;
}
.second-factor-item {
margin-top: 0.75em;
}
.btn.edit {
min-height: auto;
}
}
.primary-textual .staged,
.user-card .staged {
font-style: italic;
}
.selectable-avatars {
max-height: 350px;
margin-bottom: 1em;
text-align: justify;
.selectable-avatar {
margin: 5px;
display: inline-block;
.avatar {
cursor: pointer;
width: 60px;
height: 60px;
&:hover {
box-shadow: 0 0 10px var(--primary);
}
}
}
}
.timezone-input {
margin-bottom: 0.5em;
}