@yl_lowcode/docs-theme 0.0.13 → 0.0.15
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/package.json +4 -2
- package/plugins/shiki-vue.js +40 -0
- package/{index.ts → react/index.ts} +1 -1
- package/{layout.vue → react/layout.vue} +5 -5
- package/vue/demo.vue +190 -0
- package/vue/index.ts +18 -0
- package/vue/layout.vue +164 -0
- /package/plugins/{shiki-raw.js → shiki-react.js} +0 -0
- /package/{demo.vue → react/demo.vue} +0 -0
- /package/{playground.vue → react/playground.vue} +0 -0
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yl_lowcode/docs-theme",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15",
|
|
4
4
|
"description": "共享 VitePress 文档主题(React Demo 支持)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./index.ts",
|
|
9
|
-
"./
|
|
9
|
+
"./vue": "./vue/index.ts",
|
|
10
|
+
"./plugins/shiki-raw": "./plugins/shiki-react.js",
|
|
11
|
+
"./plugins/shiki-vue": "./plugins/shiki-vue.js"
|
|
10
12
|
},
|
|
11
13
|
"peerDependencies": {
|
|
12
14
|
"vue": "^3.4.0",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import { createMarkdownRenderer } from "vitepress";
|
|
3
|
+
|
|
4
|
+
function getMd(srcDir, options) {
|
|
5
|
+
if (!mdPromise) {
|
|
6
|
+
mdPromise = createMarkdownRenderer(srcDir, options);
|
|
7
|
+
}
|
|
8
|
+
return mdPromise;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 为 .vue?raw 添加 Shiki 高亮 HTML,同时保留原始源码字符串。
|
|
13
|
+
* 返回对象:{ raw: string; html: string; srcPath: string }
|
|
14
|
+
*/
|
|
15
|
+
export function vueRawPlugin(options) {
|
|
16
|
+
let srcDir = process.cwd();
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
name: "vite-plugin-vue-raw",
|
|
20
|
+
enforce: "pre",
|
|
21
|
+
configResolved(config) {
|
|
22
|
+
srcDir = config.root;
|
|
23
|
+
},
|
|
24
|
+
async load(id) {
|
|
25
|
+
if (!id.endsWith("?raw")) return null;
|
|
26
|
+
|
|
27
|
+
const filePath = id.slice(0, -4);
|
|
28
|
+
if (!filePath.endsWith(".vue")) return null;
|
|
29
|
+
|
|
30
|
+
const raw = readFileSync(filePath, "utf-8");
|
|
31
|
+
const md = await getMd(srcDir, options);
|
|
32
|
+
const html = await md.renderAsync("```vue\n" + raw + "\n```");
|
|
33
|
+
|
|
34
|
+
const demosIdx = filePath.indexOf("/demos/");
|
|
35
|
+
const srcPath = demosIdx >= 0 ? filePath.slice(demosIdx + 7, -4) : "";
|
|
36
|
+
|
|
37
|
+
return `export default ${JSON.stringify({ raw, html, srcPath })}`;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import { useData } from "vitepress";
|
|
4
4
|
import DefaultTheme from "vitepress/theme";
|
|
5
5
|
import Playground from "./playground.vue";
|
|
6
|
-
import setTheme from "
|
|
6
|
+
import setTheme from "../color";
|
|
7
7
|
import { watch, nextTick, provide, inject, onMounted } from "vue";
|
|
8
|
-
import type { ThemeHooks } from "
|
|
8
|
+
import type { ThemeHooks } from "../index";
|
|
9
9
|
// @ts-ignore
|
|
10
|
-
import NiceDropdown from "
|
|
10
|
+
import NiceDropdown from "../drop-down.vue";
|
|
11
11
|
|
|
12
12
|
const themeHooks = inject<ThemeHooks>("theme-hooks", {});
|
|
13
13
|
|
|
@@ -47,10 +47,10 @@ const colorConfig = [
|
|
|
47
47
|
...item,
|
|
48
48
|
onClick: async () => {
|
|
49
49
|
localStorage?.setItem("color", item.key);
|
|
50
|
-
setTheme(isDark.value ? "dark" : "light", item.key);
|
|
50
|
+
const rgbColor = setTheme(isDark.value ? "dark" : "light", item.key);
|
|
51
51
|
themeHooks.onThemeChange?.({
|
|
52
52
|
theme: isDark.value ? "dark" : "light",
|
|
53
|
-
color:
|
|
53
|
+
color: rgbColor,
|
|
54
54
|
});
|
|
55
55
|
},
|
|
56
56
|
};
|
package/vue/demo.vue
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="aui-demo">
|
|
3
|
+
<!-- 预览区:直接渲染 Vue 组件 -->
|
|
4
|
+
<div class="aui-demo-preview">
|
|
5
|
+
<component :is="component" />
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<!-- 底部操作栏 -->
|
|
9
|
+
<div class="aui-demo-footer">
|
|
10
|
+
<span class="aui-demo-desc">{{ title ?? '' }}</span>
|
|
11
|
+
<div class="aui-demo-actions">
|
|
12
|
+
<button
|
|
13
|
+
class="aui-action-btn"
|
|
14
|
+
:class="{ active: expanded }"
|
|
15
|
+
:title="expanded ? '收起代码' : '展开代码'"
|
|
16
|
+
@click="expanded = !expanded"
|
|
17
|
+
>
|
|
18
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
19
|
+
<polyline v-if="!expanded" points="6 9 12 15 18 9" />
|
|
20
|
+
<polyline v-else points="18 15 12 9 6 15" />
|
|
21
|
+
</svg>
|
|
22
|
+
</button>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<!-- 代码区(可展开) -->
|
|
27
|
+
<div v-show="expanded" class="aui-demo-code">
|
|
28
|
+
<span class="aui-lang-label">vue</span>
|
|
29
|
+
<button class="aui-copy-btn" :class="{ copied }" @click="copyCode" title="复制代码">
|
|
30
|
+
<span v-if="copied" class="aui-copy-label">已复制</span>
|
|
31
|
+
<svg v-if="copied" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
32
|
+
<path d="M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2" />
|
|
33
|
+
<rect x="9" y="3" width="6" height="4" rx="1" />
|
|
34
|
+
<polyline points="9 12 11 14 15 10" />
|
|
35
|
+
</svg>
|
|
36
|
+
<svg v-else viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
37
|
+
<path d="M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2" />
|
|
38
|
+
<rect x="9" y="3" width="6" height="4" rx="1" />
|
|
39
|
+
</svg>
|
|
40
|
+
</button>
|
|
41
|
+
<div v-html="code.html" />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<script setup lang="ts">
|
|
47
|
+
// @ts-nocheck
|
|
48
|
+
import { ref } from 'vue'
|
|
49
|
+
import { withBase } from 'vitepress'
|
|
50
|
+
|
|
51
|
+
const props = defineProps<{
|
|
52
|
+
component: any
|
|
53
|
+
code: { raw: string; html: string; srcPath: string }
|
|
54
|
+
title?: string
|
|
55
|
+
}>()
|
|
56
|
+
|
|
57
|
+
const expanded = ref(false)
|
|
58
|
+
const copied = ref(false)
|
|
59
|
+
let copyTimer: ReturnType<typeof setTimeout> | null = null
|
|
60
|
+
|
|
61
|
+
function openLive() {
|
|
62
|
+
const url = `/playground.html?demo=${props.code.srcPath}`;
|
|
63
|
+
window.open(withBase(url), "_blank");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function copyCode() {
|
|
67
|
+
await navigator.clipboard.writeText(props.code.raw)
|
|
68
|
+
copied.value = true
|
|
69
|
+
if (copyTimer) clearTimeout(copyTimer)
|
|
70
|
+
copyTimer = setTimeout(() => { copied.value = false }, 2000)
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<style scoped>
|
|
75
|
+
.aui-demo {
|
|
76
|
+
border: 1px solid var(--vp-c-divider);
|
|
77
|
+
border-radius: 10px;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
margin: 20px 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.aui-demo-preview {
|
|
83
|
+
padding: 32px 24px;
|
|
84
|
+
min-height: 80px;
|
|
85
|
+
background: var(--vp-c-bg);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.aui-demo-footer {
|
|
89
|
+
display: flex;
|
|
90
|
+
align-items: center;
|
|
91
|
+
justify-content: space-between;
|
|
92
|
+
gap: 12px;
|
|
93
|
+
padding: 6px 8px 6px 16px;
|
|
94
|
+
min-height: 40px;
|
|
95
|
+
border-top: 1px solid var(--vp-c-divider);
|
|
96
|
+
background: var(--vp-c-bg-soft);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.aui-demo-desc {
|
|
100
|
+
flex: 1;
|
|
101
|
+
font-size: 13px;
|
|
102
|
+
color: var(--vp-c-text-2);
|
|
103
|
+
line-height: 1.6;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.aui-demo-actions {
|
|
107
|
+
flex-shrink: 0;
|
|
108
|
+
display: flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
gap: 4px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.aui-action-btn {
|
|
114
|
+
display: flex;
|
|
115
|
+
align-items: center;
|
|
116
|
+
justify-content: center;
|
|
117
|
+
width: 28px;
|
|
118
|
+
height: 28px;
|
|
119
|
+
border: none;
|
|
120
|
+
border-radius: 6px;
|
|
121
|
+
background: transparent;
|
|
122
|
+
color: var(--vp-c-text-3);
|
|
123
|
+
cursor: pointer;
|
|
124
|
+
transition: background 0.15s, color 0.15s;
|
|
125
|
+
}
|
|
126
|
+
.aui-action-btn:hover {
|
|
127
|
+
background: var(--vp-c-bg-mute);
|
|
128
|
+
color: var(--vp-c-text-1);
|
|
129
|
+
}
|
|
130
|
+
.aui-action-btn.active {
|
|
131
|
+
background: var(--vp-c-brand-soft);
|
|
132
|
+
color: var(--vp-c-brand-1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.aui-demo-code {
|
|
136
|
+
position: relative;
|
|
137
|
+
border-top: 1px solid var(--vp-c-divider);
|
|
138
|
+
}
|
|
139
|
+
.aui-demo-code :deep(pre) {
|
|
140
|
+
margin: 0;
|
|
141
|
+
border-radius: 0;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.aui-lang-label {
|
|
145
|
+
position: absolute;
|
|
146
|
+
top: 2px;
|
|
147
|
+
right: 12px;
|
|
148
|
+
z-index: 2;
|
|
149
|
+
font-size: 12px;
|
|
150
|
+
font-weight: 500;
|
|
151
|
+
user-select: none;
|
|
152
|
+
color: var(--vp-code-lang-color);
|
|
153
|
+
transition: color 0.4s, opacity 0.4s;
|
|
154
|
+
}
|
|
155
|
+
.aui-demo-code:hover .aui-lang-label {
|
|
156
|
+
opacity: 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.aui-copy-btn {
|
|
160
|
+
position: absolute;
|
|
161
|
+
top: 8px;
|
|
162
|
+
right: 8px;
|
|
163
|
+
z-index: 10;
|
|
164
|
+
display: flex;
|
|
165
|
+
align-items: center;
|
|
166
|
+
gap: 6px;
|
|
167
|
+
padding: 6px 10px;
|
|
168
|
+
border: 1px solid var(--vp-c-divider);
|
|
169
|
+
border-radius: 8px;
|
|
170
|
+
background: var(--vp-c-bg);
|
|
171
|
+
color: var(--vp-c-text-2);
|
|
172
|
+
font-size: 13px;
|
|
173
|
+
cursor: pointer;
|
|
174
|
+
transition: color 0.15s, border-color 0.15s, background 0.15s, box-shadow 0.15s;
|
|
175
|
+
opacity: 0;
|
|
176
|
+
}
|
|
177
|
+
.aui-demo-code:hover .aui-copy-btn {
|
|
178
|
+
opacity: 1;
|
|
179
|
+
}
|
|
180
|
+
.aui-copy-btn:hover {
|
|
181
|
+
color: var(--vp-c-text-1);
|
|
182
|
+
border-color: var(--vp-c-brand-1);
|
|
183
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
184
|
+
}
|
|
185
|
+
.aui-copy-btn.copied {
|
|
186
|
+
opacity: 1;
|
|
187
|
+
color: var(--vp-c-brand-1);
|
|
188
|
+
border-color: var(--vp-c-brand-1);
|
|
189
|
+
}
|
|
190
|
+
</style>
|
package/vue/index.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import DefaultTheme from "vitepress/theme";
|
|
3
|
+
import Layout from "./layout.vue";
|
|
4
|
+
import Demo from "./demo.vue";
|
|
5
|
+
import "../theme.css";
|
|
6
|
+
|
|
7
|
+
export interface ThemeHooks {
|
|
8
|
+
/** 主题或颜色变更时触发(dark/light 切换、颜色切换都会调用) */
|
|
9
|
+
onThemeChange?: (info: { theme: "dark" | "light"; color: string }) => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
extends: DefaultTheme,
|
|
14
|
+
Layout,
|
|
15
|
+
enhanceApp({ app }: { app: import("vue").App }) {
|
|
16
|
+
app.component("Demo", Demo);
|
|
17
|
+
},
|
|
18
|
+
};
|
package/vue/layout.vue
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import { useData } from "vitepress";
|
|
4
|
+
import DefaultTheme from "vitepress/theme";
|
|
5
|
+
import setTheme from "../color";
|
|
6
|
+
import { watch, nextTick, provide, inject, onMounted } from "vue";
|
|
7
|
+
import type { ThemeHooks } from "../index";
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
import NiceDropdown from "../drop-down.vue";
|
|
10
|
+
|
|
11
|
+
const themeHooks = inject<ThemeHooks>("theme-hooks", {});
|
|
12
|
+
|
|
13
|
+
const colorConfig = [
|
|
14
|
+
{
|
|
15
|
+
key: "blue",
|
|
16
|
+
label: "山药蓝",
|
|
17
|
+
color: "#197AFA",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
key: "green",
|
|
21
|
+
label: "生机绿",
|
|
22
|
+
color: "#29CC97",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
key: "orange",
|
|
26
|
+
label: "活力橙",
|
|
27
|
+
color: "#F75229",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
key: "purple",
|
|
31
|
+
label: "科技紫",
|
|
32
|
+
color: "#6463D5",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
key: "pink",
|
|
36
|
+
label: "魅力粉",
|
|
37
|
+
color: "#d84293",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "red",
|
|
41
|
+
label: "喜庆红",
|
|
42
|
+
color: "#eb4242",
|
|
43
|
+
},
|
|
44
|
+
].map((item: any) => {
|
|
45
|
+
return {
|
|
46
|
+
...item,
|
|
47
|
+
onClick: async () => {
|
|
48
|
+
localStorage?.setItem("color", item.key);
|
|
49
|
+
const rgbColor = setTheme(isDark.value ? "dark" : "light", item.key);
|
|
50
|
+
themeHooks.onThemeChange?.({
|
|
51
|
+
theme: isDark.value ? "dark" : "light",
|
|
52
|
+
color: rgbColor,
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const { frontmatter, isDark } = useData();
|
|
59
|
+
|
|
60
|
+
const enableTransitions = () =>
|
|
61
|
+
"startViewTransition" in document &&
|
|
62
|
+
window.matchMedia("(prefers-reduced-motion: no-preference)").matches;
|
|
63
|
+
|
|
64
|
+
provide("toggle-appearance", async ({ clientX: x, clientY: y }: MouseEvent) => {
|
|
65
|
+
if (!enableTransitions()) {
|
|
66
|
+
isDark.value = !isDark.value;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const clipPath = [
|
|
71
|
+
`circle(0px at ${x}px ${y}px)`,
|
|
72
|
+
`circle(${Math.hypot(
|
|
73
|
+
Math.max(x, innerWidth - x),
|
|
74
|
+
Math.max(y, innerHeight - y)
|
|
75
|
+
)}px at ${x}px ${y}px)`,
|
|
76
|
+
];
|
|
77
|
+
// @ts-ignore
|
|
78
|
+
await document.startViewTransition(async () => {
|
|
79
|
+
isDark.value = !isDark.value;
|
|
80
|
+
await nextTick();
|
|
81
|
+
}).ready;
|
|
82
|
+
|
|
83
|
+
document.documentElement.animate(
|
|
84
|
+
{ clipPath: isDark.value ? clipPath.reverse() : clipPath },
|
|
85
|
+
{
|
|
86
|
+
duration: 300,
|
|
87
|
+
easing: "ease-in",
|
|
88
|
+
fill: "forwards",
|
|
89
|
+
pseudoElement: `::view-transition-${isDark.value ? "old" : "new"}(root)`,
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
onMounted(() => {
|
|
95
|
+
watch(isDark, async (dark) => {
|
|
96
|
+
const color = localStorage?.getItem("color") as any;
|
|
97
|
+
const rgbColor = setTheme(dark ? "dark" : "light", color);
|
|
98
|
+
themeHooks.onThemeChange?.({
|
|
99
|
+
theme: dark ? "dark" : "light",
|
|
100
|
+
color: rgbColor || "blue",
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
setTimeout(async () => {
|
|
104
|
+
const color = localStorage?.getItem("color") as any;
|
|
105
|
+
const rgbColor = setTheme(isDark.value ? "dark" : "light", color);
|
|
106
|
+
themeHooks.onThemeChange?.({
|
|
107
|
+
theme: isDark.value ? "dark" : "light",
|
|
108
|
+
color: rgbColor || "blue",
|
|
109
|
+
});
|
|
110
|
+
}, 800);
|
|
111
|
+
});
|
|
112
|
+
</script>
|
|
113
|
+
|
|
114
|
+
<template>
|
|
115
|
+
<DefaultTheme.Layout>
|
|
116
|
+
<template #nav-bar-content-after>
|
|
117
|
+
<slot name="nav-bar-content-after" />
|
|
118
|
+
<NiceDropdown :options="colorConfig" width="90px">
|
|
119
|
+
<template #trigger>
|
|
120
|
+
<svg
|
|
121
|
+
viewBox="0 0 24 24"
|
|
122
|
+
width="16px"
|
|
123
|
+
height="16px"
|
|
124
|
+
fill="var(--soui-brand-6)"
|
|
125
|
+
style="margin-left: 20px"
|
|
126
|
+
>
|
|
127
|
+
<path
|
|
128
|
+
d="M8.36107 2.0003C8.55307 1.99563 8.74236 2.04634 8.9063 2.14639L13.4505 4.91945L18.472 3.15178C18.9929 2.96839 19.5639 3.24204 19.7473 3.76299C19.811 3.94415 19.8213 4.13984 19.7768 4.32667L18.5437 9.50539L21.7766 13.7348C22.112 14.1736 22.0282 14.8012 21.5894 15.1366C21.4368 15.2532 21.2538 15.3235 21.0624 15.3389L15.7561 15.7664L12.7327 20.1481C12.419 20.6026 11.7962 20.7169 11.3417 20.4032C11.1836 20.2941 11.0603 20.1418 10.9864 19.9645L9.20794 15.694L3.89851 21.0041C3.50799 21.3946 2.87482 21.3946 2.4843 21.0041C2.09378 20.6135 2.09378 19.9804 2.4843 19.5898L7.46294 14.61L3.83862 13.5286C3.30937 13.3708 3.00828 12.8138 3.16613 12.2845C3.22102 12.1005 3.32774 11.9361 3.47355 11.8111L7.51513 8.34624L7.38569 3.02432C7.37226 2.47219 7.80895 2.01372 8.36107 2.0003ZM9.52452 5.45242C9.47449 5.53441 9.44913 5.62908 9.45148 5.7251L9.53762 9.24671L6.86306 11.5395C6.65341 11.7192 6.62914 12.0348 6.80887 12.2445C6.87138 12.3174 6.95357 12.3708 7.04561 12.3982L10.4215 13.4048L11.775 16.6557C11.8811 16.9107 12.1738 17.0313 12.4288 16.9252C12.5174 16.8883 12.5935 16.8266 12.648 16.7476L14.6492 13.8492L18.1593 13.5657C18.4346 13.5435 18.6397 13.3023 18.6174 13.0271C18.6097 12.9314 18.5746 12.84 18.5163 12.7637L16.3782 9.96569L17.1935 6.5383C17.2574 6.26966 17.0914 6.00007 16.8228 5.93616C16.7294 5.91394 16.6315 5.91909 16.541 5.951L13.2191 7.12122L10.2118 5.28607C9.97606 5.14222 9.66836 5.21671 9.52452 5.45242Z"
|
|
129
|
+
/>
|
|
130
|
+
</svg>
|
|
131
|
+
</template>
|
|
132
|
+
</NiceDropdown>
|
|
133
|
+
</template>
|
|
134
|
+
<template #sidebar-nav-before>
|
|
135
|
+
<slot name="sidebar-nav-before" />
|
|
136
|
+
</template>
|
|
137
|
+
</DefaultTheme.Layout>
|
|
138
|
+
</template>
|
|
139
|
+
|
|
140
|
+
<style>
|
|
141
|
+
::view-transition-old(root),
|
|
142
|
+
::view-transition-new(root) {
|
|
143
|
+
animation: none;
|
|
144
|
+
mix-blend-mode: normal;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
::view-transition-old(root),
|
|
148
|
+
.dark::view-transition-new(root) {
|
|
149
|
+
z-index: 1;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
::view-transition-new(root),
|
|
153
|
+
.dark::view-transition-old(root) {
|
|
154
|
+
z-index: 9999;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.VPSwitchAppearance {
|
|
158
|
+
width: 22px !important;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.VPSwitchAppearance .check {
|
|
162
|
+
transform: none !important;
|
|
163
|
+
}
|
|
164
|
+
</style>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|