Files
2024-02-15 17:01:50 +00:00

142 lines
3.0 KiB
TypeScript

import type {Theme} from '@emotion/react';
import {css} from '@emotion/react';
import {space} from 'sentry/styles/space';
/**
* Prism (code highlighting) styles. Added to <GlobalStyles />, so no need to import
* this into any component.
*/
export const prismStyles = (theme: Theme) => css`
:root {
${theme.prismVariables};
}
/* Use dark Prism theme for code snippets imported from Sentry Docs */
.gatsby-highlight,
.prism-dark {
${theme.prismDarkVariables};
}
pre[class*='language-'] {
overflow-x: auto;
padding: ${space(1)} ${space(2)};
border-radius: ${theme.borderRadius};
box-shadow: none;
code {
background: unset;
vertical-align: middle;
}
}
pre[class*='language-'],
code[class*='language-'] {
color: var(--prism-base);
background: var(--prism-block-background);
font-size: ${theme.codeFontSize};
text-shadow: none;
font-family: ${theme.text.familyMono};
direction: ltr;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
.namespace {
opacity: 0.7;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: var(--prism-comment);
}
.token.punctuation {
color: var(--prism-punctuation);
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: var(--prism-property);
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: var(--prism-selector);
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: var(--prism-operator);
background: none;
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: var(--prism-keyword);
}
.token.function {
color: var(--prism-function);
}
.token.regex,
.token.important,
.token.variable {
color: var(--prism-variable);
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.line-highlight {
position: absolute;
left: -${space(2)};
right: 0;
background: var(--prism-highlight-background);
box-shadow: inset 5px 0 0 var(--prism-highlight-accent);
z-index: 0;
pointer-events: none;
line-height: inherit;
white-space: pre;
}
}
pre[class*='language-']::selection,
code[class*='language-']::selection,
code[class*='language-'] *::selection {
text-shadow: none;
background: var(--prism-selected);
}
pre[data-line] {
position: relative;
}
pre[class*='language-'] > code[class*='language-'] {
position: relative;
z-index: 1;
}
`;