BookStackApp_BookStack/resources/sass/_content.scss
Dan Brown e8f44186a8
Comments: Split out page comment reference logic to own component
Started support for editor view.
Moved comment elements to be added relative to content area instad of
specific target reference element.
Added relocating on screen size change.
2025-04-27 16:51:24 +01:00

201 lines
No EOL
6 KiB
SCSS

@use "mixins";
@use "vars";
/**
* Page Content
* Styles specific to blocks used within page content.
*/
.page-content {
width: 100%;
max-width: 840px;
margin: 0 auto;
overflow-wrap: break-word;
position: relative;
.align-left {
text-align: left;
}
img.align-left, table.align-left, iframe.align-left, video.align-left {
float: left !important;
margin: vars.$xs vars.$m vars.$m 0;
}
.align-right {
text-align: right !important;
}
img.align-right, table.align-right, iframe.align-right, video.align-right {
float: right !important;
margin: vars.$xs 0 vars.$xs vars.$s;
}
.align-center {
text-align: center;
}
img.align-center, video.align-center, iframe.align-center {
display: block;
}
img.align-center, table.align-center, iframe.align-center, video.align-center {
margin-left: auto;
margin-right: auto;
}
.align-justify {
text-align: justify;
}
h1, h2, h3, h4, h5, h6, pre {
clear: left;
}
hr {
clear: both;
margin: vars.$m 0;
}
table {
hyphens: auto;
table-layout: fixed;
max-width: 100%;
height: auto !important;
}
// diffs
ins,
del {
text-decoration: none;
}
ins {
background: #dbffdb;
}
del {
background: #FFECEC;
}
details {
border: 1px solid;
@include mixins.lightDark(border-color, #DDD, #555);
margin-bottom: 1em;
padding: vars.$s;
}
details > summary {
margin-top: -(vars.$s);
margin-left: -(vars.$s);
margin-right: -(vars.$s);
margin-bottom: -(vars.$s);
font-weight: bold;
@include mixins.lightDark(background-color, #EEE, #333);
padding: vars.$xs vars.$s;
}
details[open] > summary {
margin-bottom: vars.$s;
border-bottom: 1px solid;
@include mixins.lightDark(border-color, #DDD, #555);
}
details > summary + * {
margin-top: .2em;
}
details:after {
content: '';
display: block;
clear: both;
}
li > input[type="checkbox"] {
vertical-align: top;
margin-top: 0.3em;
}
p:empty {
min-height: 1.6em;
}
&.page-revision {
pre code {
white-space: pre-wrap;
}
}
.cm-editor {
margin-bottom: 1.375em;
}
video, iframe {
max-width: 100%;
}
a {
text-decoration: underline;
}
}
// This is seperated out so we can target it out-of-editor by default
// and use advanced (:not) syntax, not supported by things like PDF gen,
// to target in-editor scenarios to handle edge-case of TinyMCE using an
// image for data placeholders where we'd want height attributes to take effect.
body .page-content img,
.page-content img:not([data-mce-object]) {
max-width: 100%;
height:auto;
}
/**
* Callouts
* Some styles duplicated for supporting logical units (eg. inline-end) while
* providing fallbacks to non-logical rules, so RTL is natively supported where possible.
*/
.callout {
border-left: 3px solid #BBB;
border-inline-start: 3px solid #BBB;
border-inline-end: none;
background-color: #EEE;
padding: vars.$s;
padding-left: vars.$xl;
padding-inline-start: vars.$xl;
padding-inline-end: vars.$s;
display: block;
position: relative;
overflow: auto;
&:before {
background-image: url('data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiMwMTUzODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4gICAgPHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6Ii8+PC9zdmc+');
background-repeat: no-repeat;
content: '';
width: 1.2em;
height: 1.2em;
left: vars.$xs + 2px;
inset-inline-start: vars.$xs + 2px;
inset-inline-end: unset;
top: 50%;
margin-top: -9px;
display: inline-block;
position: absolute;
line-height: 1;
opacity: 0.8;
}
&.success {
@include mixins.lightDark(border-color, vars.$positive, vars.$positive-dark);
@include mixins.lightDark(background-color, #eafdeb, #122913);
@include mixins.lightDark(color, #063409, vars.$positive-dark);
}
&.success:before {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiMzNzZjMzkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4gICAgPHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ii8+PC9zdmc+");
}
&.danger {
@include mixins.lightDark(border-color, vars.$negative, vars.$negative-dark);
@include mixins.lightDark(background-color, #fcdbdb, #250505);
@include mixins.lightDark(color, #4d0706, vars.$negative-dark);
}
&.danger:before {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiNiOTE4MTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTIgMTcuM2MtLjcyIDAtMS4zLS41OC0xLjMtMS4zIDAtLjcyLjU4LTEuMyAxLjMtMS4zLjcyIDAgMS4zLjU4IDEuMyAxLjMgMCAuNzItLjU4IDEuMy0xLjMgMS4zem0xLTQuM2gtMlY3aDJ2NnoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==");
}
&.info {
@include mixins.lightDark(border-color, vars.$info, vars.$info-dark);
@include mixins.lightDark(background-color, #d3efff, #001825);
@include mixins.lightDark(color, #01466c, vars.$info-dark);
}
&.warning {
@include mixins.lightDark(border-color, vars.$warning, vars.$warning-dark);
@include mixins.lightDark(background-color, #fee3d3, #30170a);
@include mixins.lightDark(color, #6a2802, vars.$warning-dark);
}
&.warning:before {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiNiNjUzMWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4gICAgPHBhdGggZD0iTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHoiLz48L3N2Zz4=");
}
a {
color: inherit;
text-decoration: underline;
}
}