Merge branch 'main' into feature/extension-classes

# Conflicts:
#	packages/core/src/utils/getSchema.ts
This commit is contained in:
Philipp Kühn
2020-10-12 22:25:33 +02:00
25 changed files with 790 additions and 542 deletions

View File

@@ -1,18 +1,19 @@
.demo {
background-color: $colorWhite;
overflow: hidden;
border-radius: 0.5rem;
&__preview {
padding: 1.5rem;
border: 1px solid rgba($colorBlack, 0.1);
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-width: 0;
color: $colorBlack;
background-color: $colorWhite;
}
&__source {
// background-color: $colorBlack;
border: 1px solid rgba($colorWhite, 0.1);
background-color: $colorBlack;
}
&__tabs {
@@ -54,17 +55,28 @@
justify-content: space-between;
width: 100%;
padding: 0.5rem 1.5rem;
font-size: 0.85rem;
border: 1px solid rgba($colorWhite, 0.1);
border: 1px solid rgba($colorBlack, 0.1);
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
border-top-width: 0;
background-color: rgba($colorBlack, 0.9);
color: $colorWhite;
background-color: $colorBlack;
white-space: nowrap;
}
&__name {
display: none;
@media (min-width: 600px) {
display: block;
overflow: hidden;
text-overflow: ellipsis;
padding-right: 0.5rem;
}
}
&__link {
// text-align: right;
margin-left: auto;
}
&__error {

View File

@@ -47,15 +47,15 @@ export default {
&__preview {
padding: 1.5rem;
border: 1px solid rgba($colorBlack, 0.1);
border-top-left-radius: inherit;
border-top-right-radius: inherit;
border-bottom-width: 0;
color: $colorBlack;
}
&__editor {
background-color: rgba($colorBlack, 0.9);
color: rgba($colorWhite, 0.7);
border: 1px solid rgba($colorWhite, 0.1);
background-color: $colorBlack;
}
&__editor ::v-deep {
@@ -63,10 +63,6 @@ export default {
overflow: auto;
max-height: unquote("max(300px, 60vh)");
padding: 1.5rem;
&::-webkit-scrollbar-thumb {
background-color: rgba($colorWhite, 0.25);
}
}
.prism-editor__container {

View File

@@ -9,15 +9,6 @@
border-bottom-width: 0;
}
&__source {
// background-color: $colorBlack;
}
&__tabs {
padding: 1rem 1.5rem 0 1.5rem;
background-color: rgba($colorBlack, 0.9);
}
&__tab {
display: inline-flex;
position: relative;
@@ -53,16 +44,10 @@
width: 100%;
padding: 0.5rem 1.5rem;
border: 1px solid rgba($colorWhite, 0.1);
border: 1px solid rgba($colorBlack, 0.1);
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
border-top-width: 0;
background-color: rgba($colorBlack, 0.9);
color: $colorWhite;
}
&__link {
// text-align: right;
background-color: $colorBlack;
}
&__error {

View File

@@ -1,14 +1,16 @@
.page-navigation {
display: flex;
justify-content: space-between;
padding: 3rem 0;
padding: 1.5rem 0;
&__link {
font-weight: 500;
color: rgba($colorBlack, 0.6);
color: rgba($colorWhite, 0.6);
padding: 0.25rem 0.5rem;
border-radius: 5px;
&:hover {
color: $colorBlack;
color: $colorWhite;
background-color: rgba($colorWhite, 0.05);
}
}
}
}

View File

@@ -53,20 +53,20 @@ context('/api/extensions/code-block', () => {
it('the keyboard shortcut should make the selected line a code block', () => {
cy.get('.ProseMirror')
.trigger('keydown', { shiftKey: true, ctrlKey: true, key: '\\' })
.trigger('keydown', { shiftKey: true, modKey: true, key: 'c' })
.find('pre')
.should('contain', 'Example Text')
})
it('the keyboard shortcut should toggle the code block', () => {
cy.get('.ProseMirror')
.trigger('keydown', { shiftKey: true, ctrlKey: true, key: '\\' })
.trigger('keydown', { shiftKey: true, modKey: true, key: 'c' })
.find('pre')
.should('contain', 'Example Text')
cy.get('.ProseMirror')
.type('{selectall}')
.trigger('keydown', { shiftKey: true, ctrlKey: true, key: '\\' })
.trigger('keydown', { shiftKey: true, modKey: true, key: 'c' })
cy.get('.ProseMirror pre')
.should('not.exist')

View File

@@ -34,7 +34,7 @@ context('/api/extensions/hard-break', () => {
.should('exist')
})
it('the default keyboard shortcut should add a line break', () => {
it.skip('the default keyboard shortcut should add a line break', () => {
cy.get('.ProseMirror br')
.should('not.exist')

View File

@@ -14,9 +14,6 @@ context('/api/extensions/heading', () => {
'<h1>Example Text</h1>',
'<h2>Example Text</h2>',
'<h3>Example Text</h3>',
'<h4>Example Text</h4>',
'<h5>Example Text</h5>',
'<h6>Example Text</h6>',
]
headings.forEach(html => {
@@ -28,9 +25,9 @@ context('/api/extensions/heading', () => {
})
})
it('should omit invalid headings', () => {
it('should omit disabled heading levels', () => {
cy.get('.ProseMirror').then(([{ editor }]) => {
editor.setContent('<h7>Example Text</h7>')
editor.setContent('<h4>Example Text</h4>')
expect(editor.html()).to.eq('<p>Example Text</p>')
})
})

View File

@@ -28,7 +28,8 @@ yarn add @tiptap/extension-code-block
| codeBlock | — | Wrap content in a code block. |
## Keyboard shortcuts
* `Shift`&nbsp;`Control`&nbsp;`\`
* Windows/Linux: `Control`&nbsp;`Shift`&nbsp;`C`
* macOS: `Cmd`&nbsp;`Shift`&nbsp;`C`
## Source code
[packages/extension-code-block/](https://github.com/ueberdosis/tiptap-next/blob/main/packages/extension-code-block/)

View File

@@ -1,4 +1,4 @@
# Basic
BUG: Headings cant be transformed to a bullet or ordered list.
<live-demo name="Examples/Basic" />
<demo name="Examples/Basic" />

View File

@@ -8,6 +8,10 @@
outline: none;
}
*:focus {
outline: none;
}
::-webkit-scrollbar {
width: 14px;
height: 14px;
@@ -24,11 +28,11 @@
border: 4px solid rgba(0, 0, 0, 0);
background-clip: padding-box;
border-radius: 8px;
background-color: rgba($colorBlack, 0);
background-color: rgba($colorWhite, 0);
}
:hover::-webkit-scrollbar-thumb {
background-color: rgba($colorBlack, 0.1);
background-color: rgba($colorWhite, 0.1);
}
::-webkit-scrollbar-button {
@@ -43,7 +47,6 @@
html {
scroll-behavior: smooth;
height: 100%;
}
body {
@@ -52,17 +55,8 @@ body {
-moz-osx-font-smoothing: grayscale;
line-height: 1.7;
font-feature-settings: 'cv05' 1;
background-color: $colorBackground;
height: 100%;
}
*:focus {
outline: none;
}
ul,
ol {
list-style: none;
background-color: $colorBlack;
color: $colorText;
}
button {
@@ -74,22 +68,19 @@ a {
color: inherit;
transition: color 0.2s $ease, background-color 0.2s $ease;
text-decoration: none;
&:hover {
color: $colorWhite;
}
}
code {
font-family: 'JetBrainsMono', monospace;
background-color: rgba($colorBlack, 0.05);
padding: 0.1rem 0.3rem;
border-radius: 0.25rem;
color: rgba($colorBlack, 0.7);
font-size: 0.9rem;
}
blockquote {
padding-left: 1rem;
border-left: 3px solid rgba($colorBlack, 0.1);
}
.is-active {
background: black;
color: white;
@@ -117,8 +108,9 @@ blockquote {
hr {
margin: 1rem 0;
}
}
#table-of-contents {
display: none;
blockquote {
padding-left: 1rem;
border-left: 3px solid rgba($colorBlack, 0.1);
}
}

View File

@@ -2,7 +2,7 @@
// font-family: 'Inter';
// font-style: normal;
// font-weight: 100;
//
//
// src: url("~@/assets/fonts/Inter-Thin-BETA.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-Thin-BETA.woff") format("woff"),
// ;
@@ -11,7 +11,7 @@
// font-family: 'Inter';
// font-style: italic;
// font-weight: 100;
//
//
// src: url("~@/assets/fonts/Inter-ThinItalic-BETA.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-ThinItalic-BETA.woff") format("woff"),
// ;
@@ -21,7 +21,7 @@
// font-family: 'Inter';
// font-style: normal;
// font-weight: 200;
//
//
// src: url("~@/assets/fonts/Inter-ExtraLight-BETA.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-ExtraLight-BETA.woff") format("woff"),
// ;
@@ -30,7 +30,7 @@
// font-family: 'Inter';
// font-style: italic;
// font-weight: 200;
//
//
// src: url("~@/assets/fonts/Inter-ExtraLightItalic-BETA.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-ExtraLightItalic-BETA.woff") format("woff"),
// ;
@@ -40,7 +40,7 @@
// font-family: 'Inter';
// font-style: normal;
// font-weight: 300;
//
//
// src: url("~@/assets/fonts/Inter-Light-BETA.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-Light-BETA.woff") format("woff"),
// ;
@@ -49,7 +49,7 @@
// font-family: 'Inter';
// font-style: italic;
// font-weight: 300;
//
//
// src: url("~@/assets/fonts/Inter-LightItalic-BETA.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-LightItalic-BETA.woff") format("woff"),
// ;
@@ -112,30 +112,30 @@
;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src:
url("~@/assets/fonts/Inter-Bold.woff2") format("woff2"),
url("~@/assets/fonts/Inter-Bold.woff") format("woff"),
;
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 700;
src:
url("~@/assets/fonts/Inter-BoldItalic.woff2") format("woff2"),
url("~@/assets/fonts/Inter-BoldItalic.woff") format("woff"),
;
}
// @font-face {
// font-family: 'Inter';
// font-style: normal;
// font-weight: 700;
// src:
// url("~@/assets/fonts/Inter-Bold.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-Bold.woff") format("woff"),
// ;
// }
// @font-face {
// font-family: 'Inter';
// font-style: italic;
// font-weight: 700;
// src:
// url("~@/assets/fonts/Inter-BoldItalic.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-BoldItalic.woff") format("woff"),
// ;
// }
// @font-face {
// font-family: 'Inter';
// font-style: normal;
// font-weight: 800;
//
//
// src: url("~@/assets/fonts/Inter-ExtraBold.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-ExtraBold.woff") format("woff"),
// ;
@@ -144,26 +144,26 @@
// font-family: 'Inter';
// font-style: italic;
// font-weight: 800;
//
//
// src: url("~@/assets/fonts/Inter-ExtraBoldItalic.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-ExtraBoldItalic.woff") format("woff"),
// ;
// }
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 900;
src: url("~@/assets/fonts/Inter-Black.woff2") format("woff2"),
url("~@/assets/fonts/Inter-Black.woff") format("woff"),
;
}
// @font-face {
// font-family: 'Inter';
// font-style: normal;
// font-weight: 900;
// src: url("~@/assets/fonts/Inter-Black.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-Black.woff") format("woff"),
// ;
// }
// @font-face {
// font-family: 'Inter';
// font-style: italic;
// font-weight: 900;
//
//
// src: url("~@/assets/fonts/Inter-BlackItalic.woff2") format("woff2"),
// url("~@/assets/fonts/Inter-BlackItalic.woff") format("woff"),
// ;

View File

@@ -1,5 +1,5 @@
<template>
<div class="app">
<!-- <div class="app">
<header class="app__header">
<div class="app__header-inner">
<g-link class="app__logo" to="/">
@@ -71,6 +71,102 @@
<page-navigation />
</main>
</div>
</div> -->
<div class="app">
<div class="app__sidebar">
<div class="app__title">
<g-link class="app__name" to="/">
{{ $static.metadata.siteName }}
</g-link>
<g-link to="https://github.com/ueberdosis/tiptap">
<svg
class="app__github"
width="15"
height="15"
fill="none"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 15 15"
><path
d="M7.49936 0.849976C3.82767 0.849976 0.849976 3.82727 0.849976 7.5002C0.849976 10.4379 2.75523 12.9306 5.39775 13.8103C5.73047 13.8712 5.85171 13.6658 5.85171 13.4895C5.85171 13.3315 5.846 12.9134 5.84273 12.3586C3.99301 12.7603 3.60273 11.467 3.60273 11.467C3.30022 10.6987 2.86423 10.4942 2.86423 10.4942C2.26044 10.0819 2.90995 10.0901 2.90995 10.0901C3.57742 10.137 3.9285 10.7755 3.9285 10.7755C4.52167 11.7916 5.48512 11.4981 5.86396 11.3278C5.92438 10.8984 6.09625 10.6052 6.28608 10.4391C4.80948 10.2709 3.25695 9.7006 3.25695 7.15238C3.25695 6.42612 3.51618 5.83295 3.94157 5.36797C3.87299 5.19977 3.64478 4.52372 4.00689 3.60804C4.00689 3.60804 4.56494 3.42923 5.83538 4.28938C6.36568 4.14201 6.93477 4.06853 7.50018 4.06567C8.06518 4.06853 8.63386 4.14201 9.16498 4.28938C10.4346 3.42923 10.9918 3.60804 10.9918 3.60804C11.3548 4.52372 11.1266 5.19977 11.0584 5.36797C11.4846 5.83295 11.7418 6.42612 11.7418 7.15238C11.7418 9.70713 10.1868 10.2693 8.70571 10.4338C8.94412 10.6391 9.15681 11.0449 9.15681 11.6654C9.15681 12.5542 9.14865 13.2715 9.14865 13.4895C9.14865 13.6675 9.26867 13.8744 9.60588 13.8095C12.2464 12.9281 14.15 10.4375 14.15 7.5002C14.15 3.82727 11.1723 0.849976 7.49936 0.849976Z"
fill="currentColor"
fill-rule="evenodd"
clip-rule="evenodd"
/></svg>
</g-link>
</div>
<portal-target name="desktop-nav" />
</div>
<div class="app__content">
<div class="app__top-bar">
<div class="app__inner app__top-bar-inner">
<input class="app__search" type="search" placeholder="Search">
<button
class="app__menu-icon"
@click="menuIsVisible = true"
v-if="!menuIsVisible"
>
<icon name="menu" />
</button>
<button
class="app__close-icon"
@click="menuIsVisible = false"
v-if="menuIsVisible"
>
<icon name="close" />
</button>
</div>
<div class="app__mobile-nav" v-if="menuIsVisible">
<portal-target name="mobile-nav" />
</div>
</div>
<main class="app__main">
<div class="app__inner">
<slot />
<p>
<br>
<a :href="editLink" target="_blank">
<span>Edit this page on GitHub</span>
</a>
</p>
<p>
Made with 🖤 by <a href="https://twitter.com/_ueberdosis">überdosis</a>
</p>
</div>
</main>
<div class="app__page-navigation">
<div class="app__inner">
<page-navigation />
</div>
</div>
</div>
<portal :to="portal">
<nav class="app__navigation">
<div class="app__link-group" v-for="(linkGroup, i) in linkGroups" :key="i">
<div class="app__link-group-title">
{{ linkGroup.title }}
</div>
<ul class="app__link-list">
<li v-for="(item, j) in linkGroup.items" :key="j">
<g-link :class="{ 'app__link': true, 'app__link--draft': item.draft === true, 'app__link--with-children': item.items }" :to="item.link" :exact="item.link === '/'">
{{ item.title }}
</g-link>
<ul v-if="item.items" class="app__link-list">
<li v-for="(item, k) in item.items" :key="k">
<g-link :class="{ 'app__link': true, 'app__link--draft': item.draft === true }" :to="item.link" exact>
{{ item.title }}
</g-link>
</li>
</ul>
</li>
</ul>
</div>
</nav>
</portal>
</div>
</template>
@@ -86,26 +182,36 @@ query {
import linkGroups from '@/links.yaml'
import Icon from '@/components/Icon'
import PageNavigation from '@/components/PageNavigation'
import GithubButton from 'vue-github-button'
// import GithubButton from 'vue-github-button'
export default {
components: {
Icon,
PageNavigation,
GithubButton,
// GithubButton,
},
data() {
return {
linkGroups,
menuIsVisible: false,
windowWidth: null,
}
},
computed: {
portal() {
if (this.windowWidth && this.windowWidth < 800) {
return 'mobile-nav'
}
return 'desktop-nav'
},
currentPath() {
return this.$route.matched[0].path
},
editLink() {
const { currentPath } = this
const filePath = currentPath === '' ? '/introduction' : currentPath
@@ -114,20 +220,37 @@ export default {
},
},
watch: {
$route() {
this.menuIsVisible = false
},
},
methods: {
initSearch() {
// eslint-disable-next-line
docsearch({
apiKey: '1abe7fb0f0dac150d0e963d2eda930fe',
indexName: 'ueberdosis_tiptap',
inputSelector: '.search',
inputSelector: '.app__search',
debug: false,
})
},
handleResize() {
this.windowWidth = window.innerWidth
},
},
mounted() {
this.initSearch()
this.handleResize()
window.addEventListener('resize', this.handleResize)
},
beforeDestroy() {
window.removeEventListener('resize', this.handleResize)
},
}
</script>

View File

@@ -1,13 +1,4 @@
$codeBackground: rgba($colorBlack, 0.9);
$codeText: #eee;
$codeGrey: #616161;
$codeRed: #ff6666;
$codeOrange: #fd9170;
$colorYellow: #ffcb6b;
$codeGreen: #b9ea80;
$codeBlue: #89ddff;
$codeTeal: #80cbc4;
$codePurple: #c792ea;
$codeBackground: $colorBlack;
.prism-editor__textarea {
background: transparent;
@@ -36,14 +27,14 @@ pre[class*="language-"] {
:not(pre) > code[class*="language-"] {
white-space: normal;
color: $codeText;
color: $colorWhite;
background: $codeBackground;
border-radius: 0.2em;
padding: 0.1em;
}
pre > code[class*="language-"] {
display: inline-block; // TODO: breaks on mobile safari
display: block;
min-width: 100%;
background: none;
}
@@ -51,21 +42,17 @@ pre > code[class*="language-"] {
pre[class*="language-"] {
overflow: auto;
position: relative;
color: $codeText;
color: $colorWhite;
background: $codeBackground;
padding: 1.2rem 1.5rem !important;
border-radius: 0.5rem;
max-height: unquote("max(300px, 60vh)");
&::-webkit-scrollbar-thumb {
background-color: rgba($colorWhite, 0.25);
}
}
pre[class*="language-"].language-css > code,
pre[class*="language-"].language-sass > code,
pre[class*="language-"].language-scss > code {
color: $codeOrange;
color: $colorOrange;
}
[class*="language-"] .namespace {
@@ -73,7 +60,7 @@ pre[class*="language-"].language-scss > code {
}
.token.atrule {
color: $codePurple;
color: $colorPurple;
}
.token.attr-name {
@@ -81,15 +68,15 @@ pre[class*="language-"].language-scss > code {
}
.token.attr-value {
color: $codeGreen;
color: $colorGreen;
}
.token.attribute {
color: $codeGreen;
color: $colorGreen;
}
.token.boolean {
color: $codePurple;
color: $colorPurple;
}
.token.builtin {
@@ -97,11 +84,11 @@ pre[class*="language-"].language-scss > code {
}
.token.cdata {
color: $codeTeal;
color: $colorTeal;
}
.token.char {
color: $codeTeal;
color: $colorTeal;
}
.token.class {
@@ -113,27 +100,27 @@ pre[class*="language-"].language-scss > code {
}
.token.comment {
color: $codeGrey;
color: $colorGrey;
}
.token.constant {
color: $codePurple;
color: $colorPurple;
}
.token.deleted {
color: $codeRed;
color: $colorRed;
}
.token.doctype {
color: $codeGrey;
color: $colorGrey;
}
.token.entity {
color: $codeRed;
color: $colorRed;
}
.token.function {
color: $codePurple;
color: $colorPurple;
}
.token.hexcode {
@@ -141,49 +128,49 @@ pre[class*="language-"].language-scss > code {
}
.token.id {
color: $codePurple;
color: $colorPurple;
font-weight: bold;
}
.token.important {
color: $codePurple;
color: $colorPurple;
font-weight: bold;
}
.token.inserted {
color: $codeTeal;
color: $colorTeal;
}
.token.keyword {
color: $codePurple;
color: $colorPurple;
}
.token.number {
color: $codeOrange;
color: $colorOrange;
}
.token.operator {
color: $codeBlue;
color: $colorBlue;
}
.token.prolog {
color: $codeGrey;
color: $colorGrey;
}
.token.property {
color: $codeTeal;
color: $colorTeal;
}
.token.pseudo-class {
color: $codeGreen;
color: $colorGreen;
}
.token.pseudo-element {
color: $codeGreen;
color: $colorGreen;
}
.token.punctuation {
color: $codeBlue;
color: $colorBlue;
}
.token.regex {
@@ -191,35 +178,39 @@ pre[class*="language-"].language-scss > code {
}
.token.selector {
color: $codeRed;
color: $colorRed;
}
.token.string {
color: $codeGreen;
color: $colorGreen;
}
.token.symbol {
color: $codePurple;
color: $colorPurple;
}
.token.tag {
color: $codeRed;
color: $colorRed;
}
.token.unit {
color: $codeOrange;
color: $colorOrange;
}
.token.url {
color: $codeRed;
color: $colorRed;
}
.token.variable {
color: $codeRed;
color: $colorRed;
}
.line-highlight {
background: rgba($colorWhite, 0.1) !important;
background: linear-gradient(
to right,
rgba($colorWhite, 0.1),
rgba($colorWhite, 0),
) !important;
left: -1.5rem !important;
right: -1.5rem !important;
margin: 0 !important;

View File

@@ -1,18 +1,141 @@
$navHeight: 4.5rem;
$menuBreakPoint: 750px;
$mobileBreakPoint: 600px;
$menuBreakPoint: 800px;
.app {
display: flex;
flex-direction: column;
min-height: 100%;
&__logo {
font-weight: 700;
font-size: 1.4rem;
&__title {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 2rem;
}
&__name {
font-weight: 600;
color: $colorWhite;
font-size: 1.5rem;
}
&__github {
width: 1.75rem;
height: 1.75rem;
}
::v-deep .algolia-autocomplete {
display: block;
width: 100%;
}
&__search {
display: block;
width: 100%;
background-color: transparent;
border: 1px solid rgba($colorWhite, 0.1);
border-radius: 0.5rem;
font: inherit;
color: $colorWhite;
padding: 0.5rem 0.75rem;
-webkit-appearance: none;
}
&__sidebar {
display: none;
@media (min-width: $menuBreakPoint) {
display: block;
width: 20rem;
flex: 0 0 auto;
position: sticky;
top: 0;
align-self: flex-start;
padding: 2rem;
height: 100vh;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
border-right: 1px solid rgba($colorWhite, 0.1);
}
}
&__content {
flex: 1 1 auto;
min-width: 0;
}
&__top-bar {
display: flex;
flex-direction: column;
padding: 1rem 0;
position: sticky;
z-index: 2;
top: 0;
backdrop-filter: blur(10px);
max-height: 100vh;
@media (min-width: $menuBreakPoint) {
padding: 1.5rem 0;
}
&::after {
content: '';
z-index: -1;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: $colorBlack;
opacity: 0.8;
transform: translate3d(0,0,0);
pointer-events: none;
}
}
&__top-bar-inner {
width: 100%;
display: flex;
align-items: center;
flex: 0 0 auto;
}
&__menu-icon,
&__close-icon {
display: flex;
flex: 0 0 auto;
background: transparent;
border: 0;
color: $colorText;
margin-left: 1rem;
transition: color 0.2s $ease;
&:hover {
color: $colorWhite;
}
@media (min-width: $menuBreakPoint) {
display: none;
}
}
&__inner {
margin: 0 auto;
max-width: 50rem;
padding: 0 1rem;
@media (min-width: $mobileBreakPoint) {
padding: 0 2rem;
}
}
&__link-group {
margin-bottom: 2rem;
margin-bottom: 1rem;
@media (min-width: $mobileBreakPoint) {
margin-bottom: 2rem;
}
}
&__link-group-title {
@@ -20,16 +143,18 @@ $menuBreakPoint: 750px;
letter-spacing: 0.025rem;
font-size: 0.75rem;
text-transform: uppercase;
color: rgba($colorBlack, 0.3);
color: rgba($colorWhite, 0.3);
margin-bottom: 0.5rem;
}
&__link-list {
list-style: none;
}
&__link-list &__link-list {
display: none;
padding-left: 1rem;
margin-top: 0.5rem;
margin-bottom: 1.5rem;
border-left: 2px solid rgba($colorBlack, 0.1);
}
.active + &__link-list {
@@ -37,137 +162,55 @@ $menuBreakPoint: 750px;
}
&__link {
display: block;
padding: 0.1rem 0.5rem;
display: flex;
justify-content: space-between;
padding: 0.25rem 0.5rem;
border-radius: 5px;
font-weight: 500;
color: rgba($colorBlack, 0.6);
margin-bottom: 0.2rem;
font-size: 0.85rem;
margin-left: -0.5rem;
white-space: nowrap;
&:hover {
color: $colorBlack;
color: $colorWhite;
}
&.active {
color: $colorBlack;
background-color: rgba($colorBlack, 0.05);
&.active--exact {
color: $colorWhite;
background-color: rgba($colorWhite, 0.05);
}
&--draft {
color: rgba($colorBlack, 0.2);
color: rgba($colorWhite, 0.2);
}
&--with-children::after {
content: '';
color: rgba($colorBlack, 0.2);
content: '';
color: rgba($colorWhite, 0.2);
}
}
&__header {
align-self: center;
position: fixed;
top: 0;
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: $navHeight;
flex: 0 0 auto;
background-color: rgba($colorBackground, 0.8);
border-bottom: 1px solid rgba($colorBlack, 0.05);
backdrop-filter: blur(10px);
}
&__header-inner {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
max-width: 62rem;
margin: 0 auto;
padding: 0 1rem;
@media (min-width: $menuBreakPoint) {
padding: 0 2rem;
}
}
&__content {
position: relative;
z-index: 1;
flex: 1 1 auto;
display: flex;
width: 100%;
max-width: 62rem;
margin: 0 auto;
padding-left: 1rem;
padding-right: 1rem;
@media (min-width: $menuBreakPoint) {
padding-left: 2rem;
padding-right: 2rem;
}
}
&__menu-icon,
&__close-icon {
border: none;
padding: 0;
background-color: transparent;
margin-left: 1rem;
@media (min-width: $menuBreakPoint) {
display: none;
}
}
&__sidebar-wrapper {
position: fixed;
z-index: 2;
top: $navHeight;
bottom: 0;
left: 0;
right: 0;
background-color: $colorBackground;
padding-left: 1rem;
padding-right: 1rem;
visibility: hidden;
opacity: 0;
&.is-mobile-visible {
visibility: visible;
opacity: 1;
}
@media (min-width: $menuBreakPoint) {
visibility: visible;
opacity: 1;
position: sticky;
flex: 0 0 auto;
align-self: flex-start;
top: 0;
width: 18rem;
height: 100vh;
padding-left: 0;
padding-right: 0;
padding-right: 3rem;
padding-top: $navHeight;
}
}
&__sidebar {
overflow: auto;
height: 100%;
padding-top: 2rem;
padding-left: 0.5rem;
margin-left: -0.5rem;
}
&__main {
padding: 1rem 0;
@media (min-width: $mobileBreakPoint) {
padding: 2rem 0;
}
}
&__page-navigation {
border-top: 1px solid rgba($colorWhite, 0.1);
}
&__mobile-nav {
padding: 1rem;
flex: 1 1 auto;
min-width: 0;
padding-top: $navHeight + 2rem;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
@media (min-width: $mobileBreakPoint) {
padding: 2rem;
}
}
}

View File

@@ -2,9 +2,11 @@
import Prism from 'prismjs'
import 'prismjs/components/prism-jsx.js'
import 'prismjs/components/prism-scss.js'
import PortalVue from 'portal-vue'
import App from '~/layouts/App'
export default function (Vue) {
Vue.use(PortalVue)
Vue.component('Layout', App)
Vue.component('Demo', () => import(/* webpackChunkName: "demo" */ '~/components/Demo'))
Vue.component('LiveDemo', () => import(/* webpackChunkName: "live-demo" */ '~/components/LiveDemo'))

View File

@@ -1,42 +1,60 @@
.doc-page {
&__markdown ::v-deep {
$spacing: 0.75em;
a {
text-decoration: underline;
> div,
> p,
> ul,
> ol,
> blockquote {
margin-top: 2 * $spacing;
margin-bottom: 2 * $spacing;
}
h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
> ul li,
> ol li,
> ul ul,
> ul ol,
> ol ol,
> ol ul {
margin-top: 0.5 * $spacing;
margin-bottom: 0.5 * $spacing;
}
> h1,
> h2,
> h3,
> h4,
> h5,
> h6 {
font-weight: 500;
color: $colorWhite;
margin-top: 3 * $spacing;
margin-bottom: $spacing;
& + * {
margin-top: 0;
}
}
h1 {
font-weight: 400;
}
h1,
h4,
h5,
h6 {
> h1,
> h4,
> h5,
> h6 {
a {
display: none;
}
}
h2,
h3 {
> h2,
> h3 {
position: relative;
a {
position: absolute;
top: 0;
right: 100%;
color: rgba($colorBlack, 0.4);
color: rgba($colorWhite, 0.4);
text-decoration: none;
font-weight: 400;
padding-right: 0.5rem;
@@ -49,16 +67,75 @@
}
}
> * + * {
margin-top: 1.5em;
:first-child {
margin-top: 0;
}
ul {
list-style-type: none;
:last-child {
margin-bottom: 0;
}
> * + * {
margin-top: 0.5rem;
> pre {
border: 1px solid rgba($colorWhite, 0.1);
}
> p code,
> li code,
> table code,
> .remark-container code {
color: $colorPurple;
background-color: rgba($colorPurple, 0.1);
box-decoration-break: clone;
}
> p a,
> li a,
> table a,
> .remark-container a {
text-decoration: underline;
}
#table-of-contents {
display: none;
& + ul {
list-style: none;
border: 1px solid rgba($colorWhite, 0.1);
padding: 1.2rem 1.5rem !important;
border-radius: 0.5rem;
&::before {
display: block;
content: 'On this page';
font-weight: 700;
letter-spacing: 0.025rem;
font-size: 0.75rem;
text-transform: uppercase;
color: rgba($colorWhite, 0.3);
margin-bottom: 0.5rem;
}
li {
padding-left: 0;
&::before {
display: none;
}
ul {
list-style: none;
margin-left: 1rem;
}
}
}
}
p a img[src^="https://img.shields.io"] {
margin-right: 0.5rem;
}
> ul {
list-style: none;
li {
position: relative;
@@ -75,13 +152,9 @@
}
}
ol {
> ol {
counter-reset: item;
> * + * {
margin-top: 0.5rem;
}
li {
position: relative;
padding-left: 2.5rem;
@@ -96,9 +169,9 @@
justify-content: center;
height: 1.5rem;
width: 1.5rem;
background-color: rgba($colorBlack, 0.1);
background-color: rgba($colorWhite, 0.1);
border-radius: 9999px;
color: rgba($colorBlack, 0.4);
color: rgba($colorWhite, 0.4);
font-size: 0.75rem;
font-weight: 700;
content: counter(item);
@@ -107,20 +180,29 @@
}
}
table {
> table {
width: 100%;
border-collapse: collapse;
font-size: 0.85rem;
text-align: left;
th,
td {
text-align: left;
font-size: 0.75rem;
padding: 0.5rem;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
}
th {
font-weight: 600;
background-color: rgba($colorBlack, 0.05);
color: $colorWhite;
font-weight: 500;
border-bottom: 1px solid rgba($colorWhite, 0.2);
&:first-child {
border-top-left-radius: 5px;
@@ -134,7 +216,7 @@
}
td {
border-bottom: 1px solid rgba($colorBlack, 0.05);
border-bottom: 1px solid rgba($colorWhite, 0.1);
}
tr:last-child td {
@@ -142,21 +224,27 @@
}
}
.remark-container {
> .remark-container {
padding: 1rem;
border: 2px solid rgba($colorBlack, 0.1);
border-radius: 0.25rem;
border: 1px solid rgba($colorWhite, 0.1);
border-radius: 0.5rem;
&.warning {
border-color:#ffd8a8;
background-color: #fff4e6;
color: #ca9c63;
border-color: rgba($colorYellow, 0.1);
background-color: rgba($colorYellow, 0.1);
color: $colorYellow;
}
&.info {
border-color:#a5d8ff;
background-color: #e7f5ff;
color: #228be6;
border-color: rgba($colorBlue, 0.1);
background-color: rgba($colorBlue, 0.1);
color: $colorBlue;
}
&.error {
border-color: rgba($colorRed, 0.1);
background-color: rgba($colorRed, 0.1);
color: $colorRed;
}
.remark-container-title {
@@ -165,4 +253,4 @@
}
}
}
}

View File

@@ -1,7 +1,14 @@
$colorWhite: #FFF;
$colorBlack: #000;
$colorRed: #fa5252;
$colorBackground: mix($colorBlack, $colorWhite, 2%);
$colorBlack: #0D0D0D;
$colorText: rgba($colorWhite, 0.75);
$colorGrey: #616161;
$colorPurple: #A975FF;
$colorRed: #FB5151;
$colorOrange: #fd9170;
$colorYellow: #FFCB6B;
$colorBlue: #68CEF8;
$colorTeal: #80cbc4;
$colorGreen: #9DEF8F;
/* Default Equations */
$linear: cubic-bezier(0.250, 0.250, 0.750, 0.750);
@@ -36,4 +43,4 @@ $easeInOutQuint: cubic-bezier(0.860, 0.000, 0.070, 1.000);
$easeInOutSine: cubic-bezier(0.445, 0.050, 0.550, 0.950);
$easeInOutExpo: cubic-bezier(1.000, 0.000, 0.000, 1.000);
$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.150, 0.860);
$easeInOutBack: cubic-bezier(0.680, -0.550, 0.265, 1.550);
$easeInOutBack: cubic-bezier(0.680, -0.550, 0.265, 1.550);