svem
Version:
Svelte in Markdown preprocessor
220 lines (185 loc) • 5.07 kB
CSS
@layer components {
.code-block {
display: flex;
flex-direction: column;
width: 100%;
position: relative;
}
.code-block-header {
display: flex;
min-height: calc(var(--svem-spacing) * 10);
align-items: center;
justify-content: space-between;
color: var(--svem-color-code-foreground);
background-color: var(--svem-color-code);
padding-left: calc(var(--svem-spacing) * 4);
padding-right: calc(var(--svem-spacing) * 3);
padding-block: calc(var(--svem-spacing) * 2.5);
border-top-left-radius: var(--svem-radius);
border-top-right-radius: var(--svem-radius);
font-weight: 500;
}
.code-block-header + .shiki {
border-radius: 0 0 var(--svem-radius) var(--svem-radius);
}
.code-block-header[standalone] {
display: inline-flex;
position: absolute;
top: 0;
right: 0;
}
.code-block-header[standalone] + .shiki {
border-radius: var(--svem-radius);
}
.code-block-header[standalone] + .shiki code {
padding-top: calc(var(--svem-spacing) * 4);
}
.code-block-actions {
display: inline-flex;
align-items: center;
gap: calc(var(--svem-spacing) * 2);
}
.code-block-lang {
display: inline-flex;
font-size: calc(var(--svem-text-base) * 0.875);
line-height: 1.5;
opacity: 0.75;
background-color: color-mix(in srgb, var(--svem-color-background) 80%, transparent);
border-radius: var(--svem-radius);
padding-block: calc(var(--svem-spacing) * 0.75);
padding-inline: calc(var(--svem-spacing) * 2.5);
}
.code-block-lang:first-child {
margin-left: auto;
}
.code-block-copy {
display: inline-flex;
align-items: center;
gap: calc(var(--svem-spacing) * 0.5);
cursor: pointer;
text-transform: uppercase;
font-size: calc(var(--svem-text-base) * 0.75);
font-weight: bold;
letter-spacing: 1.2px;
opacity: 0.9;
padding-block: calc(var(--svem-spacing) * 1);
padding-inline: calc(var(--svem-spacing) * 1);
border-radius: calc(var(--svem-radius) * 0.75);
line-height: calc(1.25 / 0.875);
transition: all 0.2s ease-in-out;
position: relative;
}
.code-block-copy svg {
width: 18px;
height: 18px;
stroke-width: 2px;
}
.code-block-copy:before {
content: '';
font-size: 1.25rem;
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
line-height: 1;
opacity: 0;
transition: all 0.2s ease-in-out;
}
.code-block-copy.success:before {
content: '✅';
opacity: 1;
}
.code-block-copy.error:before {
content: '❌';
opacity: 1;
}
.code-block-copy:hover {
opacity: 1;
background-color: color-mix(in srgb, var(--svem-color-background) 80%, transparent);
}
.shiki:not(.shiki-inline) {
max-height: calc(var(--svem-spacing) * 80);
overflow-y: auto;
tab-size: 2;
}
.shiki code {
display: block;
min-width: 100%;
padding-bottom: calc(var(--svem-spacing) * 4);
}
.shiki .line {
display: inline-block;
width: 100%;
padding: 0 calc(var(--svem-spacing) * 4);
}
.shiki .diff {
display: inline-block;
width: 100%;
position: relative;
}
.shiki .diff:before {
position: absolute;
left: calc(var(--svem-spacing) * 2);
}
.shiki .diff.add {
background-color: color-mix(in srgb, var(--svem-color-diff-add), transparent);
}
.shiki .diff.add:before {
color: var(--svem-color-diff-add-foreground);
content: '+';
}
.shiki .diff.remove {
background-color: color-mix(in srgb, var(--svem-color-diff-remove-foreground) 20%, transparent);
}
.shiki .diff.remove:before {
color: var(--svem-color-diff-remove-foreground);
content: '-';
}
.shiki-inline,
.inline-code {
display: inline-flex;
padding: 0;
border-radius: calc(var(--svem-radius) * 0.5);
font-weight: 500;
font-size: calc(var(--svem-text-base) * 1);
background-color: var(--svem-color-code);
}
.shiki-inline code {
padding: 0;
}
.shiki-inline .line,
code.inline-code {
padding: 0 calc(var(--svem-spacing) * 1.5);
}
code.inline-code {
color: #1e66f5;
}
}
html.dark .shiki[style] {
background-color: var(--shiki-dark-bg) ;
}
html.dark .shiki[style],
html.dark .shiki [style] {
color: var(--shiki-dark) ;
}
.callout[data-callout] {
display: flex;
flex-direction: column;
margin: 0;
padding: calc(var(--svem-spacing) * 4);
border-radius: var(--svem-radius);
}
.callout[data-callout] .callout-title {
display: inline-flex;
align-self: flex-start;
margin: 0;
}
.callout[data-callout] .callout-content {
display: flex;
flex-direction: column;
gap: calc(var(--svem-spacing) * 4);
margin-top: calc(var(--svem-spacing) * 4);
}
.callout .callout-content p {
margin: 0;
}