BookStack/resources/sass/_text.scss

426 lines
6.7 KiB
SCSS

/**
* Fonts
*/
body, button, input, select, label, textarea {
font-family: var(--font-body);
}
pre, #markdown-editor-input, .text-mono, .code-base {
font-family: var(--font-code);
}
/*
* Header Styles
*/
h1 {
font-size: 3.425em;
line-height: 1.22222222em;
margin-top: 0.48888889em;
margin-bottom: 0.48888889em;
}
h2 {
font-size: 2.8275em;
line-height: 1.294117647em;
margin-top: 0.8627451em;
margin-bottom: 0.43137255em;
}
h3 {
font-size: 2.333em;
line-height: 1.221428572em;
margin-top: 0.78571429em;
margin-bottom: 0.43137255em;
}
h4 {
font-size: 1.666em;
line-height: 1.375em;
margin-top: 0.78571429em;
margin-bottom: 0.43137255em;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 400;
position: relative;
display: block;
font-family: var(--font-heading, var(--font-body));
@include lightDark(color, #222, #BBB);
}
h5 {
font-size: 1.4em;
}
h5, h6 {
line-height: 1.2em;
margin-top: 0.78571429em;
margin-bottom: 0.66em;
}
@include smaller-than($s) {
h1 {
font-size: 2.8275em;
}
h2 {
font-size: 2.333em;
}
h3 {
font-size: 1.666em;
}
h4 {
font-size: 1.333em;
}
h5 {
font-size: 1.161616em;
}
}
.list-heading {
font-size: 2rem;
}
h2.list-heading {
font-size: 1.333rem;
}
/*
* Link styling
*/
a {
color: var(--color-link);
fill: currentColor;
cursor: pointer;
text-decoration: none;
transition: filter ease-in-out 80ms;
line-height: 1.6;
&:hover {
text-decoration: underline;
}
&.icon {
display: inline-block;
}
svg {
position: relative;
display: inline-block;
}
&:focus img:only-child {
outline: 2px dashed var(--color-link);
outline-offset: 2px;
}
}
a.no-link-style {
color: inherit;
&:hover {
text-decoration: none;
}
}
.blended-links a {
color: inherit;
svg {
fill: currentColor;
}
}
/*
* Other HTML Text Elements
*/
p, ul, ol, pre, table, blockquote {
margin-top: 0.3em;
margin-bottom: 1.375em;
}
hr {
border: 0;
height: 1px;
@include lightDark(background, #eaeaea, #555);
margin-bottom: $-l;
&.faded {
background-image: linear-gradient(to right, #FFF, #e3e0e0 20%, #e3e0e0 80%, #FFF);
}
&.darker {
@include lightDark(background, #DDD, #666);
}
&.margin-top, &.even {
margin-top: $-l;
}
}
strong, b, .bold, .strong {
font-weight: bold;
> strong, > b, > .bold, > .strong {
font-weight: bolder;
}
}
em, i, .italic {
font-style: italic;
}
small, p.small, span.small, .text-small {
font-size: 0.75rem;
}
sup, .superscript {
vertical-align: super;
font-size: 0.8em;
}
sub, .subscript {
vertical-align: sub;
font-size: 0.8em;
}
pre {
font-size: 12px;
border: 1px solid #DDD;
@include lightDark(background-color, #FFF, #2B2B2B);
@include lightDark(border-color, #DDD, #111);
border-radius: 4px;
padding-inline-start: 26px;
position: relative;
padding-top: 3px;
padding-bottom: 3px;
&:before {
content: '';
display: block;
position: absolute;
top: 0;
width: 22.4px;
inset-inline-start: 0;
height: 100%;
@include lightDark(background-color, #f5f5f5, #313335);
@include lightDark(border-inline-end, 1px solid #DDD, none);
}
}
@media print {
pre {
padding-left: 12px;
}
pre:before {
display: none;
}
}
blockquote {
display: block;
position: relative;
border-left: 4px solid transparent;
border-left-color: var(--color-primary);
@include lightDark(background-color, #f8f8f8, #333);
padding: $-s $-m $-s $-xl;
overflow: auto;
&:before {
content: "\201C";
font-size: 2em;
font-weight: bold;
position: absolute;
top: $-s;
left: $-s;
color: #777;
}
}
.text-mono {
font-family: var(--font-code);
}
.text-uppercase {
text-transform: uppercase;
}
.text-capitals {
text-transform: capitalize;
}
.code-base {
font-size: 0.84em;
border: 1px solid #DDD;
border-radius: 3px;
@include lightDark(background-color, #f8f8f8, #2b2b2b);
@include lightDark(border-color, #DDD, #444);
}
code {
@extend .code-base;
display: inline;
padding: 1px 3px;
white-space:pre-wrap;
line-height: 1.2em;
}
span.code {
@extend .code-base;
padding: 1px $-xs;
}
pre code {
background-color: transparent;
border: 0;
font-size: 1em;
display: block;
line-height: 1.6;
}
span.highlight {
font-weight: bold;
padding: 2px 4px;
}
/*
* Lists
*/
ul, ol {
padding-left: $-m * 2.0;
padding-right: $-m * 2.0;
display: flow-root;
p {
margin: 0;
}
}
ul {
list-style: disc;
ul {
list-style: circle;
}
label {
margin: 0;
}
}
ol {
list-style: decimal;
}
li > ol, li > ul {
margin-top: 0;
margin-bottom: 0;
margin-block-end: 0;
margin-block-start: 0;
padding-block-end: 0;
padding-block-start: 0;
padding-left: $-m * 1.2;
padding-right: $-m * 1.2;
}
/**
* Checkbox lists
* Some styles duplicated for supporting logical units (eg. inline-end) while
* providing fallbacks to non-logical rules, so RTL is natively supported where possible.
*/
li.checkbox-item, li.task-list-item {
display: list-item;
list-style: none;
margin-left: -($-m * 1.2);
margin-inline-start: -($-m * 1.2);
margin-inline-end: 0;
input[type="checkbox"] {
margin-right: $-xs;
margin-inline-end: $-xs;
margin-inline-start: 0;
}
li.checkbox-item, li.task-list-item {
margin-left: $-xs;
margin-inline-start: $-xs;
margin-inline-end: 0;
}
}
/*
* Generic text styling classes
*/
.underlined {
text-decoration: underline;
}
.text-center {
text-align: center;
}
.text-left {
text-align: start;
}
.text-right {
text-align: end;
}
@each $sizeLetter, $size in $screen-sizes {
@include larger-than($size) {
.text-#{$sizeLetter}-center {
text-align: center;
}
.text-#{$sizeLetter}-left {
text-align: start;
}
.text-#{$sizeLetter}-right {
text-align: end;
}
}
}
.text-bigger {
font-size: 1.1em;
}
.text-large {
font-size: 1.6666em;
}
.no-color {
color: inherit;
}
.break-text {
white-space: normal;
word-wrap: break-word;
overflow-wrap: break-word;
}
.text-limit-lines-1 {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.text-limit-lines-2 {
// -webkit use here is actually standardised cross-browser:
// https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
/**
* Grouping
*/
.header-group {
margin: $-m 0;
h1, h2, h3, h4, h5, h6 {
margin: 0;
}
}
span.sep {
color: #BBB;
padding: 0 $-xs;
}
.list > * {
display: block;
}
/**
* Icons
*/
.svg-icon {
width: 1em;
height: 1em;
display: inline-block;
position: relative;
bottom: -0.105em;
margin-inline-end: $-xs;
pointer-events: none;
fill: currentColor;
}