UNPKG

vue-markdown-shiki

Version:

A Vue 3 component library that provides integration with Shiki and Markdown-it.

431 lines (363 loc) 8.49 kB
/** * Headings * -------------------------------------------------------------------------- */ .vp-doc h1, .vp-doc h2, .vp-doc h3, .vp-doc h4, .vp-doc h5, .vp-doc h6 { position: relative; font-weight: 600; outline: none; } .vp-doc h1 { letter-spacing: -0.02em; line-height: 40px; font-size: 28px; } .vp-doc h2 { margin: 48px 0 16px; border-top: 1px solid var(--vp-c-divider); padding-top: 24px; letter-spacing: -0.02em; line-height: 32px; font-size: 24px; } .vp-doc h3 { margin: 32px 0 0; letter-spacing: -0.01em; line-height: 28px; font-size: 20px; } .vp-doc .header-anchor { float: left; margin-left: -0.87em; padding-right: 0.23em; font-weight: 500; user-select: none; opacity: 0; transition: color 0.25s, opacity 0.25s; } .vp-doc .header-anchor:before { content: var(--vp-header-anchor-symbol); } .vp-doc h1:hover .header-anchor, .vp-doc h1 .header-anchor:focus, .vp-doc h2:hover .header-anchor, .vp-doc h2 .header-anchor:focus, .vp-doc h3:hover .header-anchor, .vp-doc h3 .header-anchor:focus, .vp-doc h4:hover .header-anchor, .vp-doc h4 .header-anchor:focus, .vp-doc h5:hover .header-anchor, .vp-doc h5 .header-anchor:focus, .vp-doc h6:hover .header-anchor, .vp-doc h6 .header-anchor:focus { opacity: 1; } @media (min-width: 768px) { .vp-doc h1 { letter-spacing: -0.02em; line-height: 40px; font-size: 32px; } } /** * Paragraph and inline elements * -------------------------------------------------------------------------- */ .vp-doc p, .vp-doc summary { margin: 16px 0; } .vp-doc p { line-height: 28px; } .vp-doc blockquote { margin: 16px 0; border-left: 2px solid var(--vp-c-divider); padding-left: 16px; transition: border-color 0.5s; } .vp-doc blockquote > p { margin: 0; font-size: 16px; color: var(--vp-c-text-2); transition: color 0.5s; } .vp-doc a { font-weight: 500; color: var(--vp-c-brand); text-decoration-style: dotted; transition: color 0.25s; } .vp-doc a:hover { /* color: var(--vp-c-brand-dark); */ text-decoration: underline; } .vp-doc strong { font-weight: 600; } /** * Lists * -------------------------------------------------------------------------- */ .vp-doc ul, .vp-doc ol { padding-left: 1.25rem; margin: 16px 0; } .vp-doc ul { list-style: disc; } .vp-doc ol { list-style: decimal; } .vp-doc li + li { margin-top: 8px; } .vp-doc li > ol, .vp-doc li > ul { margin: 8px 0 0; } /** * Table * -------------------------------------------------------------------------- */ .vp-doc table { display: block; border-collapse: collapse; margin: 20px 0; overflow-x: auto; } .vp-doc tr { border-top: 1px solid var(--vp-c-divider); transition: background-color 0.5s; } .vp-doc tr:nth-child(2n) { background-color: var(--vp-c-bg-soft); } .vp-doc th, .vp-doc td { border: 1px solid var(--vp-c-divider); padding: 8px 16px; } .vp-doc th { text-align: left; font-size: 14px; font-weight: 600; color: var(--vp-c-text-2); background-color: var(--vp-c-bg-soft); } .vp-doc td { font-size: 14px; } /** * Decorational elements * -------------------------------------------------------------------------- */ .vp-doc hr { margin: 16px 0; border: none; border-top: 1px solid var(--vp-c-divider); } /** * Custom Block * -------------------------------------------------------------------------- */ .vp-doc .custom-block { margin: 16px 0; } .vp-doc .custom-block p { margin: 8px 0; line-height: 24px; } .vp-doc .custom-block p:first-child { margin: 0; } .vp-doc .custom-block a { color: inherit; font-weight: 600; } .vp-doc .custom-block a:hover { text-decoration: underline; } .vp-doc .custom-block code { font-size: var(--vp-custom-block-code-font-size); font-weight: 700; color: inherit; } .vp-doc .custom-block div[class*='language-'] { margin: 8px 0; } .vp-doc .custom-block div[class*='language-'] code { font-weight: 400; background-color: transparent; } /** * Code * -------------------------------------------------------------------------- */ /* inline code */ .vp-doc :not(pre, h1, h2, h3, h4, h5, h6) > code { font-size: var(--vp-code-font-size); } .vp-doc :not(pre) > code { border-radius: 4px; padding: 3px 6px; color: var(--vp-c-text-code); background-color: var(--vp-c-mute); transition: color 0.5s, background-color 0.5s; } .vp-doc h1 > code, .vp-doc h2 > code, .vp-doc h3 > code { font-size: 0.9em; } .vp-doc a > code { color: var(--vp-c-brand); transition: color 0.25s; } .vp-doc a:hover > code { color: var(--vp-c-brand-dark); } .vp-doc div[class*='language-'] { position: relative; /* margin: 16px -24px; */ background-color: var(--vp-code-block-bg); overflow-x: auto; transition: background-color 0.5s; } /* @media (max-width: 639px) { .vp-doc li div[class*='language-'] { border-radius: 8px 0 0 8px; } } */ .vp-doc div[class*='language-'] + div[class*='language-'], .vp-doc div[class$='-api'] + div[class*='language-'], .vp-doc div[class*='language-'] + div[class$='-api'] > div[class*='language-'] { margin-top: -8px; } .vp-doc [class*='language-'] pre, .vp-doc [class*='language-'] code { /*rtl:ignore*/ direction: ltr; /*rtl:ignore*/ text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } .vp-doc [class*='language-'] pre { position: relative; z-index: 1; margin: 0; /* 调整原Vitepress中的样式 */ /* padding: 20px 0; */ padding-bottom: 20px; background: transparent; overflow-x: auto; width: 100%; } .vp-doc [class*='language-'] code { display: block; padding: 0 24px; padding-left: 24px; width: fit-content; min-width: 100%; line-height: var(--vp-code-line-height); font-size: var(--vp-code-font-size); color: var(--vp-code-block-color); transition: color 0.5s; box-sizing: border-box; padding-top: 10px; } .vp-doc [class*='language-'] code .highlighted { background-color: var(--vp-code-line-highlight-color); transition: background-color 0.5s; margin: 0 -24px; padding: 0 24px; width: calc(100% + 2 * 24px); display: inline-block; } .vp-doc [class*='language-'] code .highlighted.error { background-color: var(--vp-code-line-error-color); } .vp-doc [class*='language-'] code .highlighted.warning { background-color: var(--vp-code-line-warning-color); } .vp-doc [class*='language-'] code .diff { transition: background-color 0.5s; margin: 0 -24px; padding: 0 24px; width: calc(100% + 2 * 24px); display: inline-block; } .vp-doc [class*='language-'] code .diff::before { position: absolute; left: 10px; } .vp-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) { filter: blur(0.095rem); opacity: 0.4; transition: filter 0.35s, opacity 0.35s; } .vp-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) { opacity: 0.7; transition: filter 0.35s, opacity 0.35s; } .vp-doc [class*='language-']:hover .has-focused-lines .line:not(.has-focus) { filter: blur(0); opacity: 1; } .vp-doc [class*='language-'] code .diff.remove { background-color: var(--vp-code-line-diff-remove-color); opacity: 0.7; } .vp-doc [class*='language-'] code .diff.remove::before { content: '-'; color: var(--vp-code-line-diff-remove-symbol-color); } .vp-doc [class*='language-'] code .diff.add { background-color: var(--vp-code-line-diff-add-color); } .vp-doc [class*='language-'] code .diff.add::before { content: '+'; color: var(--vp-code-line-diff-add-symbol-color); } .vp-doc div[class*='language-'].line-numbers-mode { /*rtl:ignore*/ padding-left: 32px; } .vp-doc .line-numbers-wrapper { position: absolute; top: 0; bottom: 0; /*rtl:ignore*/ left: 0; z-index: 3; /*rtl:ignore*/ border-right: 1px solid var(--vp-code-block-divider-color); padding-top: 20px; width: 32px; text-align: center; font-family: var(--vp-font-family-mono); line-height: var(--vp-code-line-height); font-size: var(--vp-code-font-size); color: var(--vp-code-line-number-color); transition: border-color 0.5s, color 0.5s; } .vp-doc [class*='language-'] > span.lang { position: absolute; top: 2px; /*rtl:ignore*/ right: 8px; z-index: 2; font-size: 12px; font-weight: 500; color: var(--vp-c-text-dark-3); transition: color 0.4s, opacity 0.4s; }