BookStack/resources/sass/_editor.scss
Dan Brown c2ecbf071f
Lexical: Added tracked container, added fullscreen action
Changed how the editor is loaded in, so it now creates its own DOM, and
content is passed via creation function, to be better self-contained.
2024-07-01 10:44:23 +01:00

248 lines
4.4 KiB
SCSS

// Common variables
:root {
--editor-color-primary: #206ea7;
}
// Main UI elements
.editor-container {
background-color: #FFF;
position: relative;
&.fullscreen {
z-index: 500;
}
}
.editor-toolbar-main {
display: flex;
flex-wrap: wrap;
}
body.editor-is-fullscreen {
overflow: hidden;
.edit-area {
z-index: 20;
}
}
// Buttons
.editor-button {
border: 1px solid #DDD;
font-size: 12px;
padding: 4px 6px;
color: #444;
}
.editor-button:hover {
background-color: #EEE;
cursor: pointer;
color: #000;
}
.editor-button[disabled] {
pointer-events: none;
cursor: not-allowed;
background-color: #EEE;
opacity: .6;
}
.editor-button-active, .editor-button-active:hover {
background-color: #ceebff;
color: #000;
}
.editor-button-format-preview {
padding: 4px 6px;
display: block;
}
.editor-button-icon svg {
width: 24px;
height: 24px;
fill: #000;
}
// Containers
.editor-dropdown-menu-container {
position: relative;
}
.editor-dropdown-menu {
position: absolute;
background-color: #FFF;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.15);
z-index: 99;
min-width: 120px;
}
.editor-menu-list {
display: flex;
flex-direction: column;
}
.editor-menu-list > .editor-button {
border-bottom: 0;
text-align: start;
}
.editor-format-menu .editor-dropdown-menu {
min-width: 320px;
}
.editor-overflow-container {
display: flex;
}
.editor-context-toolbar {
position: fixed;
background-color: #FFF;
border: 1px solid #DDD;
padding: .2rem;
border-radius: 4px;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12);
&:before {
content: '';
z-index: -1;
display: block;
width: 8px;
height: 8px;
position: absolute;
background-color: #FFF;
border-top: 1px solid #DDD;
border-left: 1px solid #DDD;
transform: rotate(45deg);
left: 50%;
margin-left: -4px;
top: -5px;
}
}
// Modals
.editor-modal-wrapper {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
z-index: 999;
background-color: rgba(0, 0, 0, 0.5);
width: 100%;
height: 100%;
}
.editor-modal {
background-color: #FFF;
border: 1px solid #DDD;
padding: 1rem;
border-radius: 4px;
}
.editor-modal-header {
display: flex;
justify-content: space-between;
margin-bottom: 1rem;
}
.editor-modal-title {
font-weight: 700;
}
// Specific UI elements
.editor-color-select-row {
display: flex;
}
.editor-color-select-option {
width: 28px;
height: 28px;
cursor: pointer;
}
.editor-color-select-option:hover {
border-radius: 3px;
box-sizing: border-box;
z-index: 3;
box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.25);
}
.editor-table-creator-row {
display: flex;
}
.editor-table-creator-cell {
border: 1px solid #DDD;
width: 15px;
height: 15px;
cursor: pointer;
&.active {
background-color: var(--editor-color-primary);
}
}
.editor-table-creator-display {
text-align: center;
padding: 0.2em;
}
// In-editor elements
.editor-image-wrap {
position: relative;
display: inline-flex;
}
.editor-image-decorator {
position: absolute;
left: 0;
right: 0;
width: 100%;
height: 100%;
display: inline-block;
&.selected {
border: 1px dashed var(--editor-color-primary);
}
}
.editor-image-decorator-handle {
position: absolute;
display: block;
width: 10px;
height: 10px;
border: 2px solid var(--editor-color-primary);
background-color: #FFF;
user-select: none;
&.nw {
inset-inline-start: -5px;
inset-block-start: -5px;
cursor: nw-resize;
}
&.ne {
inset-inline-end: -5px;
inset-block-start: -5px;
cursor: ne-resize;
}
&.se {
inset-inline-end: -5px;
inset-block-end: -5px;
cursor: se-resize;
}
&.sw {
inset-inline-start: -5px;
inset-block-end: -5px;
cursor: sw-resize;
}
}
.editor-table-marker {
position: fixed;
background-color: var(--editor-color-primary);
z-index: 99;
user-select: none;
opacity: 0;
&:hover, &.active {
opacity: 0.4;
}
}
.editor-table-marker-column {
width: 4px;
cursor: col-resize;
}
.editor-table-marker-row {
height: 4px;
cursor: row-resize;
}
// Editor theme styles
.editor-theme-bold {
font-weight: bold;
}
.editor-theme-italic {
font-style: italic;
}
.editor-theme-strikethrough {
text-decoration-line: line-through;
}
.editor-theme-underline {
text-decoration-line: underline;
}
.editor-theme-underline-strikethrough {
text-decoration: underline line-through;
}