vitepress 1.0.0-draft.1 → 1.0.0-draft.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/app/composables/head.js +2 -2
- package/dist/client/app/data.js +2 -4
- package/dist/client/index.d.ts +8 -0
- package/dist/client/shared.js +22 -0
- package/dist/client/theme-default/Layout.vue +18 -1
- package/dist/client/theme-default/components/VPBackdrop.vue +1 -1
- package/dist/client/theme-default/components/VPBox.vue +59 -0
- package/dist/client/theme-default/components/VPButton.vue +123 -0
- package/dist/client/theme-default/components/VPContent.vue +34 -10
- package/dist/client/theme-default/components/{VPContentDoc.vue → VPDoc.vue} +66 -42
- package/dist/client/theme-default/components/{VPContentDocFooter.vue → VPDocFooter.vue} +3 -2
- package/dist/client/theme-default/components/{VPContentDocOutline.vue → VPDocOutline.vue} +14 -3
- package/dist/client/theme-default/components/VPFooter.vue +53 -0
- package/dist/client/theme-default/components/VPHero.vue +144 -0
- package/dist/client/theme-default/components/VPHome.vue +33 -0
- package/dist/client/theme-default/components/VPHomeFeatures.vue +96 -0
- package/dist/client/theme-default/components/VPHomeHero.vue +17 -0
- package/dist/client/theme-default/components/VPHomeSponsors.vue +93 -0
- package/dist/client/theme-default/components/VPNavBar.vue +2 -1
- package/dist/client/theme-default/components/VPNavBarAppearance.vue +4 -1
- package/dist/client/theme-default/components/VPNavBarExtra.vue +2 -2
- package/dist/client/theme-default/components/VPNavBarSearch.vue +3 -3
- package/dist/client/theme-default/components/VPNavBarTitle.vue +26 -13
- package/dist/client/theme-default/components/VPNavScreenAppearance.vue +4 -1
- package/dist/client/theme-default/components/VPPage.vue +5 -0
- package/dist/client/theme-default/components/VPSidebar.vue +2 -2
- package/dist/client/theme-default/components/VPSponsors.vue +77 -0
- package/dist/client/theme-default/components/VPSponsorsGrid.vue +32 -0
- package/dist/client/theme-default/components/VPSwitchAppearance.vue +3 -3
- package/dist/client/theme-default/components/icons/VPIconHeart.vue +5 -0
- package/dist/client/theme-default/composables/outline.js +12 -20
- package/dist/client/theme-default/composables/sponsor-grid.js +92 -0
- package/dist/client/theme-default/index.js +6 -1
- package/dist/client/theme-default/styles/base.css +3 -0
- package/dist/client/theme-default/styles/components/custom-block.css +90 -0
- package/dist/client/theme-default/styles/{vp-doc.css → components/vp-doc.css} +63 -11
- package/dist/client/theme-default/styles/components/vp-sponsor.css +86 -0
- package/dist/client/theme-default/styles/vars.css +150 -29
- package/dist/client/theme-default/support/utils.js +19 -0
- package/dist/node/cli.js +1 -1
- package/dist/node/index.d.ts +22 -1
- package/dist/node/index.js +1 -1
- package/dist/node/{serve-428d4610.js → serve-b3182d88.js} +50 -8
- package/package.json +2 -1
- package/types/default-theme.d.ts +12 -0
- package/types/shared.d.ts +14 -6
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref } from 'vue'
|
|
3
|
+
import { useSponsorsGrid } from '../composables/sponsor-grid'
|
|
4
|
+
|
|
5
|
+
interface Sponsor {
|
|
6
|
+
name: string
|
|
7
|
+
img: string
|
|
8
|
+
url: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const props = defineProps<{
|
|
12
|
+
size?: 'small' | 'medium' | 'big'
|
|
13
|
+
data: Sponsor[]
|
|
14
|
+
}>()
|
|
15
|
+
|
|
16
|
+
const el = ref(null)
|
|
17
|
+
|
|
18
|
+
useSponsorsGrid({ el, size: props.size })
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<div class="VPSponsorsGrid vp-sponsor-grid" :class="[props.size ?? 'medium']" ref="el">
|
|
23
|
+
<div v-for="sponsor in data" :key="sponsor.tier" class="vp-sponsor-grid-item">
|
|
24
|
+
<a class="vp-sponsor-grid-link" :href="sponsor.url" target="_blank" rel="sponsored noopener">
|
|
25
|
+
<article class="vp-sponsor-grid-box">
|
|
26
|
+
<h4 class="visually-hidden">{{ sponsor.name }}</h4>
|
|
27
|
+
<img class="vp-sponsor-grid-image" :src="sponsor.img" :alt="sponsor.name" />
|
|
28
|
+
</article>
|
|
29
|
+
</a>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</template>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
+
import { APPEARANCE_KEY } from '../../shared'
|
|
2
3
|
import VPSwitch from './VPSwitch.vue'
|
|
3
4
|
import VPIconSun from './icons/VPIconSun.vue'
|
|
4
5
|
import VPIconMoon from './icons/VPIconMoon.vue'
|
|
@@ -6,11 +7,10 @@ import VPIconMoon from './icons/VPIconMoon.vue'
|
|
|
6
7
|
const toggle = typeof localStorage !== 'undefined' ? useAppearance() : () => {}
|
|
7
8
|
|
|
8
9
|
function useAppearance() {
|
|
9
|
-
const storageKey = 'vitepress-theme-appearance'
|
|
10
10
|
const query = window.matchMedia('(prefers-color-scheme: dark)')
|
|
11
11
|
const classList = document.documentElement.classList
|
|
12
12
|
|
|
13
|
-
let userPreference = localStorage.getItem(
|
|
13
|
+
let userPreference = localStorage.getItem(APPEARANCE_KEY) || 'auto'
|
|
14
14
|
|
|
15
15
|
let isDark = userPreference === 'auto'
|
|
16
16
|
? query.matches
|
|
@@ -29,7 +29,7 @@ function useAppearance() {
|
|
|
29
29
|
? query.matches ? 'auto' : 'dark'
|
|
30
30
|
: query.matches ? 'light' : 'auto'
|
|
31
31
|
|
|
32
|
-
localStorage.setItem(
|
|
32
|
+
localStorage.setItem(APPEARANCE_KEY, userPreference)
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
function setClass(dark: boolean): void {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
3
|
+
<path d="M12,22.2c-0.3,0-0.5-0.1-0.7-0.3l-8.8-8.8c-2.5-2.5-2.5-6.7,0-9.2c2.5-2.5,6.7-2.5,9.2,0L12,4.3l0.4-0.4c0,0,0,0,0,0C13.6,2.7,15.2,2,16.9,2c0,0,0,0,0,0c1.7,0,3.4,0.7,4.6,1.9l0,0c1.2,1.2,1.9,2.9,1.9,4.6c0,1.7-0.7,3.4-1.9,4.6l-8.8,8.8C12.5,22.1,12.3,22.2,12,22.2zM7,4C5.9,4,4.7,4.4,3.9,5.3c-1.8,1.8-1.8,4.6,0,6.4l8.1,8.1l8.1-8.1c0.9-0.9,1.3-2,1.3-3.2c0-1.2-0.5-2.3-1.3-3.2l0,0C19.3,4.5,18.2,4,17,4c0,0,0,0,0,0c-1.2,0-2.3,0.5-3.2,1.3c0,0,0,0,0,0l-1.1,1.1c-0.4,0.4-1,0.4-1.4,0l-1.1-1.1C9.4,4.4,8.2,4,7,4z" />
|
|
4
|
+
</svg>
|
|
5
|
+
</template>
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
import { onMounted, onUpdated, onUnmounted } from 'vue';
|
|
1
|
+
import { computed, onMounted, onUpdated, onUnmounted } from 'vue';
|
|
2
|
+
import { useData } from 'vitepress';
|
|
2
3
|
import { useMediaQuery } from '@vueuse/core';
|
|
4
|
+
import { throttleAndDebounce } from '../support/utils';
|
|
3
5
|
// magic number to avoid repeated retrieval
|
|
4
6
|
const PAGE_OFFSET = 56;
|
|
7
|
+
export function useOutline() {
|
|
8
|
+
const { page } = useData();
|
|
9
|
+
const hasOutline = computed(() => {
|
|
10
|
+
return page.value.headers.length > 0;
|
|
11
|
+
});
|
|
12
|
+
return {
|
|
13
|
+
hasOutline
|
|
14
|
+
};
|
|
15
|
+
}
|
|
5
16
|
export function resolveHeaders(headers) {
|
|
6
17
|
return mapHeaders(groupHeaders(headers));
|
|
7
18
|
}
|
|
@@ -109,22 +120,3 @@ function isAnchorActive(index, anchor, nextAnchor) {
|
|
|
109
120
|
}
|
|
110
121
|
return [false, null];
|
|
111
122
|
}
|
|
112
|
-
function throttleAndDebounce(fn, delay) {
|
|
113
|
-
let timeout;
|
|
114
|
-
let called = false;
|
|
115
|
-
return () => {
|
|
116
|
-
if (timeout) {
|
|
117
|
-
clearTimeout(timeout);
|
|
118
|
-
}
|
|
119
|
-
if (!called) {
|
|
120
|
-
fn();
|
|
121
|
-
called = true;
|
|
122
|
-
setTimeout(() => {
|
|
123
|
-
called = false;
|
|
124
|
-
}, delay);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
timeout = setTimeout(fn, delay);
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { onMounted, onUnmounted } from 'vue';
|
|
2
|
+
import { throttleAndDebounce } from '../support/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Defines grid configuration for each sponsor size in touple.
|
|
5
|
+
*
|
|
6
|
+
* [Screen widh, Column size]
|
|
7
|
+
*
|
|
8
|
+
* It sets grid size on matching screen size. For example, `[768, 5]` will set
|
|
9
|
+
* 5 columns when screen size is bigger or equal to 768px.
|
|
10
|
+
*
|
|
11
|
+
* Column will set only when item size is bigger than the column size. For
|
|
12
|
+
* example, even we want 5 columns, if we only have 1 sponsor yet, we would
|
|
13
|
+
* like to show it in 1 column.
|
|
14
|
+
*/
|
|
15
|
+
const GridSettings = {
|
|
16
|
+
small: [
|
|
17
|
+
[920, 6],
|
|
18
|
+
[768, 5],
|
|
19
|
+
[640, 4],
|
|
20
|
+
[480, 3],
|
|
21
|
+
[0, 2]
|
|
22
|
+
],
|
|
23
|
+
medium: [
|
|
24
|
+
[960, 5],
|
|
25
|
+
[832, 4],
|
|
26
|
+
[640, 3],
|
|
27
|
+
[480, 2]
|
|
28
|
+
],
|
|
29
|
+
big: [
|
|
30
|
+
[832, 3],
|
|
31
|
+
[640, 2]
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
export function useSponsorsGrid(options) {
|
|
35
|
+
const onResize = throttleAndDebounce(manage, 100);
|
|
36
|
+
onMounted(() => {
|
|
37
|
+
manage();
|
|
38
|
+
window.addEventListener('resize', onResize);
|
|
39
|
+
});
|
|
40
|
+
onUnmounted(() => {
|
|
41
|
+
window.removeEventListener('resize', onResize);
|
|
42
|
+
});
|
|
43
|
+
function manage() {
|
|
44
|
+
adjustSlots(options.el.value, options.size);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function adjustSlots(el, size) {
|
|
48
|
+
const tsize = el.children.length;
|
|
49
|
+
const asize = el.querySelectorAll('.vp-sponsor-grid-item:not(.empty)').length;
|
|
50
|
+
const grid = setGrid(el, size, asize);
|
|
51
|
+
manageSlots(el, grid, tsize, asize);
|
|
52
|
+
}
|
|
53
|
+
function setGrid(el, size, items) {
|
|
54
|
+
const settings = GridSettings[size];
|
|
55
|
+
const screen = window.innerWidth;
|
|
56
|
+
let grid = 1;
|
|
57
|
+
settings.some(([breakpoint, value]) => {
|
|
58
|
+
if (screen >= breakpoint) {
|
|
59
|
+
grid = items < value ? items : value;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
setGridData(el, grid);
|
|
64
|
+
return grid;
|
|
65
|
+
}
|
|
66
|
+
function setGridData(el, value) {
|
|
67
|
+
el.dataset.vpGrid = String(value);
|
|
68
|
+
}
|
|
69
|
+
function manageSlots(el, grid, tsize, asize) {
|
|
70
|
+
const diff = tsize - asize;
|
|
71
|
+
const rem = asize % grid;
|
|
72
|
+
const drem = rem === 0 ? rem : grid - rem;
|
|
73
|
+
neutralizeSlots(el, drem - diff);
|
|
74
|
+
}
|
|
75
|
+
function neutralizeSlots(el, count) {
|
|
76
|
+
if (count === 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
count > 0 ? addSlots(el, count) : removeSlots(el, count * -1);
|
|
80
|
+
}
|
|
81
|
+
function addSlots(el, count) {
|
|
82
|
+
for (let i = 0; i < count; i++) {
|
|
83
|
+
const slot = document.createElement('div');
|
|
84
|
+
slot.classList.add('vp-sponsor-grid-item', 'empty');
|
|
85
|
+
el.append(slot);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function removeSlots(el, count) {
|
|
89
|
+
for (let i = 0; i < count; i++) {
|
|
90
|
+
el.removeChild(el.lastElementChild);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -2,9 +2,14 @@ import './styles/fonts.css';
|
|
|
2
2
|
import './styles/vars.css';
|
|
3
3
|
import './styles/base.css';
|
|
4
4
|
import './styles/utils.css';
|
|
5
|
-
import './styles/
|
|
5
|
+
import './styles/components/custom-block.css';
|
|
6
|
+
import './styles/components/vp-doc.css';
|
|
7
|
+
import './styles/components/vp-sponsor.css';
|
|
6
8
|
import Layout from './Layout.vue';
|
|
7
9
|
import NotFound from './NotFound.vue';
|
|
10
|
+
export { default as VPHomeHero } from './components/VPHomeHero.vue';
|
|
11
|
+
export { default as VPHomeFeatures } from './components/VPHomeFeatures.vue';
|
|
12
|
+
export { default as VPHomeSponsors } from './components/VPHomeSponsors.vue';
|
|
8
13
|
const theme = {
|
|
9
14
|
Layout,
|
|
10
15
|
NotFound
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
.custom-block {
|
|
2
|
+
border: 1px solid transparent;
|
|
3
|
+
border-radius: 8px;
|
|
4
|
+
padding: 16px 16px 8px;
|
|
5
|
+
line-height: 20px;
|
|
6
|
+
font-size: 14px;
|
|
7
|
+
color: var(--vp-c-text-2);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.custom-block.info {
|
|
11
|
+
border-color: var(--vp-custom-block-info-border);
|
|
12
|
+
color: var(--vp-custom-block-info-text);
|
|
13
|
+
background-color: var(--vp-custom-block-info-bg);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.custom-block.info code {
|
|
17
|
+
background-color: var(--vp-custom-block-info-code-bg);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.custom-block.tip {
|
|
21
|
+
border-color: var(--vp-custom-block-tip-border);
|
|
22
|
+
color: var(--vp-custom-block-tip-text);
|
|
23
|
+
background-color: var(--vp-custom-block-tip-bg);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.custom-block.tip code {
|
|
27
|
+
background-color: var(--vp-custom-block-tip-code-bg);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.custom-block.warning {
|
|
31
|
+
border-color: var(--vp-custom-block-warning-border);
|
|
32
|
+
color: var(--vp-custom-block-warning-text);
|
|
33
|
+
background-color: var(--vp-custom-block-warning-bg);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.custom-block.warning code {
|
|
37
|
+
background-color: var(--vp-custom-block-warning-code-bg);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.custom-block.danger {
|
|
41
|
+
border-color: var(--vp-custom-block-danger-border);
|
|
42
|
+
color: var(--vp-custom-block-danger-text);
|
|
43
|
+
background-color: var(--vp-custom-block-danger-bg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.custom-block.danger code {
|
|
47
|
+
background-color: var(--vp-custom-block-danger-code-bg);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.custom-block.details {
|
|
51
|
+
border-color: var(--vp-custom-block-details-border);
|
|
52
|
+
color: var(--vp-custom-block-details-text);
|
|
53
|
+
background-color: var(--vp-custom-block-details-bg);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.custom-block.details code {
|
|
57
|
+
background-color: var(--vp-custom-block-details-code-bg);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.custom-block-title {
|
|
61
|
+
font-weight: 700;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.custom-block p + p {
|
|
65
|
+
margin: 8px 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.custom-block.details summary {
|
|
69
|
+
margin: 0 0 8px;
|
|
70
|
+
font-weight: 700;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.custom-block.details summary + p {
|
|
74
|
+
margin: 8px 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.custom-block a {
|
|
78
|
+
color: inherit;
|
|
79
|
+
font-weight: 600;
|
|
80
|
+
text-decoration: underline;
|
|
81
|
+
transition: opacity .25s;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.custom-block a:hover {
|
|
85
|
+
opacity: 0.6;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.custom-block code {
|
|
89
|
+
font-size: var(--vp-custom-block-code-font-size);
|
|
90
|
+
}
|
|
@@ -115,14 +115,27 @@
|
|
|
115
115
|
|
|
116
116
|
.vp-doc ul,
|
|
117
117
|
.vp-doc ol {
|
|
118
|
+
padding-left: 1.25rem;
|
|
118
119
|
margin: 16px 0;
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
.vp-doc ul {
|
|
122
|
-
padding-left: 1.25rem;
|
|
123
123
|
list-style: disc;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
.vp-doc ol {
|
|
127
|
+
list-style: decimal;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.vp-doc li + li {
|
|
131
|
+
margin-top: 8px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.vp-doc li > ol,
|
|
135
|
+
.vp-doc li > ul {
|
|
136
|
+
margin: 8px 0 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
126
139
|
/**
|
|
127
140
|
* Table
|
|
128
141
|
* -------------------------------------------------------------------------- */
|
|
@@ -173,6 +186,49 @@
|
|
|
173
186
|
border-top: 1px solid var(--vp-c-divider-light);
|
|
174
187
|
}
|
|
175
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Custom Block
|
|
191
|
+
* -------------------------------------------------------------------------- */
|
|
192
|
+
|
|
193
|
+
.vp-doc .custom-block {
|
|
194
|
+
margin: 16px 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.vp-doc .custom-block p {
|
|
198
|
+
margin: 8px 0;
|
|
199
|
+
line-height: 24px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.vp-doc .custom-block p:first-child {
|
|
203
|
+
margin: 0;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.vp-doc .custom-block a {
|
|
207
|
+
color: inherit;
|
|
208
|
+
font-weight: 600;
|
|
209
|
+
text-decoration: underline;
|
|
210
|
+
transition: opacity .25s;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.vp-doc .custom-block a:hover {
|
|
214
|
+
opacity: 0.6;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.vp-doc .custom-block code {
|
|
218
|
+
font-size: var(--vp-custom-block-code-font-size);
|
|
219
|
+
font-weight: 600;
|
|
220
|
+
color: inherit;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.vp-doc .custom-block div[class*='language-'] {
|
|
224
|
+
margin: 8px 0;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.vp-doc .custom-block div[class*='language-'] code {
|
|
228
|
+
font-weight: 400;
|
|
229
|
+
background-color: var(--vp-code-block-bg);
|
|
230
|
+
}
|
|
231
|
+
|
|
176
232
|
/**
|
|
177
233
|
* Code
|
|
178
234
|
* -------------------------------------------------------------------------- */
|
|
@@ -184,7 +240,7 @@
|
|
|
184
240
|
|
|
185
241
|
.vp-doc :not(pre) > code {
|
|
186
242
|
border-radius: 4px;
|
|
187
|
-
padding:
|
|
243
|
+
padding: 3px 6px;
|
|
188
244
|
color: var(--vp-c-text-code);
|
|
189
245
|
background-color: var(--vp-c-bg-mute);
|
|
190
246
|
transition: color 0.5s, background-color 0.5s;
|
|
@@ -196,19 +252,13 @@
|
|
|
196
252
|
font-size: 0.9em;
|
|
197
253
|
}
|
|
198
254
|
|
|
199
|
-
@media (min-width: 768px) {
|
|
200
|
-
.vp-doc :not(pre) > code {
|
|
201
|
-
white-space: nowrap;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
255
|
.vp-doc a > code {
|
|
206
256
|
color: var(--vp-c-brand-dark);
|
|
207
257
|
}
|
|
208
258
|
|
|
209
259
|
.vp-doc div[class*='language-'] {
|
|
210
260
|
position: relative;
|
|
211
|
-
margin:
|
|
261
|
+
margin: 16px -24px;
|
|
212
262
|
background-color: var(--vp-code-block-bg);
|
|
213
263
|
overflow-x: auto;
|
|
214
264
|
transition: background-color 0.5s;
|
|
@@ -217,7 +267,7 @@
|
|
|
217
267
|
@media (min-width: 640px) {
|
|
218
268
|
.vp-doc div[class*='language-'] {
|
|
219
269
|
border-radius: 8px;
|
|
220
|
-
margin:
|
|
270
|
+
margin: 16px 0;
|
|
221
271
|
}
|
|
222
272
|
}
|
|
223
273
|
|
|
@@ -230,7 +280,7 @@
|
|
|
230
280
|
.vp-doc div[class*='language-'] + div[class*='language-'],
|
|
231
281
|
.vp-doc div[class$='-api'] + div[class*='language-'],
|
|
232
282
|
.vp-doc div[class*='language-'] + div[class$='-api'] > div[class*='language-'] {
|
|
233
|
-
margin-top: -
|
|
283
|
+
margin-top: -8px;
|
|
234
284
|
}
|
|
235
285
|
|
|
236
286
|
.vp-doc [class*='language-'] pre,
|
|
@@ -331,6 +381,8 @@
|
|
|
331
381
|
.vp-doc [class~='language-ts']:before { content: 'ts'; }
|
|
332
382
|
.vp-doc [class~='language-tsx']:before { content: 'tsx'; }
|
|
333
383
|
.vp-doc [class~='language-json']:before { content: 'json'; }
|
|
384
|
+
.vp-doc [class~='language-yaml']:before { content: 'yaml'; }
|
|
385
|
+
.vp-doc [class~='language-yml']:before { content: 'yaml'; }
|
|
334
386
|
.vp-doc [class~='language-sh']:before { content: 'sh'; }
|
|
335
387
|
.vp-doc [class~='language-bash']:before { content: 'sh'; }
|
|
336
388
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
.vp-sponsor-grid {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-wrap: wrap;
|
|
4
|
+
gap: 4px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.vp-sponsor-grid.small .vp-sponsor-grid-link { height: 96px; }
|
|
8
|
+
.vp-sponsor-grid.small .vp-sponsor-grid-image { max-width: 96px; max-height: 24px }
|
|
9
|
+
|
|
10
|
+
.vp-sponsor-grid.medium .vp-sponsor-grid-link { height: 112px; }
|
|
11
|
+
.vp-sponsor-grid.medium .vp-sponsor-grid-image { max-width: 120px; max-height: 36px }
|
|
12
|
+
|
|
13
|
+
.vp-sponsor-grid.big .vp-sponsor-grid-link { height: 184px; }
|
|
14
|
+
.vp-sponsor-grid.big .vp-sponsor-grid-image { max-width: 192px; max-height: 56px }
|
|
15
|
+
|
|
16
|
+
.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item {
|
|
17
|
+
width: calc((100% - 4px) / 2);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item {
|
|
21
|
+
width: calc((100% - 4px * 2) / 3);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item {
|
|
25
|
+
width: calc((100% - 4px * 3) / 4);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item {
|
|
29
|
+
width: calc((100% - 4px * 4) / 5);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item {
|
|
33
|
+
width: calc((100% - 4px * 5) / 6);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.vp-sponsor-grid-item {
|
|
37
|
+
flex-shrink: 0;
|
|
38
|
+
width: 100%;
|
|
39
|
+
background-color: var(--vp-c-white-soft);
|
|
40
|
+
transition: background-color 0.25s;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.vp-sponsor-grid-item:hover {
|
|
44
|
+
background-color: var(--vp-c-white-mute);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.vp-sponsor-grid-item:hover .vp-sponsor-grid-image {
|
|
48
|
+
filter: grayscale(0) invert(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.vp-sponsor-grid-item.empty:hover {
|
|
52
|
+
background-color: var(--vp-c-white-soft);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.dark .vp-sponsor-grid-item {
|
|
56
|
+
background-color: var(--vp-c-black-mute);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.dark .vp-sponsor-grid-item:hover {
|
|
60
|
+
background-color: var(--vp-c-white-soft);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.dark .vp-sponsor-grid-item.empty:hover {
|
|
64
|
+
background-color: var(--vp-c-black-mute);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.vp-sponsor-grid-link {
|
|
68
|
+
display: flex;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.vp-sponsor-grid-box {
|
|
72
|
+
display: flex;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
align-items: center;
|
|
75
|
+
width: 100%;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.vp-sponsor-grid-image {
|
|
79
|
+
max-width: 100%;
|
|
80
|
+
filter: grayscale(1);
|
|
81
|
+
transition: filter 0.25s;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dark .vp-sponsor-grid-image {
|
|
85
|
+
filter: grayscale(1) invert(1);
|
|
86
|
+
}
|