overleaf/services/web/public/stylesheets/app/editor.less

654 lines
12 KiB
Text
Raw Normal View History

2014-06-26 11:39:52 -04:00
@import "./editor/file-tree.less";
@import "./editor/history.less";
2014-06-26 11:39:52 -04:00
@import "./editor/toolbar.less";
@import "./editor/left-menu.less";
2014-06-28 08:25:06 -04:00
@import "./editor/pdf.less";
2014-07-01 09:12:28 -04:00
@import "./editor/share.less";
2014-07-02 10:56:09 -04:00
@import "./editor/chat.less";
2014-07-03 12:05:50 -04:00
@import "./editor/binary-file.less";
2014-07-10 12:27:19 -04:00
@import "./editor/search.less";
2014-07-15 12:56:09 -04:00
@import "./editor/publish-template.less";
2014-07-17 10:25:22 -04:00
@import "./editor/online-users.less";
2014-07-22 09:38:32 -04:00
@import "./editor/hotkeys.less";
2016-10-11 09:24:01 -04:00
@import "./editor/review-panel.less";
2018-04-06 11:01:59 -04:00
@import "./editor/rich-text.less";
2018-04-24 11:51:01 -04:00
@import "./editor/publish-modal.less";
2014-06-26 11:39:52 -04:00
@ui-layout-toggler-def-height: 50px;
2018-03-23 07:54:17 -04:00
@ui-resizer-size: 7px;
2017-02-23 10:47:48 -05:00
@keyframes blink {
0% {
opacity: 0.2;
}
20% {
opacity: 1;
}
100% {
opacity: 0.2;
}
}
.editor-menu-icon when (@is-overleaf = true) {
&.fa {
width: 1em;
2018-07-09 10:45:09 -04:00
background: @editor-header-logo-background;
&::before {
// Disable the font-awesome icon when in Overleaf by replacing it with a
// non-breakable space instead (otherwise the browser would render a
// zero-width element).
content: "\00a0";
}
}
}
2014-06-24 15:28:53 -04:00
.full-size {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
2014-06-24 11:33:36 -04:00
.global-alerts {
height: 0;
margin-top: 2px;
text-align: center;
2014-07-02 11:41:29 -04:00
.alert {
display: inline-block;
text-align: left;
min-width: 400px;
2017-12-21 08:38:40 -05:00
padding: @global-alerts-padding;
2014-07-02 11:41:29 -04:00
font-size: 14px;
margin-bottom: (@line-height-computed / 4);
position: relative;
z-index: 20;
2014-07-02 11:41:29 -04:00
}
2014-06-24 11:33:36 -04:00
}
#try-reconnect-now-button {
margin-left: 20px;
}
2014-06-24 11:33:36 -04:00
#synctex-more-info-button {
margin-left: 20px;
}
2014-06-24 11:33:36 -04:00
#ide-body {
2014-06-24 15:28:53 -04:00
.full-size;
top: @ide-body-top-offset;
&.ide-history-open {
top: @ide-body-top-offset + @editor-toolbar-height;
}
2014-06-24 11:33:36 -04:00
}
#editor, #editor-rich-text {
2014-06-24 15:28:53 -04:00
.full-size;
top: 32px;
}
#editor-rich-text {
2018-04-12 08:46:19 -04:00
top: @editor-toolbar-height;
}
.toolbar-editor {
height: @editor-toolbar-height;
background-color: @editor-toolbar-bg;
2018-08-27 07:39:53 -04:00
padding: 0 5px;
overflow: hidden;
position: relative;
z-index: 10; // Prevent track changes showing over toolbar
2014-06-26 12:25:25 -04:00
}
2014-06-24 10:31:44 -04:00
2014-07-10 08:41:54 -04:00
.loading-screen {
2017-02-23 10:47:48 -05:00
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background-color: #FFF;
}
2017-08-01 11:02:19 -04:00
.loading-screen-brand-container {
2017-02-23 10:47:48 -05:00
width: 15%;
min-width: 200px;
2014-07-10 08:41:54 -04:00
text-align: center;
}
2017-08-01 11:02:19 -04:00
.loading-screen-brand {
2017-02-23 10:47:48 -05:00
position: relative;
width: 100%;
2017-08-07 10:45:33 -04:00
padding-top: @editor-loading-logo-padding-top;
2017-02-23 10:47:48 -05:00
height: 0;
2017-08-07 10:45:33 -04:00
background: @editor-loading-logo-background-url no-repeat bottom / 100%;
2017-02-23 10:47:48 -05:00
&::after {
2017-02-23 10:47:48 -05:00
content: '';
position: absolute;
height: inherit;
right: 0;
bottom: 0;
left: 0;
2017-08-08 02:17:16 -04:00
background: @editor-loading-logo-foreground-url no-repeat bottom / 100%;
2017-02-23 10:47:48 -05:00
transition: height .5s;
}
2017-02-23 10:47:48 -05:00
}
.loading-screen-label {
margin: 0;
padding-top: 1em;
font-size: 2em;
color: @gray-dark;
}
.loading-screen-ellip {
animation: blink 1.4s both infinite;
&:nth-child(2) {
animation-delay: 0.2s;
}
&:nth-child(3) {
animation-delay: 0.4s;
}
}
.loading-screen-error {
margin: 0;
padding-top: 1em;
color: @state-danger-text;
}
2014-07-10 08:41:54 -04:00
2014-06-27 07:45:37 -04:00
.loading-panel {
2014-06-26 12:25:25 -04:00
.full-size;
padding-top: 10rem;
font-family: @font-family-serif;
text-align: center;
background-color: #fafafa;
2014-06-24 12:50:59 -04:00
}
2014-06-27 07:45:37 -04:00
.error-panel {
.full-size;
padding: @line-height-computed;
background-color: #fafafa;
.alert {
max-width: 400px;
margin: auto;
}
}
2014-07-03 11:18:49 -04:00
.project-name {
.name {
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
padding: 6px;
color: @project-name-color;
2014-07-03 11:18:49 -04:00
font-weight: 700;
white-space: nowrap;
}
input {
height: 30px;
margin-top: 4px;
text-align: center;
padding: 6px;
font-weight: 700;
max-width: 500px;
2014-07-03 11:18:49 -04:00
}
a.rename {
visibility: hidden;
2016-02-23 10:00:15 -05:00
display: inline-block;
color: @project-rename-link-color;
2016-02-23 10:00:15 -05:00
padding: 5px;
border-radius: @border-radius-small;
&:hover {
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
color: @project-rename-link-color-hover;
2016-02-23 10:00:15 -05:00
text-decoration: none;
}
2014-07-03 11:18:49 -04:00
}
&:hover {
a.rename {
visibility: visible;
}
}
}
/**************************************
Ace
***************************************/
2014-06-24 10:31:44 -04:00
// The internal components of the aceEditor directive
.ace-editor-wrapper {
2014-06-24 15:28:53 -04:00
.full-size;
2014-06-24 10:31:44 -04:00
.undo-conflict-warning {
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: 10;
}
.ace-editor-body {
width: 100%;
height: 100%;
}
2014-06-25 11:06:04 -04:00
.spelling-highlight {
position: absolute;
background-image: url(/img/spellcheck-underline.png);
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
background-image: url(/img/spellcheck-underline@2x.png);
2016-11-30 09:34:50 -05:00
background-size: 5px 4px;
}
2014-06-25 11:06:04 -04:00
background-repeat: repeat-x;
background-position: bottom left;
}
2014-06-25 13:17:17 -04:00
.remote-cursor {
2014-06-30 09:01:39 -04:00
position: absolute;
2014-06-26 06:19:05 -04:00
border-left: 2px solid transparent;
// Adds "nubbin" top right of cursor, which inherits the injected color
&::before {
content: '';
2014-06-25 13:17:17 -04:00
position: absolute;
2014-06-26 06:19:05 -04:00
left: -2px;
top: -5px;
height: 5px;
width: 5px;
border-top-width: 3px;
border-right-width: 3px;
border-bottom-width: 2px;
border-left-width: 2px;
border-style: solid;
border-color: inherit;
2014-06-25 13:17:17 -04:00
}
}
2014-06-26 06:19:05 -04:00
.annotation-label {
padding: (@line-height-computed / 4) (@line-height-computed / 2);
font-size: 0.8rem;
z-index: 100;
font-family: @font-family-sans-serif;
color: white;
font-weight: 700;
white-space: nowrap;
2014-06-26 06:19:05 -04:00
}
2014-06-27 07:45:37 -04:00
.annotation {
position: absolute;
z-index: 2;
}
2014-10-08 11:32:42 -04:00
.highlights-before-label, .highlights-after-label {
position: absolute;
right: @line-height-computed;
2014-10-08 11:32:42 -04:00
z-index: 1;
}
.highlights-before-label {
top: @line-height-computed / 2;
}
.highlights-after-label {
bottom: @line-height-computed / 2;
}
2014-06-24 10:31:44 -04:00
}
.strike-through-foreground::after {
content: '';
position: absolute;
width: 100%;
top: 50%;
margin-top: -1px;
height: 2px;
background: currentColor;
}
// Hack to solve an issue where scrollbars aren't visible in Safari.
// Safari seems to clip part of the scrollbar element. By giving the
// element a background, we're telling Safari that it *really* needs to
// paint the whole area. See https://github.com/ajaxorg/ace/issues/2872
.ace_scrollbar-inner {
background-color: #FFF;
opacity: 0.01;
.ace_dark & {
background-color: #000;
}
}
/**************************************
CodeMirror
***************************************/
.cm-editor-wrapper {
position: relative;
height: 100%;
}
.cm-editor-body {
height: 100%;
}
// CM (for some reason) has height set to 300px in it's stylesheet
.CodeMirror {
height: 100%;
}
2017-11-30 12:00:25 -05:00
.ui-layout-resizer when (@is-overleaf = false) {
2014-06-21 17:20:37 -04:00
width: 6px;
2017-11-30 12:00:25 -05:00
background-color: @editor-resizer-bg-color;
2017-11-13 07:03:28 -05:00
border-left: 1px solid @editor-border-color;
border-right: 1px solid @editor-border-color;
2014-06-21 17:20:37 -04:00
.ui-layout-toggler {
color: #999;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-size: 16px !important;
line-height: 50px;
2017-12-04 10:48:23 -05:00
background-color: @editor-toggler-bg-color;
2014-02-12 05:23:40 -05:00
&:hover {
2017-12-04 10:48:23 -05:00
background-color: @editor-toggler-hover-bg-color;
2014-02-12 05:23:40 -05:00
color: #333;
}
}
}
2017-11-30 12:00:25 -05:00
.ui-layout-resizer when (@is-overleaf = true) {
2018-03-23 07:54:17 -04:00
width: @ui-resizer-size !important;
background-color: @editor-resizer-bg-color;
&.ui-layout-resizer-closed {
2018-03-23 07:54:17 -04:00
&::before,
&::after {
content: none;
}
}
&::before,
&::after {
content: '\2847';
display: block;
position: absolute;
text-align: center;
2018-03-23 07:54:17 -04:00
left: -2px;
-webkit-font-smoothing: antialiased;
width: 100%;
font-size: 24px;
top: 25%;
color: @ol-blue-gray-2;
}
&::after {
top: 75%;
}
2017-11-30 12:00:25 -05:00
}
2014-06-21 17:20:37 -04:00
.ui-layout-resizer-west.ui-layout-resizer-open, .ui-layout-resizer-east.ui-layout-resizer-closed {
.ui-layout-toggler when (@is-overleaf = false) {
2014-06-21 17:20:37 -04:00
&:before {
content: "\f104"
2014-02-12 05:23:40 -05:00
}
}
}
2014-06-21 17:20:37 -04:00
.ui-layout-resizer-east.ui-layout-resizer-open, .ui-layout-resizer-west.ui-layout-resizer-closed {
.ui-layout-toggler when (@is-overleaf = false) {
2014-06-21 17:20:37 -04:00
&:before {
content: "\f105"
2014-02-12 05:23:40 -05:00
}
}
}
.ui-layout-toggler when (@is-overleaf = true) {
display: none !important;
2017-12-11 10:41:07 -05:00
}
2018-03-22 07:48:34 -04:00
.custom-toggler when (@is-overleaf = true) {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
width: @ui-resizer-size !important;
height: 50px;
margin-top: -25px;
top: 50%;
z-index: 3;
2018-03-22 07:48:34 -04:00
background-color: @editor-toggler-bg-color;
&:hover,
&:focus {
outline: none;
text-decoration: none;
}
2018-03-22 07:48:34 -04:00
// Increase hit area
&::before {
content: '';
display: block;
position: absolute;
top: 0;
right: -3px;
bottom: 0;
left: -3px;
}
&::after {
font-family: FontAwesome;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-size: 65%;
font-weight: bold;
color: #FFF;
user-select: none;
pointer-events: none;
}
2018-03-22 07:48:34 -04:00
&:hover {
background-color: @editor-toggler-hover-bg-color;
}
}
2018-03-23 07:54:17 -04:00
.custom-toggler-east::after {
content: '\f105';
2018-03-22 07:48:34 -04:00
}
2018-03-23 07:54:17 -04:00
.custom-toggler-west::after {
content: '\f104';
2018-03-22 07:48:34 -04:00
}
2018-03-23 07:54:17 -04:00
.custom-toggler-closed.custom-toggler-east::after {
content: '\f104';
}
.custom-toggler-closed.custom-toggler-west::after {
content: '\f105';
2018-03-22 07:48:34 -04:00
}
2014-06-21 17:20:37 -04:00
.ui-layout-resizer-dragging {
2017-12-01 06:22:12 -05:00
background-color: @editor-resizer-bg-color-dragging;
2014-06-24 15:28:53 -04:00
}
2014-06-25 11:06:04 -04:00
.context-menu {
position: fixed;
z-index: 100;
}
.editor-dark {
color: @gray-lighter;
background-color: @editor-dark-background-color;
.ui-layout-resizer {
background-color: darken(@editor-dark-background-color, 10%);
border: none;
}
.btn-default {
color: white;
background-color: @gray;
border-color: darken(@gray-dark, 10%);
&:hover {
background-color: darken(@gray, 5%);
border-color: darken(@gray-dark, 20%);
}
}
}
2015-12-08 03:50:11 -05:00
.modal-alert {
margin-top:10px;
margin-bottom:0px;
}
2016-02-10 05:39:04 -05:00
2016-11-02 12:59:57 -04:00
// vertically centre the "connection down" modal so it does not hide
// the reconnecting indicator
.modal.lock-editor-modal {
display: flex !important;
.modal-dialog {
margin: auto;
}
}
.sl_references_search_hint {
position: relative;
top: 100%;
}
.sl_references_search_hint {
position: relative;
left: -1px;
text-align: center;
padding: 2px;
background: rgb(202, 214, 250);
border: 1px solid lightgray;
box-shadow: 3px 3px 5px rgba(0,0,0,.2);
span {
color: black;
}
}
// -- References Search Modal --
.references-search-modal-backdrop {
// don't grey out the editor when the
// modal is active
background-color: transparent;
}
2016-02-10 05:39:04 -05:00
.references-search-modal {
// upgrade prompt
2016-02-17 09:49:37 -05:00
.references-search-upgrade-prompt {
2016-02-17 11:44:41 -05:00
padding: 24px;
padding-bottom: 48px;
.upgrade-prompt {
2016-02-17 09:49:37 -05:00
text-align: center;
2016-02-17 11:44:41 -05:00
width: 400px;
padding-top: 14px;
padding-bottom: 14px;
padding-left: 38px;
padding-right: 38px;
margin: auto;
background: white;
opacity: 0.95;
border-radius: 8px;
.message {
margin-top: 15px;
&.call-to-action {
font-weight: bold;
}
ul.list-unstyled {
text-align: left;
}
}
a.btn {
opacity: 1.0;
}
2016-02-17 09:49:37 -05:00
}
}
2016-02-10 05:39:04 -05:00
.search-form {
// position the spinner inside the input element
2016-02-15 11:11:59 -05:00
i.fa-spinner {
margin-top: -30px;
2016-02-10 05:39:04 -05:00
}
}
2016-02-12 11:24:35 -05:00
.alert-danger {
margin-top: 12px;
margin-bottom: 0px;
}
// search result items list
2016-02-10 05:39:04 -05:00
.search-results {
font-size: 12px;
2016-02-12 11:24:35 -05:00
.no-results-message {
font-size: 16px;
}
.search-result-hit {
2016-02-12 11:24:35 -05:00
&:hover {
cursor: pointer;
}
2016-02-10 08:24:07 -05:00
border-bottom: 1px solid #ddd;
padding: 8px;
2016-02-10 08:24:07 -05:00
&:last-child {
border-bottom: 1px solid transparent;
}
2016-02-11 10:03:19 -05:00
border-left: 4px solid transparent;
&.selected-search-result-hit {
2016-02-12 11:24:35 -05:00
background-color: @red;
color: white;
2016-02-15 11:11:59 -05:00
.hit-year.small {
color: white;
}
2016-03-01 11:29:19 -05:00
.hit-journal.small {
color: white;
}
2016-02-11 10:03:19 -05:00
}
.hit-title {
font-size: 1.3em;
font-style: italic;
}
2016-02-10 08:24:07 -05:00
}
2016-02-10 05:39:04 -05:00
}
2016-07-18 11:07:00 -04:00
}
.referencesImportModal {
2018-06-26 05:15:45 -04:00
.referencesImportPreviewScroller {
font-family: monospace;
font-size: 0.8em;
max-height: 360px;
overflow: scroll;
white-space: pre;
padding: 8px 12px;
margin-bottom: 15px;
border: 1px solid @gray-lighter;
background-color: @gray-lightest;
2016-07-18 11:07:00 -04:00
}
2016-10-04 06:57:42 -04:00
}
2016-10-27 05:29:38 -04:00
.teaser-title,
2016-10-04 06:57:42 -04:00
.dropbox-teaser-title {
margin-top: 0;
text-align: center;
}
2016-10-27 05:29:38 -04:00
.teaser-img,
2016-10-04 06:57:42 -04:00
.dropbox-teaser-img {
.img-responsive;
margin-bottom: 5px;
}
2016-11-03 12:14:13 -04:00
.teaser-video-container,
.dropbox-teaser-video-container {
margin-top: -@modal-inner-padding;
margin-left: -@modal-inner-padding;
margin-right: -@modal-inner-padding;
margin-bottom: 5px;
overflow: hidden;
}
2016-11-03 12:14:13 -04:00
.teaser-video,
.dropbox-teaser-video {
width: 100%;
height: auto;
2016-11-03 12:14:13 -04:00
border-bottom: 1px solid @modal-header-border-color;
}
.spell-check-menu {
> .dropdown-menu > li > a {
padding: 2px 15px;
}
}
.spell-check-menu-from-bottom {
> .dropdown-menu {
top: auto;
bottom: 100%;
}
}