Files
website/src/components/Markdown/styles.tsx
T
Specy 2bbccddf08 fixed #412, fixed #TODO in side menu animation, fixed <a> text being on top of the header (#420)
* fixed overflown text, text above header, animation

* Fixed pre tag overflowing

* fixed h tags overflow
2021-10-02 02:52:27 +03:00

191 lines
3.4 KiB
TypeScript

import styled, { css } from "styled-components"
import {
BASE_FONT_SIZE,
BASE_LINE_HEIGHT,
fontFamily,
modularScale,
} from "../../design/typography"
function modularScaleCSS(power: number) {
const { fontSize } = modularScale(power)
return css`
font-size: ${fontSize}px;
line-height: 1.4;
`
}
export const MarkdownWrapper = styled.div`
font-size: ${BASE_FONT_SIZE}px;
line-height: ${BASE_LINE_HEIGHT}px;
& > :first-child {
margin-top: 0;
}
& > :first-child {
margin-bottom: 0;
}
p {
margin: ${BASE_LINE_HEIGHT}px 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: ${fontFamily.header};
letter-spacing: -1.75px;
overflow-wrap: break-word;
margin-top: ${BASE_LINE_HEIGHT * 2}px;
margin-bottom: ${BASE_LINE_HEIGHT}px;
}
h1 {
${modularScaleCSS(4)};
}
h2 {
${modularScaleCSS(3)};
@media screen and (min-width: 1440px) {
margin-left: -27px;
}
}
h3 {
${modularScaleCSS(2)};
}
h4 {
${modularScaleCSS(1)};
}
h5,
h6 {
font-size: ${BASE_FONT_SIZE}px;
line-height: ${BASE_LINE_HEIGHT}px;
}
h2 + h3 {
margin-top: ${BASE_LINE_HEIGHT}px;
}
h3 + h4 {
margin-top: ${BASE_LINE_HEIGHT}px;
}
h4 + h5 {
margin-top: ${BASE_LINE_HEIGHT}px;
}
h5 + h6 {
margin-top: ${BASE_LINE_HEIGHT}px;
}
h2 ~ h2::before {
display: block;
margin-bottom: ${BASE_LINE_HEIGHT * 2}px;
content: "";
height: 1px;
margin-right: -27px;
background: ${(props) =>
props.theme.name === "dark" ? "#34414e" : "#a3beda"};
}
h1 .anchor svg,
h2 .anchor svg,
h3 .anchor svg,
h4 .anchor svg,
h5 .anchor svg,
h6 .anchor svg {
fill: ${(props) => props.theme.main.foreground};
}
code {
background: ${(props) => props.theme.code.background};
padding: 2px 4px;
display: inline;
border-radius: 3px;
letter-spacing: 0.25px;
color: #ebedee;
font-family: "IBM Plex Mono", monospace;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
overflow-x: auto;
background: ${(props) => props.theme.code.background};
font-size: 18px;
}
pre > code[class*="language-"] {
padding: 0;
}
pre{
overflow-x: auto;
min-height:28px; /* to fix line-height causing Y overflow */
}
img {
max-width: 100%;
}
pre[class*="language-"] {
.token.boolean,
.token.number,
.token.function {
color: #eca371;
}
.token.property,
.token.class-name,
.token.constant,
.token.symbol {
color: #ffd664;
}
.token.operator,
.token.entity,
.token.url {
color: #11beea;
}
.token.selector,
.token.important,
.token.atrule,
.token.keyword,
.token.builtin {
color: #ee5cb2;
}
}
blockquote {
border-left: 2px solid ${(props) => props.theme.main.foreground};
margin-top: ${BASE_LINE_HEIGHT}px;
margin-bottom: ${BASE_LINE_HEIGHT}px;
margin-right: ${BASE_LINE_HEIGHT * 2}px;
margin-left: 0;
padding-left: ${BASE_LINE_HEIGHT}px;
}
a:not(.anchor):not(.button) {
text-decoration: none;
color: inherit;
background-image: linear-gradient(120deg, #feaf6d 0%, #ff70a5 100%);
background-repeat: no-repeat;
background-size: 100% 3px;
background-position: 0 100%;
transition: all 0.125s ease-in;
font-weight: 700;
word-break: break-all;
&:hover {
color: black;
background-size: 100% 100%;
}
}
`