discourse/app/assets/stylesheets/common/d-editor.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

348 lines
5.9 KiB
SCSS

.d-editor-container {
display: flex;
flex-grow: 1;
max-width: 100%;
}
.d-editor {
display: flex;
flex-grow: 1;
min-height: 0;
}
.d-editor-textarea-wrapper,
.d-editor-preview-wrapper {
flex: 1;
}
.d-editor-textarea-wrapper {
display: flex;
flex-direction: column;
background-color: var(--secondary);
position: relative;
border: 1px solid var(--primary-medium);
textarea {
background: transparent;
}
&.in-focus {
border-color: $tertiary;
}
&.disabled {
cursor: not-allowed;
.d-editor-button-bar {
visibility: hidden;
}
}
}
.d-editor-preview-wrapper {
max-width: 49%;
margin-left: 1%;
display: flex;
flex-direction: column;
}
.d-editor-button-bar {
display: flex;
align-items: center;
min-height: 30px;
border-bottom: 1px solid var(--primary-low);
.btn,
.btn-default {
background-color: transparent;
display: inline-block;
color: var(--primary-medium);
.d-icon {
color: currentColor;
}
&:hover {
color: var(--primary-low);
}
svg {
-webkit-transform: translate3d(
0,
0,
0
); // Hack: Reduces composer icon jitter while scrolling in Safari on iOS12
}
}
.d-editor-spacer {
height: 1em;
display: inline-block;
border-left: 1px solid var(--primary-low-mid);
}
.btn:not(.no-text) {
font-size: $font-up-1;
}
.btn.bold {
font-weight: bolder;
}
.btn.italic {
font-style: italic;
}
}
.d-editor-preview-wrapper {
overflow: auto;
cursor: default;
-webkit-overflow-scrolling: touch;
}
.d-editor-input,
.d-editor-preview {
box-sizing: border-box;
flex: 1 1 100%;
width: 100%;
margin: 0;
min-height: auto;
word-wrap: break-word;
-webkit-appearance: none;
border-radius: 0;
&:focus {
box-shadow: none;
border: 0;
outline: 0;
}
}
.d-editor-input {
border: 0;
padding: 10px;
height: 100%;
overflow-x: hidden;
resize: none;
}
.d-editor-preview {
height: auto;
}
.d-editor-plugin {
display: flex;
flex: 1 1;
overflow: auto;
}
.composing-whisper .d-editor-preview {
font-style: italic;
color: var(--primary-medium) !important;
}
.d-editor-preview > *:first-child {
margin-top: 0;
}
.hide-preview .d-editor-preview-wrapper {
display: none;
flex: 0;
}
.edit-category-tab-topic-template {
.emoji.btn {
display: none;
}
}
.user-preferences .bio-composer,
.group-form-bio,
.edit-category-tab-topic-template {
textarea {
width: 100%;
height: 100%;
min-height: 10em;
}
.local-dates.btn {
display: none;
}
.d-editor-container {
display: block;
}
.d-editor-textarea-wrapper {
border: 1px solid var(--primary-low);
}
.d-editor-preview-wrapper {
max-width: 100%;
margin: 10px 0 0 0;
}
.d-editor-preview {
background-color: var(--primary-very-low);
padding: 5px;
&:empty {
padding: 0;
}
}
}
.user-preferences .bio-composer,
.group-form-bio {
padding: 10px;
border: 1px solid var(--primary-low);
}
.d-editor-preview img {
padding-bottom: 1.4em;
&.emoji,
&.avatar,
&.site-icon {
padding-bottom: 0;
}
&.resizable {
object-fit: cover;
object-position: top;
}
}
.d-editor-preview .image-wrapper {
--resizer-height: 1.75em;
position: relative;
display: inline-block;
.desktop-view & {
// need the extra space on mobile because controls are always visible
padding-bottom: var(--resizer-height);
margin-bottom: calc(var(--resizer-height) * -1);
}
img {
padding-bottom: 0;
}
&:hover {
.button-wrapper {
opacity: 1;
}
}
.button-wrapper {
position: absolute;
height: var(--resizer-height);
bottom: 0;
left: 0;
opacity: 0;
display: flex;
align-items: center;
transition: all 0.25s;
z-index: 1; // needs to be higher than image
width: 100%;
background: var(--secondary); // for when images are wider than controls
.scale-btn {
background: var(--secondary); // for when controls are wider than image
color: var(--tertiary);
padding: 0 1em;
&:first-child,
&:last-child {
padding: 0;
}
&.active {
font-weight: bold;
color: var(--primary);
}
&:not(.active):hover {
text-decoration: underline;
cursor: pointer;
}
}
}
}
.mobile-view .d-editor-preview .image-wrapper .button-wrapper {
opacity: 1;
}
// d-editor bar button sizing for all editors - this is kept seprate to keep
// everything in one place
.d-editor-button-bar {
margin: 0.25em;
// shared styles for all font sizes
.btn,
.btn-default {
padding: 0 0.5em;
}
.d-editor-spacer {
margin: 0 0.25em;
}
// small text size
.text-size-smaller & {
@include breakpoint(mobile-large) {
.btn,
.btn-default {
padding: 0 0.4em;
}
}
@include breakpoint(mobile-medium) {
.btn,
.btn-default {
padding: 0 0.3em;
}
.d-editor-spacer {
margin: 0 0.25em;
}
}
}
// normal text size
.text-size-normal & {
@include breakpoint(mobile-large) {
.btn,
.btn-default {
padding: 0 0.35em;
}
}
@include breakpoint(mobile-medium) {
.btn,
.btn-default {
padding: 0 0.25em;
}
}
}
// larger text size
.text-size-larger & {
@include breakpoint(mobile-large) {
.btn,
.btn-default {
padding: 0 0.3em;
}
}
@include breakpoint(mobile-medium) {
.btn,
.btn-default {
padding: 0 0.2em;
}
}
}
// largest text size
.text-size-largest & {
.btn,
.btn-default {
font-size: $font-down-1;
}
@include breakpoint(mobile-large) {
.btn,
.btn-default {
padding: 0 0.3em;
}
}
@include breakpoint(mobile-medium) {
.btn,
.btn-default {
padding: 0 0.2em;
}
}
}
}