212 lines
4.2 KiB
SCSS
212 lines
4.2 KiB
SCSS
// Copyright (c) 2020 Florian Klampfer <https://qwtel.com/>
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
// <<<<< LINK
|
|
code, pre {
|
|
font-family: var(--code-font-family);
|
|
}
|
|
|
|
code {
|
|
@extend .color-transition;
|
|
padding: .25em .5em;
|
|
background-color: var(--gray-bg);
|
|
font-size: smaller;
|
|
}
|
|
|
|
.figure-base {
|
|
@extend .color-transition;
|
|
margin-left: -1rem;
|
|
margin-right: -1rem;
|
|
|
|
// Prevent code linebreaks and allow side-scrolling for better readability on mobile
|
|
overflow-x: auto;
|
|
-webkit-overflow-scrolling: touch;
|
|
@include border-radius();
|
|
}
|
|
|
|
.pre-base {
|
|
@extend .figure-base;
|
|
padding: 1rem;
|
|
margin-bottom: 1.5rem;
|
|
background-color: var(--gray-bg);
|
|
|
|
// HACK: prevents painting for some reason
|
|
backface-visibility: hidden;
|
|
|
|
@media print {
|
|
width: 100%!important;
|
|
page-break-inside: avoid;
|
|
break-inside: avoid-page;
|
|
}
|
|
}
|
|
|
|
pre {
|
|
@extend .pre-base;
|
|
margin-top: 0;
|
|
display: block;
|
|
font-size: .83em;
|
|
line-height: 1.5em;
|
|
position: relative;
|
|
}
|
|
|
|
pre > code {
|
|
display: inline-block;
|
|
position: relative;
|
|
min-width: 100%;
|
|
padding: 0;
|
|
color: inherit;
|
|
background-color: transparent;
|
|
font-size: 1em;
|
|
|
|
// .__hl {
|
|
// @extend .color-transition;
|
|
// display: inline-block;
|
|
// position: absolute;
|
|
// left: -1rem;
|
|
// right: -1rem;
|
|
// background: var(--accent-color-highlight);
|
|
// border-left: .25rem solid var(--accent-color-faded);
|
|
// z-index: -1;
|
|
// }
|
|
}
|
|
|
|
.pre-header-common {
|
|
@extend .color-transition;
|
|
height: 2rem;
|
|
border: none;
|
|
border-bottom: 1px solid var(--border-color);
|
|
border-bottom-left-radius: 0;
|
|
border-bottom-right-radius: 0;
|
|
}
|
|
|
|
div.highlight {
|
|
position: relative;
|
|
|
|
> .pre-header {
|
|
@extend .figure-base;
|
|
@extend .pre-header-common;
|
|
display: block;
|
|
color: var(--gray)!important;
|
|
background-color: var(--gray-bg);
|
|
overflow: clip;
|
|
|
|
> span {
|
|
font-size: smaller;
|
|
}
|
|
|
|
> * {
|
|
display: inline-block;
|
|
padding: .3rem 1rem .2rem;
|
|
}
|
|
}
|
|
|
|
> button {
|
|
@extend .pre-header-common;
|
|
position: absolute;
|
|
top: 0;
|
|
right: -1rem;
|
|
color: var(--menu-text);
|
|
background: none;
|
|
border-left: 1px solid var(--border-color);
|
|
border-right: 1px solid var(--border-color);
|
|
border-top-left-radius: 0;
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
overflow: hidden;
|
|
cursor: pointer;
|
|
opacity: 0;
|
|
transition: opacity 300ms;
|
|
|
|
&:hover {
|
|
background: var(--gray-bg);
|
|
}
|
|
|
|
&.copy-success {
|
|
> .icon-copy {
|
|
animation-name: icon-copy;
|
|
animation-duration: 1.5s;
|
|
animation-timing-function: ease;
|
|
}
|
|
> .icon-checkmark {
|
|
animation-name: icon-checkmark;
|
|
animation-duration: 1.5s;
|
|
animation-timing-function: ease;
|
|
}
|
|
}
|
|
> .icon-copy {
|
|
display: inline-block;
|
|
}
|
|
> .icon-checkmark {
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
margin-top: -3em;
|
|
|
|
left: 0;
|
|
right: 0;
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
&:hover > button {
|
|
opacity: 1;
|
|
transition: opacity 100ms;
|
|
}
|
|
|
|
> .pre-header ~ pre.highlight {
|
|
border-top-left-radius: 0;
|
|
border-top-right-radius: 0;
|
|
padding-top: .65rem;
|
|
}
|
|
|
|
> .pre-header ~ button {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
body.no-break-layout {
|
|
div.highlight > button {
|
|
border-right: none;
|
|
}
|
|
}
|
|
|
|
@keyframes icon-checkmark {
|
|
0% {
|
|
transform: translateY(0);
|
|
}
|
|
15%, 85% {
|
|
transform: translateY(2.5em);
|
|
}
|
|
100% {
|
|
transform: translateY(5em);
|
|
}
|
|
}
|
|
|
|
@keyframes icon-copy {
|
|
0% {
|
|
transform: translateY(0);
|
|
}
|
|
15% {
|
|
transform: translateY(2.5em);
|
|
}
|
|
15.01%, 85% {
|
|
transform: translateY(-2.5em);
|
|
}
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
// >>>>> LINK
|