mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 00:25:53 +08:00
c937afc75e
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.
348 lines
5.9 KiB
SCSS
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;
|
|
}
|
|
}
|
|
}
|
|
}
|