|
@@ -1,38 +1,38 @@
|
|
|
<script lang="ts" setup>
|
|
|
-import { useWindowScroll } from '@vueuse/core'
|
|
|
-import { ref, watchPostEffect } from 'vue'
|
|
|
-import { useData } from 'vitepress/dist/client/theme-default/composables/data'
|
|
|
-import { useSidebar } from 'vitepress/dist/client/theme-default/composables/sidebar'
|
|
|
-import VPNavBarAppearance from 'vitepress/dist/client/theme-default/components/VPNavBarAppearance.vue'
|
|
|
-import VPNavBarExtra from 'vitepress/dist/client/theme-default/components/VPNavBarExtra.vue'
|
|
|
-import VPNavBarHamburger from 'vitepress/dist/client/theme-default/components/VPNavBarHamburger.vue'
|
|
|
-import VPNavBarMenu from 'vitepress/dist/client/theme-default/components/VPNavBarMenu.vue'
|
|
|
-import VPNavBarSearch from 'vitepress/dist/client/theme-default/components/VPNavBarSearch.vue'
|
|
|
-import VPNavBarSocialLinks from 'vitepress/dist/client/theme-default/components/VPNavBarSocialLinks.vue'
|
|
|
-import VPNavBarTitle from 'vitepress/dist/client/theme-default/components/VPNavBarTitle.vue'
|
|
|
-import VPNavBarTranslations from 'vitepress/dist/client/theme-default/components/VPNavBarTranslations.vue'
|
|
|
+import { useWindowScroll } from "@vueuse/core";
|
|
|
+import { ref, watchPostEffect } from "vue";
|
|
|
+import { useData } from "vitepress";
|
|
|
+import { useSidebar } from "vitepress/theme";
|
|
|
+import VPNavBarAppearance from "vitepress/dist/client/theme-default/components/VPNavBarAppearance.vue";
|
|
|
+import VPNavBarExtra from "vitepress/dist/client/theme-default/components/VPNavBarExtra.vue";
|
|
|
+import VPNavBarHamburger from "vitepress/dist/client/theme-default/components/VPNavBarHamburger.vue";
|
|
|
+import VPNavBarMenu from "vitepress/dist/client/theme-default/components/VPNavBarMenu.vue";
|
|
|
+import VPNavBarSearch from "vitepress/dist/client/theme-default/components/VPNavBarSearch.vue";
|
|
|
+import VPNavBarSocialLinks from "vitepress/dist/client/theme-default/components/VPNavBarSocialLinks.vue";
|
|
|
+import VPNavBarTitle from "vitepress/dist/client/theme-default/components/VPNavBarTitle.vue";
|
|
|
+import VPNavBarTranslations from "vitepress/dist/client/theme-default/components/VPNavBarTranslations.vue";
|
|
|
|
|
|
defineProps<{
|
|
|
- isScreenOpen: boolean
|
|
|
-}>()
|
|
|
+ isScreenOpen: boolean;
|
|
|
+}>();
|
|
|
|
|
|
defineEmits<{
|
|
|
- (e: 'toggle-screen'): void
|
|
|
-}>()
|
|
|
+ (e: "toggle-screen"): void;
|
|
|
+}>();
|
|
|
|
|
|
-const { y } = useWindowScroll()
|
|
|
-const { hasSidebar } = useSidebar()
|
|
|
-const { frontmatter } = useData()
|
|
|
+const { y } = useWindowScroll();
|
|
|
+const { hasSidebar } = useSidebar();
|
|
|
+const { frontmatter } = useData();
|
|
|
|
|
|
-const classes = ref<Record<string, boolean>>({})
|
|
|
+const classes = ref<Record<string, boolean>>({});
|
|
|
|
|
|
watchPostEffect(() => {
|
|
|
classes.value = {
|
|
|
- 'has-sidebar': hasSidebar.value,
|
|
|
- 'home': frontmatter.value.layout === 'home',
|
|
|
- 'top': y.value === 0,
|
|
|
- }
|
|
|
-})
|
|
|
+ "has-sidebar": hasSidebar.value,
|
|
|
+ home: frontmatter.value.layout === "home",
|
|
|
+ top: y.value === 0,
|
|
|
+ };
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -41,7 +41,9 @@ watchPostEffect(() => {
|
|
|
<div class="container">
|
|
|
<div class="title">
|
|
|
<VPNavBarTitle>
|
|
|
- <template #nav-bar-title-before><slot name="nav-bar-title-before" /></template>
|
|
|
+ <template #nav-bar-title-before
|
|
|
+ ><slot name="nav-bar-title-before"
|
|
|
+ /></template>
|
|
|
<template #nav-bar-title-after><slot name="nav-bar-title-after" /></template>
|
|
|
</VPNavBarTitle>
|
|
|
</div>
|
|
@@ -56,7 +58,11 @@ watchPostEffect(() => {
|
|
|
<VPNavBarSocialLinks class="social-links" />
|
|
|
<VPNavBarExtra class="extra" />
|
|
|
<slot name="nav-bar-content-after" />
|
|
|
- <VPNavBarHamburger class="hamburger" :active="isScreenOpen" @click="$emit('toggle-screen')" />
|
|
|
+ <VPNavBarHamburger
|
|
|
+ class="hamburger"
|
|
|
+ :active="isScreenOpen"
|
|
|
+ @click="$emit('toggle-screen')"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -153,7 +159,9 @@ watchPostEffect(() => {
|
|
|
@media (min-width: 1440px) {
|
|
|
.VPNavBar.has-sidebar .title {
|
|
|
padding-left: max(32px, calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));
|
|
|
- width: calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px);
|
|
|
+ width: calc(
|
|
|
+ (100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -173,7 +181,9 @@ watchPostEffect(() => {
|
|
|
@media (min-width: 1440px) {
|
|
|
.VPNavBar.has-sidebar .content {
|
|
|
padding-right: calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);
|
|
|
- padding-left: calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width));
|
|
|
+ padding-left: calc(
|
|
|
+ (100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -241,7 +251,9 @@ watchPostEffect(() => {
|
|
|
|
|
|
@media (min-width: 1440px) {
|
|
|
.VPNavBar.has-sidebar .divider {
|
|
|
- padding-left: calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width));
|
|
|
+ padding-left: calc(
|
|
|
+ (100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -255,7 +267,7 @@ watchPostEffect(() => {
|
|
|
background-color: var(--vp-c-gutter);
|
|
|
}
|
|
|
|
|
|
-@media (min-width: 960px) {
|
|
|
+@media (min-width: 960px) {
|
|
|
.VPNavBar:not(.home.top) .divider-line {
|
|
|
background-color: var(--vp-c-gutter);
|
|
|
}
|
|
@@ -264,4 +276,4 @@ watchPostEffect(() => {
|
|
|
background-color: var(--vp-c-gutter);
|
|
|
}
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|