waveterm/frontend/app/element/markdown.scss
2024-12-19 12:41:03 -08:00

234 lines
6.0 KiB
SCSS

// Copyright 2024, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0
@import url("../../../node_modules/highlight.js/scss/github-dark-dimmed.scss");
.markdown {
display: flex;
flex-direction: row;
overflow: hidden;
height: 100%;
width: 100%;
.content {
height: 100%;
width: 100%;
overflow: scroll;
line-height: 1.5;
color: var(--main-text-color);
font-family: var(--markdown-font-family);
font-size: var(--markdown-font-size);
overflow-wrap: break-word;
&.non-scrollable {
overflow: hidden;
}
*:last-child {
margin-bottom: 0 !important;
}
.heading:not(.heading ~ .heading) {
margin-top: 0 !important;
}
.heading {
color: var(--main-text-color);
margin-top: 1.143em;
margin-bottom: 0.571em;
font-weight: semibold;
padding-top: 0.429em;
&.is-1 {
border-bottom: 1px solid var(--border-color);
padding-bottom: 0.429em;
font-size: 2em;
}
&.is-2 {
border-bottom: 1px solid var(--border-color);
padding-bottom: 0.429em;
font-size: 1.5em;
}
&.is-3 {
font-size: 1.25em;
}
&.is-4 {
font-size: 1em;
}
&.is-5 {
font-size: 0.875em;
}
&.is-6 {
font-size: 0.85em;
}
}
.paragraph {
margin-top: 0;
margin-bottom: 10px;
}
img {
border-style: none;
max-width: 100%;
box-sizing: content-box;
&[align="right"] {
padding-left: 20px;
}
&[align="left"] {
padding-right: 20px;
}
}
strong {
color: var(--main-text-color);
}
a {
color: #32afff;
}
ul {
list-style-type: disc;
list-style-position: outside;
margin-left: 1.143em;
}
ol {
list-style-position: outside;
margin-left: 1.357em;
}
blockquote {
margin: 0.286em 0.714em;
border-radius: 4px;
background-color: var(--panel-bg-color);
padding: 0.143em 0.286em 0.143em 0.429em;
}
pre.codeblock {
background-color: var(--panel-bg-color);
margin: 0.286em 0.714em;
padding: 0.4em 0.7em;
border-radius: 4px;
position: relative;
code {
line-height: 1.5;
white-space: pre-wrap;
word-wrap: break-word;
overflow: auto;
overflow: hidden;
background-color: transparent;
}
.codeblock-actions {
visibility: hidden;
display: flex;
position: absolute;
top: 0;
right: 0;
border-radius: 4px;
backdrop-filter: blur(8px);
margin: 0.143em;
padding: 0.286em;
align-items: center;
justify-content: flex-end;
gap: 0.286em;
}
&:hover .codeblock-actions {
visibility: visible;
}
}
code {
color: var(--main-text-color);
font: var(--fixed-font);
font-size: var(--markdown-fixed-font-size);
border-radius: 4px;
}
pre.selected {
outline: 2px solid var(--accent-color);
}
.waveblock {
margin: 1.143em 0;
.wave-block-content {
display: flex;
align-items: center;
padding: 0.857em;
background-color: var(--highlight-bg-color);
border: 1px solid var(--border-color);
border-radius: 8px;
transition: background-color 0.2s ease;
}
.wave-block-icon {
display: flex;
align-items: center;
justify-content: center;
width: 2.857em;
height: 2.857em;
background-color: black;
border-radius: 8px;
margin-right: 0.857em;
}
.wave-block-icon i {
font-size: 1.125em;
color: var(--secondary-text-color);
}
.wave-block-info {
display: flex;
flex-direction: column;
}
.wave-block-filename {
font-size: 1em;
font-weight: 500;
color: var(--main-text-color);
}
.wave-block-size {
font-size: 0.857em;
color: var(--secondary-text-color);
}
}
}
.toc {
max-width: 40%;
height: 100%;
overflow: scroll;
border-left: 1px solid var(--border-color);
.toc-inner {
height: fit-content;
position: sticky;
top: 0;
display: flex;
flex-direction: column;
gap: 0.357em;
text-wrap: wrap;
h4 {
padding-left: 0.357em;
}
.toc-item {
cursor: pointer;
--indent-factor: 1;
// The offset in the padding will ensure that when the text in the item wraps, it indents slightly.
// The indent factor is set in the React code and denotes the depth of the item in the TOC tree.
padding-left: calc((var(--indent-factor) - 1) * 0.714em + 0.357em);
text-indent: -0.357em;
}
}
}
}