@microflash/rehype-starry-night
Version:
rehype plugin to highlight codeblocks with Starry Night
182 lines (164 loc) • 6.42 kB
CSS
.hl {
--hlFontFamilyMono: ui-monospace, SFMono-Regular, "Roboto Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--hlFontFamilyCode: var(--hl-font-mono, var(--hlFontFamilyMono));
--hlBgColor: var(--hl-background-color, hsl(220, 23%, 97%));
--hlBorderThickness: var(--hl-border-thickness, 1px);
--hlBorderColor: var(--hl-border-color, hsl(215, 15%, 85%));
--hlBorderRadius: var(--hl-border-radius, 12px);
--hlBorderRadiusSm: calc(var(--hlBorderRadius) / 2);
--hlOutlineThickness: var(--hl-outline-thickness, 5px);
--hlOutlineColor: var(--hl-outline-color, hsl(215, 15%, 85%));
--hlLineGap: var(--hl-line-gap, 1ex);
--hlLineBorderWidth: var(--hl-line-border-width, 2px);
--hlLineBorderColor: var(--hl-line-border-color, transparent);
--hlLineNumberColor: var(--hl-line-number-color, var(--color-prettylights-syntax-sublimelinter-gutter-mark));
--hlLineBgColor: transparent;
--hlLineActiveBgColor: var(--hl-line-active-background-color, hsl(220, 23%, 89%));
--hlLineHighlightBgColor: var(--hl-line-highlight-background-color, hsl(220, 23%, 92%));
--hlLineAddedBgColor: var(--hl-line-added-background-color, hsl(103, 96%, 73%, 0.5));
--hlLineRemovedBgColor: var(--hl-line-removed-background-color, hsl(4, 75%, 83%, 0.5));
--hlLineNumberAddedColor: var(--hl-line-number-added-color, hsl(106, 59%, 27%));
--hlLineNumberRemovedColor: var(--hl-line-number-removed-color, hsl(355, 67%, 41%));
--hlLinePromptColor: var(--hl-line-prompt-color, hsl(357, 63%, 58%));
--hlLinePromptSize: 1em;
background-color: var(--hlBgColor);
border: var(--hlBorderThickness) solid var(--hlBorderColor);
border-radius: var(--hlBorderRadius);
}
.hl-header {
display: flex;
align-items: center;
gap: 1ch;
padding: 0.75ch;
border-bottom: 1px solid var(--hlBorderColor);
font-size: 0.7em;
}
.hl-language {
font-family: var(--hlFontFamilyCode);
line-height: 1;
padding: 0.75ch 1ch;
border-radius: var(--hlBorderRadiusSm);
background-color: var(--hlLineHighlightBgColor);
}
.hl pre {
background-color: transparent;
border: none;
overflow-x: auto;
border-radius: inherit;
}
.hl pre:focus-within {
outline-style: solid;
outline-color: var(--hlOutlineColor);
outline-width: var(--hlOutlineThickness);
}
.hl pre>code {
display: grid;
padding: var(--hlLineGap) 0;
cursor: auto;
touch-action: auto;
white-space: pre;
}
.hl .line {
--hlLinePaddingLeft: calc(var(--hl-line-marker-gutter-factor, 0) * 1.5ch + 1ch);
--hlLineMarkerOffset: calc((var(--hlLinePaddingLeft) * -1) + 0.5ch);
border-left: var(--hlLineBorderWidth) solid var(--hlLineBorderColor);
padding-left: var(--hlLinePaddingLeft);
padding-right: 1ch;
background-color: var(--hlLineBgColor);
}
.hl .line[data-highlighted] {
--hlLineNumberColor: var(--color-prettylights-syntax-comment);
--hlLineBgColor: var(--hlLineHighlightBgColor);
--hlLineBorderColor: var(--hlLineNumberColor);
}
.hl .line[data-line-added] {
--hlLineNumberColor: var(--hlLineNumberAddedColor);
--hlLineBgColor: var(--hlLineAddedBgColor);
position: relative;
}
.hl .line[data-line-added]::before {
content: "";
mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' fill-rule='evenodd' clip-rule='evenodd' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12h12m-6-6v12'/%3E%3C/svg%3E");
mask-repeat: no-repeat;
mask-position: top center;
mask-size: contain;
display: inline-block;
position: absolute;
margin-left: var(--hlLineMarkerOffset);
top: 0.5ch;
text-decoration: none;
user-select: none;
background-color: var(--hlLineNumberColor);
width: var(--hlLinePromptSize);
height: var(--hlLinePromptSize);
min-width: var(--hlLinePromptSize);
min-height: var(--hlLinePromptSize);
}
.hl .line[data-line-removed] {
--hlLineNumberColor: var(--hlLineNumberRemovedColor);
--hlLineBgColor: var(--hlLineRemovedBgColor);
position: relative;
}
.hl .line[data-line-removed]::before {
content: "";
mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' fill-rule='evenodd' clip-rule='evenodd' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12h12'/%3E%3C/svg%3E");
mask-repeat: no-repeat;
mask-position: top center;
mask-size: contain;
display: inline-block;
position: absolute;
margin-left: var(--hlLineMarkerOffset);
top: 0.5ch;
text-decoration: none;
user-select: none;
background-color: var(--hlLineNumberColor);
width: var(--hlLinePromptSize);
height: var(--hlLinePromptSize);
min-width: var(--hlLinePromptSize);
min-height: var(--hlLinePromptSize);
}
.hl .line[data-unselectable] {
user-select: none;
}
.hl .line:focus:not(:focus-visible),
.hl .line:hover {
--hlLineNumberColor: var(--color-prettylights-syntax-comment);
--hlLineBgColor: var(--hlLineActiveBgColor);
}
.hl .line-number {
--hlLineNumberWidth: calc(var(--hl-line-number-gutter-factor) * 1ch);
display: inline-block;
user-select: none;
margin-right: 1em;
text-align: right;
color: var(--hlLineNumberColor);
width: var(--hlLineNumberWidth);
}
.hl .line-prompt::before {
content: "";
mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' fill-rule='evenodd' clip-rule='evenodd' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.744 7.111a3.67 3.67 0 0 0-3.3-2.444H9.556a3.684 3.684 0 0 0-3.667 3.666A3.684 3.684 0 0 0 9.556 12h4.888a3.684 3.684 0 0 1 3.667 3.667 3.684 3.684 0 0 1-3.667 3.666H9.556a3.67 3.67 0 0 1-3.3-2.444M13 1l-2 22'/%3E%3C/svg%3E");
mask-repeat: no-repeat;
mask-position: top center;
mask-size: contain;
display: inline-block;
margin-right: 0.5ch;
margin-bottom: 0.3ex;
vertical-align: middle;
text-decoration: none;
user-select: none;
background-color: currentColor;
color: var(--hlLinePromptColor);
width: var(--hlLinePromptSize);
height: var(--hlLinePromptSize);
min-width: var(--hlLinePromptSize);
min-height: var(--hlLinePromptSize);
}
code.hl-inline {
--hlBgInline: var(--hl-background-color-inline, hsl(208, 21%, 14%));
font-family: var(--hl-font-mono);
background-color: var(--hlBgInline);
padding-left: 0.5ch;
padding-right: 0.5ch;
font-size: 0.95em;
border-radius: 0.5ch;
}